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

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 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 または MIME タイプと base64 エンコードされたバイトの組み合わせ("data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>" 形式)を使用できます。MIME タイプの一覧については、GenerateContent をご覧ください。OpenAI の Base64 エンコードの詳細については、ドキュメントをご覧ください。

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

Gemini 固有のパラメータ

Gemini でサポートされている機能の中には、OpenAI モデルでは利用できない機能がいくつかあります。これらの機能はパラメータとして渡すことはできますが、extra_content または extra_body 内に含める必要があります。含めないと無視されます。

extra_body 件の機能

safety_settings これは Gemini の SafetySetting に対応します。
cached_content これは Gemini の GenerateContentRequest.cached_content に対応します。
thinking_config これは Gemini の GenerationConfig.ThinkingConfig に対応します。
thought_tag_marker Thinking が利用可能なモデルで、モデルの思考をレスポンスから分離するために使用されます。
指定しない場合、モデルの思考の周囲にタグは返されません。存在する場合、後続のクエリでは思考タグが削除され、コンテキストに応じて思考が適切にマークされます。これにより、後続のクエリに適切なコンテキストを保持できます。

extra_part 件の機能

extra_part を使用すると、Part 単位で追加の設定を指定できます。

extra_content 無視しない Gemini 固有のコンテンツを追加するフィールド。
thought これにより、フィールドが思考であるかどうかが明示的にマークされます(thought_tag_marker よりも優先されます)。これは、ツール呼び出しが思考の一部であるかどうかを指定するために使用する必要があります。

次のステップ