OpenAI compatibility

您可以使用 OpenAI 库(Python 和 TypeScript / JavaScript)以及 REST API 访问 Gemini 模型,只需更新三行代码并使用 Gemini API 密钥即可。如需详细了解此功能,请参阅兼容性指南

方法:chatCompletions

在给定聊天记录输入的情况下,从模型生成一组回答。

端点

帖子 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 响应,其格式由方法定义。

方法:嵌入

在给定输入的情况下,从模型生成嵌入。

端点

帖子 https://generativelanguage.googleapis.com/v1beta/embeddings

网址采用 gRPC 转码语法。

请求正文

请求正文中包含结构如下的数据:

字段
input value (Value format)

必需。要为其生成嵌入的输入。可以是字符串,也可以是字符串列表。SDK 支持数字列表和数字列表列表,但尚未实现。

model string

必需。要为其生成嵌入的模型。

encodingFormat string

可选。编码格式。必须是“float”或“base64”。

dimensions integer

可选。生成的嵌入的维度大小。

响应正文

如果成功,则响应正文包含一个 GenerateEmbeddingsResponse 实例。

方法:listModels

列出当前可用的模型。

端点

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

网址采用 gRPC 转码语法。

请求正文

请求正文必须为空。

响应正文

如果成功,则响应正文包含一个 SdkListModelsResponse 实例。

方法:chat.completions

在给定聊天记录输入的情况下,从模型生成一组回答。

端点

帖子 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

在给定输入的情况下,从模型生成嵌入。

端点

帖子 https://generativelanguage.googleapis.com/v1beta/embeddings:generate

网址采用 gRPC 转码语法。

请求正文

请求正文中包含结构如下的数据:

字段
input value (Value format)

必需。要为其生成嵌入的输入。可以是字符串,也可以是字符串列表。SDK 支持数字列表和数字列表列表,但尚未实现。

model string

必需。要为其生成嵌入的模型。

encodingFormat string

可选。编码格式。必须是“float”或“base64”。

dimensions integer

可选。生成的嵌入的维度大小。

响应正文

如果成功,则响应正文包含一个 GenerateEmbeddingsResponse 实例。

方法:openai.chat.completions

在给定聊天记录输入的情况下,从模型生成一组回答。

端点

帖子 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

在给定输入的情况下,从模型生成嵌入。

端点

帖子 https://generativelanguage.googleapis.com/v1beta/openai/embeddings

网址采用 gRPC 转码语法。

请求正文

请求正文中包含结构如下的数据:

字段
input value (Value format)

必需。要为其生成嵌入的输入。可以是字符串,也可以是字符串列表。SDK 支持数字列表和数字列表列表,但尚未实现。

model string

必需。要为其生成嵌入的模型。

encodingFormat string

可选。编码格式。必须是“float”或“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)

仅限输出。为输入生成的嵌入向量。可以是浮点数列表,也可以是使用 C 风格布局(与 Numpy 兼容)编码浮点数列表的 base64 字符串。

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 架构。仅在类型为“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

仅限输出。始终为“model”,这是 SDK 所要求的。

created string (int64 format)

仅限输出。模型创建时的 Unix 时间戳(以秒为单位)。

owned_by string

仅限输出。拥有模型的组织。

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

StreamOptions

流式请求的选项。

字段
includeUsage boolean

可选。如果已设置,则在响应中包含使用情况统计信息。

JSON 表示法
{
  "includeUsage": boolean
}