このページでは、OpenAI Chat Completions エンドポイントのリクエスト本文の詳細を使用して、Google Distributed Cloud(GDC)エアギャップ上の Gemini の API リクエストをフォーマットする方法について説明します。この形式に準拠することで、OpenAI API の構造を使用しながら、Gemini の高度な機能をアプリケーションにシームレスに統合できます。
Gemini モデル ファミリーには、マルチモーダル プロンプト リクエストに対応するモデルが含まれています。マルチモーダルとは、プロンプトで複数のモダリティ(入力タイプ)を使用できることを示します。詳細については、プロンプトを設計するをご覧ください。
gRPC ライブラリ用に生成される型、メソッド、フィールドの一般的な説明については、Gemini gRPC リファレンスをご覧ください。
始める前に
API リクエストの形式を設定する前に、次の前提条件を満たしていることを確認してください。
- GDC での Gemini の機能について学習する。
- Gemini の API リクエストを行うための最小限のプロジェクト要件を確認する。
- リクエストで使用する Gemini モデルのエンドポイント ID を特定します。特定のモデルを選択すると、そのモデルの独自の機能をタスクに使用できます。GDC で利用可能な Gemini モデルをご覧ください。
- Gemini から期待どおりの回答を引き出すために、プロンプトを慎重に作成する方法を理解する。さまざまなプロンプト スタイルと形式を試して、出力を最適化します。詳細については、プロンプトの概要をご覧ください。
- OpenAI Chat Completions エンドポイントで使用可能なさまざまなパラメータを確認して、Gemini の動作を制御します。
temperature、max_completion_tokens、top_pなどのパラメータを調整して、生成されるテキストの創造性、長さ、多様性を制御します。詳細については、パラメータを試すをご覧ください。
リクエストの構文
次の例には、モデル レスポンスを生成するために API リクエストで使用する必要がある構文が含まれています。
Python
import openai
client = openai.OpenAI()
model_response = client.chat.completions.create(
model = "MODEL_ID",
messages = [
{
...
}
]
...
)
print(model_response)
curl
curl \
-X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
-d '{
"model_id": "MODEL_ID",
"messages" = [
{
...
}
]
...
}'
API パラメータ
このセクションでは、GDC の Gemini の API リクエストのリクエスト本文で定義できる最も重要なパラメータと、モデルが返す必要のあるレスポンス本文のリストを示します。OpenAI の Chat Completions エンドポイントの完全な API リファレンスについては、https://platform.openai.com/docs/api-reference/chat をご覧ください。
リクエストの本文
{
"messages" = [
{
"role": string,
"content": [
{
"type": "image_url",
"image_url": {
"url": string
}
},
{
"type": "input_audio",
"input_audio": {
"data": string,
"format": string
}
},
{
"type": "audio_url",
"audio_url": {
"url": string
}
},
{
"type": "input_video",
"input_video": {
"data": string,
"format": string
}
},
{
"type": "video_url",
"video_url": {
"url": string
}
},
{
"type": "input_document",
"input_document": {
"data": string,
"format": string
}
},
{
"type": "document_url",
"document_url": {
"url": string
}
}
]
}
],
"temperature": number,
"max_completion_tokens": integer,
"top_p": number,
"n": integer,
"stop": string,
"user": string
}
次の表に、Gemini で使用する場合の OpenAI Chat Completions エンドポイントのリクエスト本文のキーフィールドとその説明を示します。
| パラメータ | ||
|---|---|---|
| フィールド名 | 説明 | |
|
必須: 使用する Gemini モデル。 詳細については、利用可能な Gemini モデルをご覧ください。 |
|
|
必須: モデルとの現在の会話を構成するメッセージのリスト。各メッセージには |
|
|
必須: メッセージ作成者のロール。次のいずれかになります。
|
|
|
必須: システム、ユーザー、アシスタントからのメッセージの内容。 シングルターン クエリの場合、値は単一のインスタンスです。マルチターン クエリの場合、 |
|
|
省略可: 生成されたテキストのランダム性。 値が低い( デフォルトは |
|
|
省略可: レスポンスで生成するトークンの最大数。これには、表示可能な出力トークンと推論トークンが含まれます。 |
|
|
省略可: Nucleus サンプリングの確率。 値が高いほど( デフォルトは |
|
|
省略可: プロンプトごとに生成する補完の数。 デフォルトは |
|
|
省略可: 検出された場合にテキスト生成プロセスを停止する文字列のリスト。 デフォルトは |
|
|
省略可: エンドユーザーの一意の識別子。 このパラメータを使用すると、使用パターンを追跡し、回答をパーソナライズできます。 |
|
content
このフィールドは、メッセージのマルチパート コンテンツを含む基本的な構造化データ型です。
入力がテキスト プロンプトの場合、このフィールドの値は文字列です。ただし、マルチモーダル プロンプトの場合、このフィールドは、各オブジェクトに type と INPUT の 2 つの主要なプロパティを含む配列で構成されます。type プロパティはマルチモーダル入力のコンテンツのタイプを表し、INPUT プロパティには、base64 エンコード データまたは GDC ストレージ バケットの URL として表される入力要素が含まれます。
次の表に、マルチモーダル プロンプトの主要な content フィールドとその説明を示します。
| フィールド名 | 説明 | |
|---|---|---|
|
必須: マルチモーダル プロンプトのコンテンツ タイプ。指定できる値は次のとおりです。
|
|
|
必須: マルチモーダル プロンプトのコンテンツ入力。このフィールド名は、 したがって、このフィールド名は次のいずれかになります。
各入力フィールドには、 |
|
|
省略可: 入力コンテンツが URL として指定されている場合は、GDC ストレージ バケット内のファイルへのパス。 画像の場合、このフィールドには URL ではなく base64 でエンコードされたデータを含めることができます。 |
|
|
省略可: 入力コンテンツが base64 でエンコードされたデータとして提供されている場合、バイナリデータは文字列に変換されます。 画像の場合は、代わりに |
|
|
省略可: 入力コンテンツが 入力データに応じて、さまざまな形式がサポートされています。詳細については、画像、音声、動画、ドキュメントの MIME タイプをご覧ください。 |
|
レスポンスの本文
{
"id": string,
"object": string,
"created": integer,
"model": string,
"choices": [
{
"index": integer,
"message": {
"role": string,
"content": string,
"refusal": null
},
"logprobs": null,
"finish_reason": string
}
],
"usage": {
"completion_tokens": integer,
"prompt_tokens": integer,
"total_tokens": integer
},
"system_fingerprint": string
}
次の表に、指定された入力に基づいてモデルから返されるレスポンス本文のキーフィールドとその説明を示します。
| フィールド名 | 説明 | |
|---|---|---|
|
生成されたテキストの一意の識別子。 |
|
|
オブジェクト タイプ。常に |
|
|
テキストが生成されたときのタイムスタンプ(秒単位)。 |
|
|
テキストの生成に使用されるモデル。 |
|
|
テキスト生成の選択肢のリスト。 |
|
|
選択肢のリスト内の選択肢のインデックス。 |
|
|
モデルによって生成されたテキスト生成メッセージ。このフィールドには次のプロパティが含まれます。
|
|
|
選択肢の対数確率情報。 |
|
|
モデルがトークンの生成を停止した理由。値は次のいずれかです。
|
|
|
リクエストの使用状況の統計情報。 |
|
|
生成されたテキストのトークン数。 |
|
|
プロンプト内のトークン数。 |
|
|
プロンプトと生成されたテキストのトークンの合計数。 |
|
|
モデルが実行に使用するバックエンド構成。 |
|
例
このセクションでは、リクエストの本文と、モデルが返す必要があるテキスト生成レスポンスの例を示します。
リクエストの例
次の例は、Gemini にプロンプトを送信してテキストを生成するリクエスト本文の詳細を示しています。この例には、温度と最大トークン数の制御が含まれています。実装の詳細については、テキスト プロンプトを送信するまたはマルチモーダル プロンプトを送信するをご覧ください。
{
"messages": [
{
"role": "system",
"content": "You are a helpful and informative assistant."
},
{
"role": "user",
"content": "What is the capital of France?"
}
],
"temperature": 0.7,
"max_completion_tokens": 100
}
レスポンスの例
次の例は、モデルから返されたテキスト生成レスポンスの詳細を示しています。
{
"id": "",
"object": "",
"created": 0,
"model": "",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris.\n",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"completion_tokens": 7,
"prompt_tokens": 8,
"total_tokens": 15
},
"system_fingerprint": ""
}