OpenAI compatibility

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

方法:chatCompletions

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

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

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

欄位
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"} }

n integer

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

stop value (Value format)

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

maxCompletionTokens integer

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

maxTokens integer

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

temperature number

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

topP number

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

responseFormat object (ResponseFormat)

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

回應主體

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

方法:embeddings

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

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

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

欄位
input value (Value format)

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

model string

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

encodingFormat string

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

dimensions integer

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

回應主體

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

方法:listModels

列出目前可用的模型。

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

要求主體必須為空白。

回應主體

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

方法:chat.completions

根據輸入的即時通訊記錄,產生模型的回覆集。

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

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

欄位
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"} }

n integer

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

stop value (Value format)

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

maxCompletionTokens integer

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

maxTokens integer

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

temperature number

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

topP number

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

responseFormat object (ResponseFormat)

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

回應主體

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

方法:embeddings.generate

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

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

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

欄位
input value (Value format)

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

model string

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

encodingFormat string

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

dimensions integer

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

回應主體

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

方法:openai.chat.completions

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

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

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

欄位
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"} }

n integer

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

stop value (Value format)

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

maxCompletionTokens integer

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

maxTokens integer

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

temperature number

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

topP number

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

responseFormat object (ResponseFormat)

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

回應主體

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

方法:openai.embeddings

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

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

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

欄位
input value (Value format)

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

model string

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

encodingFormat string

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

dimensions integer

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

回應主體

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

方法:openai.models

列出目前可用的模型。

端點

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

這個網址使用 gRPC 轉碼語法。

要求主體

要求主體必須為空白。

回應主體

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

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
}

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
}