将 OpenAI 库与 Vertex AI 搭配使用

本文档展示了如何使用与 OpenAI 兼容的 Chat Completions API 与 Vertex AI 模型进行交互。本文档介绍了以下主题:

Chat Completions API 是一个与 OpenAI 兼容的端点,可让您使用 OpenAI Python 和 REST 库与 Vertex AI 上的 Gemini 进行交互。如果您已经在使用 OpenAI 库,则可以使用此 API 在 OpenAI 模型和 Vertex AI 托管模型之间切换,以比较输出、成本和可伸缩性,而只需对现有代码进行极少的更改。如果您不使用 OpenAI 库,建议您使用 Google Gen AI SDK

支持的模型

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

Gemini 模型

Chat Completions API 支持以下 Gemini 模型:

来自 Model Garden 的自行部署模型

Hugging Face 文本生成接口 (HF TGI)Vertex AI 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 存储桶并向其中上传文件,请参阅探索对象存储。 不支持 detail 选项。
  • Assistant message
  • Tool message
  • Function message:此字段已弃用,但仍受支持,以实现向后兼容性。
model
max_completion_tokens max_tokens 的别名。
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 个功能

如需使用特定于 Gemini 的 extra_body 功能,请将其纳入 google 字段中。

{
  ...,
  "extra_body": {
     "google": {
       ...,
       // Add extra_body features here.
     }
   }
}
safety_settings 这对应于 Gemini 的 SafetySetting
cached_content 这对应于 Gemini 的 GenerateContentRequest.cached_content
thinking_config 这对应于 Gemini 的 GenerationConfig.ThinkingConfig
thought_tag_marker 用于将模型的想法与回答分开,适用于提供“思考”功能的模型。
如果未指定,则不会在模型想法周围返回任何标记。如果存在,后续查询将剥离思路标记,并根据上下文适当标记思路。这有助于为后续查询保留适当的上下文。

extra_part 个功能

您可以使用 extra_part 字段为每个 Part 指定其他设置。如需使用特定于 Gemini 的 extra_part 功能,请将其纳入 google 字段中。

{
  ...,
  "extra_part": {
     "google": {
       ...,
       // Add extra_part features here.
     }
   }
}
extra_content 用于添加不应忽略的 Gemini 特定内容的字段。
thought 用于明确标记某个字段是否为想法(并优先于 thought_tag_marker)。应使用此参数来指定工具调用是否为想法的一部分。

后续步骤