将 OpenAI 库与 Gemini Enterprise Agent Platform 搭配使用

Chat Completions API 可作为与 OpenAI 兼容的端点,旨在让您能够使用 Python 和 REST 的 OpenAI 库,更轻松地在 Gemini Enterprise Agent Platform 上与 Gemini 进行交互。如果您已经在使用 OpenAI 库,则可以使用此 API 以低成本的方式在调用 OpenAI 模型和 Agent Platform 托管模型之间切换,以比较输出、成本和可伸缩性,而无需更改现有代码。如果您尚未使用 OpenAI 库,我们建议您使用 Google Gen AI SDK。如需迁移现有 OpenAI SDK 代码以使用 Google Gen AI SDK,请参阅从 OpenAI SDK 迁移到 Google Gen AI SDK

支持的模型

Chat Completions API 同时支持 Gemini 模型和来自 Model Garden 的部分自行部署模型。

Gemini 模型

以下模型支持 Chat Completions API:

点击即可展开支持的型号

来自 Model Garden 的自行部署模型

Hugging Face 文本生成接口 (HF TGI)Agent Platform Model Garden 预构建 vLLM 容器支持 Chat Completions API。不过,并非部署到这些容器中的所有模型都支持 Chat Completions API。下表包含按容器列出的最常用受支持模型:

HF TGI

vLLM

支持的参数

对于 Google 模型,Chat Completions API 支持以下 OpenAI 参数。如需了解每个参数的说明,请参阅 OpenAI 有关创建聊天补全的文档。 针对第三方模型的参数支持因模型而异。如需查看支持的参数,请参阅模型的文档。

messages
  • System message
  • User message:支持 textimage_url 类型。image_url 类型支持以 "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>" 形式采用 Cloud Storage URI 或 base64 编码存储的图片。如需了解如何创建 Cloud Storage 存储桶并向其中上传文件,请参阅探索对象存储
  • Assistant message
  • Tool message
  • Function message:此字段已弃用,但仍受支持,以实现向后兼容性。
model
detail 对于 Gemini 3 之前的模型,detail 字段在所有消息和内容中必须保持一致(它是请求级)。对于 Gemini 3 及更高版本,这对应于部件级 `media_resolution`。如需了解详情,请参阅媒体分辨率
max_completion_tokens max_tokens 的别名。
modalities 支持 audioimagetext
max_tokens
n
frequency_penalty
presence_penalty
reasoning_effort 配置回答所用的时间和 token 数量。
  • low: 1024
  • medium: 8192
  • high: 24576
由于回答中未包含任何想法,因此只能指定 reasoning_effortextra_body.google.thinking_config 中的一个。
response_format
  • json_object:解释为将“application/json”传递给 Gemini API。
  • json_schema。 不支持完全递归的架构。支持 additional_properties
  • text:解释为将“text/plain”传递给 Gemini API。
  • 任何其他 MIME 类型都会按原样传递给模型,例如直接传递“application/json”。
seed 对应于 GenerationConfig.seed
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters:使用 OpenAPI 规范指定参数。该字段与 OpenAPI 参数字段不同,后者被描述为 JSON 架构对象。如需了解 OpenAPI 和 JSON 架构的关键字有何差异,请参阅 OpenAPI 指南
tool_choice
  • none
  • auto
  • required:对应于 FunctionCallingConfig 中的 ANY 模式。
  • validated:对应于 FunctionCallingConfig 中的 VALIDATED 模式。这是 Google 特有的。
web_search_options 对应于 GoogleSearch 工具。不支持任何子选项。
function_call 此字段已弃用,但仍受支持,以实现向后兼容性。
functions 此字段已弃用,但仍受支持,以实现向后兼容性。

如果您传递任何不受支持的参数,系统会忽略该参数。

多模态输入参数

Chat Completions API 支持部分多模态输入。

input_audio
  • data: 任何 URI 或有效的 blob 格式。我们支持所有 blob 类型,包括图片、音频和视频。GenerateContent 支持的任何内容(HTTP、Cloud Storage 等)均受支持。
  • format: OpenAI 同时支持 wav (audio/wav) 和 mp3 (audio/mp3)。使用 Gemini 时,支持所有有效的 MIME 类型。
image_url
  • data:input_audio 类似,支持任何 URI 或有效的 blob 格式。
    请注意,作为网址的 image_url 将默认采用 image/* MIME 类型,而作为 blob 数据的 image_url 可用作任何多模态输入。
  • detail:媒体分辨率类似,此参数用于确定请求中每张图片的最大token数。请注意,虽然 OpenAI 的字段是按图片设置的,但 Gemini 会在整个请求中强制执行相同的细节级别,并且在一个请求中传递多个细节类型会引发错误。

一般来说,data 参数可以是 URI,也可以是 MIME 类型和 base64 编码字节的组合,格式为 "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>"。如需查看 MIME 类型的完整列表,请参阅 GenerateContent。 如需详细了解 OpenAI 的 base64 编码,请参阅其文档

如需了解用法,请参阅我们的多模态输入示例

Gemini 专有参数

Gemini 支持多项 OpenAI 模型不支持的功能。 这些功能仍可以作为参数传入,但必须包含在 extra_contentextra_body 中,否则会被忽略。

extra_body 功能

添加一个 google 字段,用于包含任何 Gemini 特有的 extra_body 功能。

{
  ...,
  "extra_body": {
     "google": {
       ...,
       // Add extra_body features here.
     }
   }
}
safety_settings 这对应于 Gemini SafetySetting
cached_content 这对应于 Gemini generateContent.cached_content 字段。
thinking_config 这对应于 Gemini GenerationConfig.ThinkingConfig
thought_tag_marker 用于将模型的想法与回答分开,适用于提供思考功能的模型。
如果未指定,则不会返回模型想法周围的任何标记。如果存在,后续查询将剥离思路标记,并根据上下文适当标记思路。这有助于为后续查询保留适当的上下文。
stream_function_call_arguments 以 JSON 片段的形式将函数调用实参流式传输回。如需了解详情,请参阅 对函数调用参数进行流式传输
tools 指定与 `GenerateContent` 类似的工具。如需了解详情,请参阅 Tool
media_resolution 指定类似于 `GenerateContent` 的请求级媒体分辨率。如需了解详情,请参阅 MediaResolution

extra_content 个功能

extra_content 可让您指定不应被忽略的 Gemini 特有内容。

添加一个 google 字段,用于包含任何 Gemini 特有的 extra_content 功能。

{
  ...,
  "extra_content": {
     "google": {
       ...,
       // Add extra_content features here.
     }
   }
}
thought 此字段明确标记某个字段是否为思考内容,并且优先级高于 thought_tag_marker。它有助于区分思考过程中的不同步骤,特别是在中间步骤可能会被误认为是最终回答的工具使用场景中。通过将输入的特定部分标记为思考,您可以引导模型将其视为内部推理,而不是面向用户的回答。
thought_signature 一个字节字段,提供思考签名以验证模型返回的思考内容。此字段与布尔值字段 thought 不同。如需了解详情,请参阅思考签名
parts 特定于工具消息,用于将多模态函数响应部分传递回模型。 如需了解详情,请参阅 FunctionResponsePart多模态函数响应

后续步骤