搭配使用 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 或 base64 編碼儲存的圖片,格式為 "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>"。如要瞭解如何建立 Cloud Storage 值區並上傳檔案至該值區,請參閱「探索物件儲存空間」一文。系統不支援 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 (音訊/wav) 和 mp3 (音訊/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 項功能

safety_settings 這會對應至 Gemini 的 SafetySetting
cached_content 這會對應至 Gemini 的 GenerateContentRequest.cached_content
thinking_config 這會對應至 Gemini 的 GenerationConfig.ThinkingConfig
thought_tag_marker 用於將模型的想法與回覆分開,適用於支援思考功能的模型。
如未指定,系統不會在模型的想法周圍傳回任何標記。如果有,後續查詢會移除想法標記,並適當標示想法,以便瞭解脈絡。這有助於為後續查詢保留適當的上下文。

extra_part 項功能

extra_part 可讓您在個別 Part 層級指定其他設定。

extra_content 可用來新增不應忽略的 Gemini 專屬內容。
thought 這會明確標示欄位是否為想法 (優先順序高於 thought_tag_marker)。這應用於指定工具呼叫是否屬於想法。

後續步驟