搭配使用 OpenAI 程式庫與 Vertex AI

本文說明如何使用與 OpenAI 相容的 Chat Completions API,與 Vertex AI 模型互動。本文涵蓋下列主題:

Chat Completions API 是與 OpenAI 相容的端點,可讓您使用 OpenAI Python 和 REST 程式庫,與 Vertex AI 上的 Gemini 互動。如果您已使用 OpenAI 程式庫,這個 API 可讓您在 OpenAI 模型和 Vertex AI 代管模型之間切換,比較輸出內容、費用和可擴充性,同時盡量減少現有程式碼的變更。如果您未使用 OpenAI 程式庫,建議使用 Google Gen AI SDK

支援的模型

Chat Completions API 支援 Gemini 模型,以及 Model Garden 中自行部署的特定模型。

Gemini 模型

Chat Completions API 支援下列 Gemini 模型:

從 Model Garden 自行部署的模型

Hugging Face Text Generation Interface (HF TGI)Vertex AI Model Garden 預先建構的 vLLM 容器支援 Chat Completions API。不過,並非部署至這些容器的所有模型都支援 Chat Completions API。下表列出各容器最常支援的型號:

HF TGI

vLLM

支援的參數

對於 Google 模型,Chat Completions API 支援下列 OpenAI 參數。如要查看各項參數的說明,請參閱 OpenAI 的「建立對話完成項目」說明文件。第三方模型支援的參數因模型而異。如要查看支援的參數,請參閱模型說明文件。

messages
  • System message
  • User message:支援 textimage_url 類型。image_url 類型支援以 Cloud Storage URI 儲存的圖片,或以 "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>" 形式的 base64 編碼。如要瞭解如何建立 Cloud Storage bucket 並將檔案上傳至 bucket,請參閱「探索物件儲存空間」。系統不支援「detail」選項。
  • Assistant message
  • Tool message
  • Function message:這個欄位已淘汰,但為了回溯相容性而繼續支援。
model
max_completion_tokens max_tokens 的別名。
max_tokens
n
frequency_penalty
presence_penalty
reasoning_effort 設定回覆所用的時間和權杖數量。
  • low:1024
  • medium:8192
  • high: 24576
由於回應中未包含想法,因此只能指定 reasoning_effortextra_body.google.thinking_config
response_format
  • json_object:解讀為將「application/json」傳遞至 Gemini API。
  • json_schema 系統不支援完全遞迴結構定義additional_properties
  • text:解讀為將「text/plain」傳遞至 Gemini API。
  • 其他 MIME 類型會直接傳遞至模型,例如直接傳遞「application/json」。
seed 對應至 GenerationConfig.seed
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters:使用 OpenAPI 規格指定參數。這與 OpenAI 參數欄位不同,後者描述為 JSON 結構定義物件。如要瞭解 OpenAPI 和 JSON 結構定義之間的關鍵字差異,請參閱 OpenAPI 指南
tool_choice
  • none
  • auto
  • required:對應於 FunctionCallingConfig 中的模式 ANY
  • validated:對應於 FunctionCallingConfig 中的模式 VALIDATED。這是 Google 特有的功能。
web_search_options 對應至 GoogleSearch 工具。不支援任何子選項。
function_call 這個欄位已淘汰,但支援回溯相容性。
functions 這個欄位已淘汰,但支援回溯相容性。

如果傳送任何不支援的參數,系統會忽略該參數。

多模態輸入參數

Chat Completions API 支援特定多模態輸入內容。

input_audio
  • data: 任何 URI 或有效的 Blob 格式。我們支援所有 Blob 類型,包括圖片、音訊和影片。支援 GenerateContent 支援的任何項目 (HTTP、Cloud Storage 等)。
  • format:OpenAI 支援 wav (audio/wav) 和 mp3 (audio/mp3)。使用 Gemini 時,系統支援所有有效的 MIME 類型。
image_url
  • data:input_audio 相同,支援任何 URI 或有效的 Blob 格式。
    請注意,如果 image_url 是網址,預設會是 image/* MIME 類型,而 image_url 是 Blob 資料時,則可做為任何多模態輸入內容。
  • detail:媒體解析度類似,這項設定會決定要求中每張圖片的權杖上限。請注意,雖然 OpenAI 的欄位是針對每張圖片,但 Gemini 會在要求中強制執行相同的詳細資料,且在一個要求中傳遞多個詳細資料類型會擲回錯誤。

一般來說,data 參數可以是 URI,也可以是 MIME 類型和 Base64 編碼位元組的組合,格式為 "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>"。如需完整的 MIME 類型清單,請參閱 GenerateContent。 如要進一步瞭解 OpenAI 的 base64 編碼,請參閱他們的說明文件

如需使用方式,請參閱多模態輸入範例

Gemini 專屬參數

如要使用 Gemini 支援但 OpenAI 模型不支援的功能,請在 extra_contentextra_body 欄位中傳遞這些功能做為參數。如果將這些特徵傳遞至這些欄位以外的位置,系統會忽略這些特徵。

extra_body 項功能

如要使用 Gemini 專屬的 extra_body 功能,請將這些功能納入 google 欄位。

{
  ...,
  "extra_body": {
     "google": {
       ...,
       // Add extra_body features here.
     }
   }
}
safety_settings 這對應於 Gemini 的 SafetySetting
cached_content 這對應於 Gemini 的 GenerateContentRequest.cached_content
thinking_config 這對應於 Gemini 的 GenerationConfig.ThinkingConfig
thought_tag_marker 如果模型支援「思考」功能,系統會使用這個分隔符號,將模型的想法與回覆內容分開。
如未指定,系統不會傳回模型想法的相關標記。如果存在,後續查詢會移除想法標記,並適當標記想法以供參考。這有助於保留後續查詢的適當情境。

extra_part 項功能

extra_part 欄位可讓您為每個 Part 指定其他設定。如要使用 Gemini 專屬的 extra_part 功能,請將這些功能納入 google 欄位。

{
  ...,
  "extra_part": {
     "google": {
       ...,
       // Add extra_part features here.
     }
   }
}
extra_content 用於新增不應忽略的 Gemini 專屬內容的欄位。
thought 這會明確標示欄位是否為想法 (並優先於 thought_tag_marker)。這項屬性可用於指定工具呼叫是否為想法的一部分。

後續步驟