OpenAI compatibility

您可以使用 OpenAI 程式庫 (Python 和 TypeScript / JavaScript) 搭配 REST API,透過更新三行程式碼並使用 Gemini API 金鑰,存取 Gemini 模型。如要進一步瞭解這項功能,請參閱相容性指南

方法:chatCompletions

根據即時通訊記錄輸入內容,產生模型的一系列回覆。

端點

post https://generativelanguage.googleapis.com/v1beta:chatCompletions

要求主體

要求主體的資料會採用以下結構:

欄位
model string

必要欄位。用於產生完成作業的 Model 名稱。如果模型名稱中沒有斜線,系統會在名稱前加上「models/」。

messages[] object (Struct format)

必要欄位。用於產生完成狀態的聊天記錄。支援單次和多輪查詢。注意:這是多型態欄位,會序列化為 InternalChatMessage。

stream boolean

選用設定。是否要串流回應或傳回單一回應。

如果為 true,回應中的「object」欄位會是「chat.completion.chunk」。否則會是「chat.completion」。

streamOptions object (StreamOptions)

選用設定。串流要求的選項。

tools[] object (ChatTool)

選用設定。模型可為其產生呼叫的工具組合。每個工具都會宣告自己的簽名。

toolChoice value (Value format)

選用設定。控制模型是否應使用工具,以及要使用哪個工具。可以是下列任一內容:- 字串「none」,用於停用工具。- 字串「auto」,讓模型自行決定。- 字串「required」,用於強制模型使用工具。- 函式名稱描述元物件,指定要使用的工具。最後一個選項會遵循下列結構定義:{ "type": "function", "function": {"name" : "the_function_name"} }

modalities[] string

選用設定。要求的模式。

n integer

選用設定。要產生的候選答案完成次數。必須是正整數。如果未設定,預設值為 1。

stop value (Value format)

選用設定。會停止產生輸出的字元序列集合。注意:這是多態欄位。這表示該欄位包含字串或重複的字串。

maxCompletionTokens integer

選用設定。回應候選項中可納入的符記數量上限。必須是正整數。

maxTokens integer

選用設定。回應候選項中可納入的符記數量上限。必須是正整數。這個欄位已由 SDK 淘汰。

temperature number

選用設定。控制輸出的隨機性。

topP number

選用設定。取樣時要考慮的符記累計可能性上限。

responseFormat object (ResponseFormat)

選用設定。定義回應的格式。如未設定,回應會以文字格式顯示。

audio object (AudioOptions)

選用設定。音訊產生選項。

parallelToolCalls boolean

選用設定。是否要並行呼叫工具。為了與 SDK 相容,這裡會納入此屬性,但只支援 false。

presencePenalty number

選用設定。根據先前的出現次數,對新符記處以懲罰。有效範圍為 [-2, 2]。預設值為 0。

user string

選用設定。用於追蹤要求的使用者名稱。未使用,僅供 SDK 相容性使用。

回應主體

如果成功,回應會是一般 HTTP 回應,其格式由方法定義。

方法:embeddings

根據輸入內容,從模型產生嵌入項目。

端點

post https://generativelanguage.googleapis.com/v1beta/embeddings

要求主體

要求主體的資料會採用以下結構:

欄位
input value (Value format)

必要欄位。要為其產生嵌入的輸入內容。可以是字串,或字串清單。SDK 支援數字清單和數字清單清單,但尚未實作。

model string

必要欄位。要為其產生嵌入的模型。

encodingFormat string

選用設定。編碼格式。必須是「float」或「base64」。

dimensions integer

選用設定。產生嵌入資料的維度大小。

回應主體

如果成功,回應主體會包含 GenerateEmbeddingsResponse 的執行例項。

方法:listModels

列出目前可用的模型。

端點

get https://generativelanguage.googleapis.com/v1beta/listModels

要求主體

要求主體必須為空白。

回應主體

如果成功,回應主體會包含 SdkListModelsResponse 的執行例項。

方法:chat.completions

根據即時通訊記錄輸入內容,產生模型的一系列回覆。

端點

post https://generativelanguage.googleapis.com/v1beta/chat/completions

要求主體

要求主體的資料會採用以下結構:

欄位
model string

必要欄位。用於產生完成作業的 Model 名稱。如果模型名稱中沒有斜線,系統會在名稱前加上「models/」。

messages[] object (Struct format)

必要欄位。用於產生完成狀態的聊天記錄。支援單次和多輪查詢。注意:這是多型態欄位,會序列化為 InternalChatMessage。

stream boolean

選用設定。是否要串流回應或傳回單一回應。

如果為 true,回應中的「object」欄位會是「chat.completion.chunk」。否則會是「chat.completion」。

streamOptions object (StreamOptions)

選用設定。串流要求的選項。

tools[] object (ChatTool)

選用設定。模型可為其產生呼叫的工具組合。每個工具都會宣告自己的簽名。

toolChoice value (Value format)

選用設定。控制模型是否應使用工具,以及要使用哪個工具。可以是下列任一內容:- 字串「none」,用於停用工具。- 字串「auto」,讓模型自行決定。- 字串「required」,用於強制模型使用工具。- 函式名稱描述元物件,指定要使用的工具。最後一個選項會遵循下列結構定義:{ "type": "function", "function": {"name" : "the_function_name"} }

modalities[] string

選用設定。要求的模式。

n integer

選用設定。要產生的候選答案完成次數。必須是正整數。如果未設定,預設值為 1。

stop value (Value format)

選用設定。會停止產生輸出的字元序列集合。注意:這是多態欄位。這表示該欄位包含字串或重複的字串。

maxCompletionTokens integer

選用設定。回應候選項中可納入的符記數量上限。必須是正整數。

maxTokens integer

選用設定。回應候選項中可納入的符記數量上限。必須是正整數。這個欄位已由 SDK 淘汰。

temperature number

選用設定。控制輸出的隨機性。

topP number

選用設定。取樣時要考慮的符記累計可能性上限。

responseFormat object (ResponseFormat)

選用設定。定義回應的格式。如未設定,回應會以文字格式顯示。

audio object (AudioOptions)

選用設定。音訊產生選項。

parallelToolCalls boolean

選用設定。是否要並行呼叫工具。為了與 SDK 相容,這裡會納入此屬性,但只支援 false。

presencePenalty number

選用設定。根據先前的出現次數,對新符記處以懲罰。有效範圍為 [-2, 2]。預設值為 0。

user string

選用設定。用於追蹤要求的使用者名稱。未使用,僅供 SDK 相容性使用。

回應主體

如果成功,回應會是一般 HTTP 回應,其格式由方法定義。

方法:embeddings.generate

根據輸入內容,從模型產生嵌入項目。

端點

post https://generativelanguage.googleapis.com/v1beta/embeddings:generate

要求主體

要求主體的資料會採用以下結構:

欄位
input value (Value format)

必要欄位。要為其產生嵌入的輸入內容。可以是字串,或字串清單。SDK 支援數字清單和數字清單清單,但尚未實作。

model string

必要欄位。要為其產生嵌入的模型。

encodingFormat string

選用設定。編碼格式。必須是「float」或「base64」。

dimensions integer

選用設定。產生嵌入資料的維度大小。

回應主體

如果成功,回應主體會包含 GenerateEmbeddingsResponse 的執行例項。

方法:images.generate

根據輸入內容,從模型產生圖片。

端點

post https://generativelanguage.googleapis.com/v1beta/images:generate

要求主體

要求主體的資料會採用以下結構:

欄位
prompt string

必要欄位。所需圖片的文字說明。長度上限為 1000 個半形字元。

model string

選用設定。要為其產生圖片的模型。

n integer

選用設定。要產生的圖片數量。

quality string

選用設定。系統產生的圖片品質。「hd」可產生細節更精細且一致性的圖片。

responseFormat string

選用設定。系統傳回的圖片格式。必須是 url 或 b64Json 其中一種

size string

選用設定。生成圖像的大小

style string

選用設定。生成圖像的樣式。必須是鮮豔或自然。

user string

選用設定。代表使用者的專屬 ID

回應主體

如果成功,回應主體會包含 GenerateImagesResponse 的執行例項。

方法:listModels.sdkGetModel

取得模型例項。

端點

get https://generativelanguage.googleapis.com/v1beta/listModels/*

查詢參數

model string

必要欄位。要取得的模型名稱。

要求主體

要求主體必須為空白。

回應主體

如果成功,回應主體會包含 SdkModel 的執行例項。

方法:openai.chat.completions

根據即時通訊記錄輸入內容,產生模型的一系列回覆。

端點

post https://generativelanguage.googleapis.com/v1beta/openai/chat/completions

要求主體

要求主體的資料會採用以下結構:

欄位
model string

必要欄位。用於產生完成作業的 Model 名稱。如果模型名稱中沒有斜線,系統會在名稱前加上「models/」。

messages[] object (Struct format)

必要欄位。用於產生完成狀態的聊天記錄。支援單次和多輪查詢。注意:這是多型態欄位,會序列化為 InternalChatMessage。

stream boolean

選用設定。是否要串流回應或傳回單一回應。

如果為 true,回應中的「object」欄位會是「chat.completion.chunk」。否則會是「chat.completion」。

streamOptions object (StreamOptions)

選用設定。串流要求的選項。

tools[] object (ChatTool)

選用設定。模型可為其產生呼叫的工具組合。每個工具都會宣告自己的簽名。

toolChoice value (Value format)

選用設定。控制模型是否應使用工具,以及要使用哪個工具。可以是下列任一內容:- 字串「none」,用於停用工具。- 字串「auto」,讓模型自行決定。- 字串「required」,用於強制模型使用工具。- 函式名稱描述元物件,指定要使用的工具。最後一個選項會遵循下列結構定義:{ "type": "function", "function": {"name" : "the_function_name"} }

modalities[] string

選用設定。要求的模式。

n integer

選用設定。要產生的候選答案完成次數。必須是正整數。如果未設定,預設值為 1。

stop value (Value format)

選用設定。會停止產生輸出的字元序列集合。注意:這是多態欄位。這表示該欄位包含字串或重複的字串。

maxCompletionTokens integer

選用設定。回應候選項中可納入的符記數量上限。必須是正整數。

maxTokens integer

選用設定。回應候選項中可納入的符記數量上限。必須是正整數。這個欄位已由 SDK 淘汰。

temperature number

選用設定。控制輸出的隨機性。

topP number

選用設定。取樣時要考慮的符記累計可能性上限。

responseFormat object (ResponseFormat)

選用設定。定義回應的格式。如未設定,回應會以文字格式顯示。

audio object (AudioOptions)

選用設定。音訊產生選項。

parallelToolCalls boolean

選用設定。是否要並行呼叫工具。為了與 SDK 相容,這裡會納入此屬性,但只支援 false。

presencePenalty number

選用設定。根據先前的出現次數,對新符記處以懲罰。有效範圍為 [-2, 2]。預設值為 0。

user string

選用設定。用於追蹤要求的使用者名稱。未使用,僅供 SDK 相容性使用。

回應主體

如果成功,回應會是一般 HTTP 回應,其格式由方法定義。

方法:openai.embeddings

根據輸入內容,從模型產生嵌入項目。

端點

post https://generativelanguage.googleapis.com/v1beta/openai/embeddings

要求主體

要求主體的資料會採用以下結構:

欄位
input value (Value format)

必要欄位。要為其產生嵌入的輸入內容。可以是字串,或字串清單。SDK 支援數字清單和數字清單清單,但尚未實作。

model string

必要欄位。要為其產生嵌入的模型。

encodingFormat string

選用設定。編碼格式。必須是「float」或「base64」。

dimensions integer

選用設定。產生嵌入資料的維度大小。

回應主體

如果成功,回應主體會包含 GenerateEmbeddingsResponse 的執行例項。

方法:openai.images

根據輸入內容,從模型產生圖片。

端點

post https://generativelanguage.googleapis.com/v1beta/openai/images

要求主體

要求主體的資料會採用以下結構:

欄位
prompt string

必要欄位。所需圖片的文字說明。長度上限為 1000 個半形字元。

model string

選用設定。要為其產生圖片的模型。

n integer

選用設定。要產生的圖片數量。

quality string

選用設定。系統產生的圖片品質。「hd」可產生細節更精細且一致性的圖片。

responseFormat string

選用設定。系統傳回的圖片格式。必須是 url 或 b64Json 其中一種

size string

選用設定。生成圖像的大小

style string

選用設定。生成圖像的樣式。必須是鮮豔或自然。

user string

選用設定。代表使用者的專屬 ID

回應主體

如果成功,回應主體會包含 GenerateImagesResponse 的執行例項。

方法:openai.models

列出目前可用的模型。

端點

get https://generativelanguage.googleapis.com/v1beta/openai/models

要求主體

要求主體必須為空白。

回應主體

如果成功,回應主體會包含 SdkListModelsResponse 的執行例項。

方法:openai.models.sdkGetModel

取得模型例項。

端點

get https://generativelanguage.googleapis.com/v1beta/openai/models/*

查詢參數

model string

必要欄位。要取得的模型名稱。

要求主體

要求主體必須為空白。

回應主體

如果成功,回應主體會包含 SdkModel 的執行例項。

AudioOptions

音訊產生選項。

欄位
voice string

選用設定。用於音訊回應的語音。

format string

選用設定。音訊回應的格式。可以是下列任一值:- "wav":將回應格式設為 WAV 檔案。- "mp3":將回覆格式化為 MP3 檔案。- "flac":將回覆格式設為 FLAC 檔案。- "opus":將回應格式化為 OPUS 檔案。- "pcm16":將回應格式化為 PCM16 檔案。

JSON 表示法
{
  "voice": string,
  "format": string
}

ChatTool

模型可為其產生呼叫的工具。

欄位
function object (ChatFunction)

必要欄位。工具名稱。

type string

必要欄位。必要,必須為「function」。

JSON 表示法
{
  "function": {
    object (ChatFunction)
  },
  "type": string
}

ChatFunction

模型可產生呼叫的函式。

欄位
name string

必要欄位。函式的名稱。

description string

選用設定。函式的說明。

parameters object (Struct format)

選用設定。函式的參數。

strict boolean

選用設定。結構定義驗證是否嚴格。如果為 True,當結構定義無效時,模型就會失敗。注意:系統目前會忽略這項參數。

JSON 表示法
{
  "name": string,
  "description": string,
  "parameters": {
    object
  },
  "strict": boolean
}

GenerateEmbeddingsResponse

回覆內容為嵌入生成。

欄位
object string

僅供輸出。一律為「嵌入」,SDK 需要此值。

data[] object (GenerateEmbeddingsEmbedding)

僅供輸出。要求的嵌入項目清單。

model string

僅供輸出。用於產生嵌入的模型。

JSON 表示法
{
  "object": string,
  "data": [
    {
      object (GenerateEmbeddingsEmbedding)
    }
  ],
  "model": string
}

GenerateEmbeddingsEmbedding

模型產生的嵌入向量。

欄位
object string

僅供輸出。一律為「嵌入」,SDK 需要此值。

index integer

僅供輸出。嵌入清單中的嵌入索引。

embedding value (Value format)

僅供輸出。系統為輸入內容產生的嵌入向量。可以是浮點值清單,也可以是 base64 字串,用於以 C 樣式版面配置編碼浮點值清單 (與 Numpy 相容)。

JSON 表示法
{
  "object": string,
  "index": integer,
  "embedding": value
}

GenerateImagesResponse

圖像生成回覆。

欄位
object string

僅供輸出。一律為「image」,SDK 需要這個值。

images[] object (Image)

僅供輸出。已產生的圖片清單。

model string

僅供輸出。用來產生圖片的模型。

JSON 表示法
{
  "object": string,
  "images": [
    {
      object (Image)
    }
  ],
  "model": string
}

圖片

模型產生的圖片。

欄位
b64Json string (bytes format)

產生圖片的 base64 編碼 JSON。

Base64 編碼字串。

JSON 表示法
{
  "b64Json": string
}

HttpBody

用於表示任何 HTTP 主體的訊息;只能用於無法以 JSON 表示的酬載格式,例如未經處理的二進位檔或 HTML 網頁。

這個訊息可以用於要求及回應中的串流和非串流 API 方法。

這個訊息可以當做頂層要求欄位;想從網址或 HTTP 範本中將參數擷取至要求欄位,同時又想存取未經處理的 HTTP 主體時,這個做法就非常便利。

範例:

message GetResourceRequest {
  // A unique request id.
  string requestId = 1;

  // The raw HTTP body is bound to this field.
  google.api.HttpBody http_body = 2;

}

service ResourceService {
  rpc GetResource(GetResourceRequest)
    returns (google.api.HttpBody);
  rpc UpdateResource(google.api.HttpBody)
    returns (google.protobuf.Empty);

}

串流方法範例:

service CaldavService {
  rpc GetCalendar(stream google.api.HttpBody)
    returns (stream google.api.HttpBody);
  rpc UpdateCalendar(stream google.api.HttpBody)
    returns (stream google.api.HttpBody);

}

使用這個類型只會改變要求和回應主體的處理方式,所有其他功能的運作方式皆維持不變。

欄位
contentType string

指定主體內容類型的 HTTP Content-Type 標頭值。

data string (bytes format)

以原始二進位檔格式顯示 HTTP 要求/回應主體。

Base64 編碼字串。

extensions[] object

應用程式專屬回應中繼資料。必須在串流 API 的第一個回應中進行設定。

含有任意類型欄位的物件。額外的 "@type" 欄位則包含能辨識類型的 URI。範例:{ "id": 1234, "@type": "types.example.com/standard/id" }

JSON 表示法
{
  "contentType": string,
  "data": string,
  "extensions": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}

ResponseFormat

定義回應的格式。

欄位
type string

必要欄位。回應類型。可以是下列任一選項:- "text":將回覆格式化為文字。- "json_object":將回應格式化為 JSON 物件。- "jsonSchema":將回應格式化為符合指定結構定義的 JSON 物件。

jsonSchema object (ResponseFormatSchema)

選用設定。要遵循的 JSON 結構定義。只有在 type 為「jsonSchema」時才會使用。

JSON 表示法
{
  "type": string,
  "jsonSchema": {
    object (ResponseFormatSchema)
  }
}

ResponseFormatSchema

回應的結構定義。

欄位
description string

選用設定。說明結構定義所代表的物件。

name string

必要欄位。結構定義所代表的物件類型名稱。

strict boolean

選用設定。結構定義驗證是否嚴格。如果為 true,當結構定義無效時,模型就會失敗。注意:系統目前會忽略這項參數。

schema object (Struct format)

選用設定。要遵循的 JSON 結構定義。

JSON 表示法
{
  "description": string,
  "name": string,
  "strict": boolean,
  "schema": {
    object
  }
}

SdkListModelsResponse

清單模型的回應。

欄位
object string

僅供輸出。一律為「list」,這是 SDK 所需。

data[] object (SdkModel)

僅供輸出。要求的嵌入項目清單。

JSON 表示法
{
  "object": string,
  "data": [
    {
      object (SdkModel)
    }
  ]
}

SdkModel

模型物件。

欄位
id string

僅供輸出。模型的 ID。

object string

僅供輸出。一律為 SDK 所需的「model」。

created string (int64 format)

僅供輸出。建立模型時的 Unix 時間戳記 (以秒為單位)。

owned_by string

僅供輸出。擁有模型的機構。

JSON 表示法
{
  "id": string,
  "object": string,
  "created": string,
  "owned_by": string
}

StreamOptions

串流要求的選項。

欄位
includeUsage boolean

選用設定。如果已設定,請在回應中加入使用統計資料。

JSON 表示法
{
  "includeUsage": boolean
}