Vertex AI で OpenAI ライブラリを使用する

Chat Completions API は、OpenAI 互換のエンドポイントとして機能します。これは、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 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: text タイプと image_url タイプがサポートされています。image_url 型は、Cloud Storage URI または "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>" 形式の Base64 エンコードで保存された画像をサポートします。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_effort または extra_body.google.thinking_config のいずれか 1 つのみを指定できます。
response_format
  • json_object: Gemini API に「application/json」を渡すものとして解釈されます。
  • json_schema 完全に再帰的なスキーマはサポートされていません。additional_properties がサポートされています。
  • text: Gemini API に「text/plain」を渡すものとして解釈されます。
  • 他の MIME タイプはそのままモデルに渡されます(「application/json」を直接渡すなど)。
seed GenerationConfig.seed に対応しています。
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: OpenAPI 仕様を使用してパラメータを指定します。これは、JSON Schema オブジェクトとして記述される OpenAI パラメータ フィールドとは異なります。OpenAPI と JSON Schema のキーワードの違いについては、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 形式がサポートされます。
    URL としての image_url はデフォルトで image/* MIME タイプになり、blob データとしての image_url は任意のマルチモーダル入力として使用できます。
  • detail: メディアの解像度と同様に、リクエストの画像あたりの最大トークン数を決定します。OpenAI のフィールドは画像ごとですが、Gemini はリクエスト全体で同じ詳細を適用します。1 つのリクエストで複数の詳細タイプを渡すと、エラーがスローされます。

一般に、data パラメータは URI、または "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>" 形式の MIME タイプと Base64 エンコード バイトの組み合わせにできます。MIME タイプの完全なリストについては、GenerateContent をご覧ください。OpenAI の Base64 エンコードの詳細については、OpenAI のドキュメントをご覧ください。

使用方法については、マルチモーダル入力の例をご覧ください。

Gemini 固有のパラメータ

Gemini でサポートされている機能のうち、OpenAI モデルでは利用できないものがいくつかあります。これらの機能はパラメータとして渡すことができますが、extra_content または extra_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 よりも優先されます)。これは、ツール呼び出しが思考の一部であるかどうかを指定するために使用する必要があります。

次のステップ