本頁面將說明如何使用 OpenAI Chat Completions 端點的要求內文詳細資料,為 Google Distributed Cloud (GDC) 氣隙環境中的 Gemini 設定 API 請求格式。只要遵循這個格式,您就能在應用程式中順暢整合 Gemini 的進階功能,同時使用 OpenAI API 的結構。
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 參數
本節列出您可以在 Gemini on GDC 的 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 模型。 |
|
|
必要條件: 與模型進行目前對話的訊息清單。每則訊息都會提供 |
|
|
必要條件: 訊息作者的角色,可以是下列任一項:
|
|
|
必要條件: 系統、使用者或助理傳送的訊息內容。 如果是單輪查詢,這個值是單一例項。如果是多輪查詢, |
|
|
選用: 生成文字的隨機性。 值越低 (越接近 預設值為 |
|
|
選用: 回覆中可生成的詞元數量上限,包括可見的輸出詞元和推理詞元。 |
|
|
選用: 核心取樣機率。 值越高 (越接近 預設值為 |
|
|
選用: 每個提示要生成的完成次數。 預設值為 |
|
|
選用: 字串清單,遇到這些字串時,系統會停止生成文字。 預設值為 |
|
|
自由參加: 使用者的專屬 ID。 這項參數可讓您追蹤使用模式,並提供個人化回覆。 |
|
content
這個欄位是基本結構化資料類型,內含訊息的多部分內容。
如果輸入的是文字提示,這個欄位的值就是字串。不過,如果是多模態提示,這個欄位會包含陣列,每個物件都包含兩個主要屬性:type 和 INPUT。type 屬性表示多模態輸入的內容類型,而 INPUT 屬性則包含輸入元素,以 Base64 編碼資料或 GDC 儲存空間值區的網址表示。
下表列出多模態提示的主要 content 欄位及其說明:
| 欄位名稱 | 說明 | |
|---|---|---|
|
必要條件: 多模態提示的內容類型。可接受的值包括:
|
|
|
必要條件: 多模態提示的內容輸入。這個欄位名稱必須與 因此,這個欄位名稱是下列其中一項:
每個輸入欄位都有 |
|
|
自由參加: 如果輸入內容是以網址形式提供,則為 GDC 儲存空間值區中的檔案路徑。 如果是圖片,這個欄位可以包含 Base64 編碼資料,而非網址。 |
|
|
自由參加: 如果輸入內容是以 base64 編碼資料的形式提供,則二進位資料會轉換為字元字串。 如果是圖片,則會改為在 |
|
|
自由參加: 如果輸入內容是在 |
|
回應主體
{
"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
}
下表列出模型根據提供的輸入內容傳回的回應主體中,主要欄位及其說明:
| 欄位名稱 | 說明 | |
|---|---|---|
|
生成文字的專屬 ID。 |
|
|
物件類型,一律為 |
|
|
生成文字的時間戳記 (以秒為單位)。 |
|
|
用來生成文字的模型。 |
|
|
文字生成選項清單。如果 |
|
|
選項清單中選項的索引。 |
|
|
模型生成的文字生成訊息。這個欄位包含下列屬性:
|
|
|
選項的記錄機率資訊。 |
|
|
模型停止生成權杖的原因。值為下列其中之一:
|
|
|
要求的用量統計資料。 |
|
|
生成文字中的權杖數量。 |
|
|
提示中的權杖數量。 |
|
|
提示和生成文字中的權杖總數。 |
|
|
模型用於執行的後端設定。 |
|
範例
本節包含要求主體的範例,以及模型必須傳回的文字生成回應。
要求範例
以下範例顯示要求主體的詳細資料,該主體會將提示傳送至 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": ""
}