搭配使用 OpenAI 程式庫與 Vertex AI

Chat Completions API 可做為與 Open AI 相容的端點,方便您使用 Python 和 REST 適用的 OpenAI 程式庫,與 Vertex AI 上的 Gemini 互動。如果您已使用 OpenAI 程式庫,可以透過這項 API 在呼叫 OpenAI 模型和 Vertex AI 代管模型之間切換,比較輸出內容、費用和可擴充性,不必變更現有程式碼,就能以低成本完成這項作業。如果您尚未採用 OpenAI 程式庫,建議您使用 Google Gen AI SDK

支援的模型

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

Gemini 模型

下列模型支援 Chat Completions API:

從 Model Garden 自行部署的模型

Hugging Face 文字生成介面 (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 項功能

加入 google 欄位,內含任何 Gemini 專屬功能。extra_body

{
  ...,
  "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 層級指定其他設定。

加入 google 欄位,內含任何 Gemini 專屬功能。extra_part

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

後續步驟