Gemini OpenAI SDK Google AI Chat Completions 兼容 API

用 OpenAI SDK 通过兼容端点调用 Gemini

通过 Google 的 OpenAI 兼容 base URL 或多供应商网关,使用 OpenAI Python 或 TypeScript SDK 调用 Gemini,并采用当前模型别名。

AveMujica API 2 分钟阅读

你可以通过官方 OpenAI SDK 调用 Gemini:将 base_url 设为 Google 的 OpenAI 兼容端点(或前置 Gemini 的 AI 网关),使用 Gemini API Key 或网关密钥鉴权,并在普通 chat.completions 请求中选择 Gemini 模型 ID。Google 在 Gemini OpenAI 兼容指南 中说明了该路径。已经把客户端形态标准化为 OpenAI 的团队,可以在不重写全部集成的情况下评估 Gemini。

Google 也指出,如果你尚未使用 OpenAI 库,直接调用 Gemini API 才是获取完整功能的推荐默认路径。兼容层是迁移和评估的桥梁,并不意味着 Gemini 拥有每一个 OpenAI 接口。

为什么 OpenAI 兼容能加速 Gemini 试用

许多代码库已经依赖 openai 包、LangChain/OpenAI 聊天模型,或手写 /v1/chat/completions 客户端。若每次实验都强制切到原生 Gemini SDK,会成倍增加鉴权辅助、流式解析与错误处理。兼容层让你可以:

  • 保留同一套请求构造与响应解析
  • 在 OpenAI 形态流量上对 Gemini 做 A/B
  • 把凭证放到网关后,客户端仍然简单
  • 在早期评估中复用同一套 agent 工具 schema

兼容仍是翻译层。Google 将 OpenAI 库支持描述为持续扩展,并且部分接口仍处于测试阶段。在设计评审中承诺功能对等前,请先阅读当前限制章节。

最小客户端配置

直连 Google OpenAI 兼容端点

Google 文档中的 Python 模式使用 Generative Language 的 OpenAI 兼容 base 路径。官方示例当前使用 gemini-3.5-flash:

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ["GEMINI_API_KEY"],
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
)

response = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[
        {"role": "system", "content": "Answer with concrete engineering guidance."},
        {
            "role": "user",
            "content": "When should a team try Gemini through an OpenAI client?",
        },
    ],
)

print(response.choices[0].message.content)

TypeScript:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.GEMINI_API_KEY,
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
});

const response = await client.chat.completions.create({
  model: "gemini-3.5-flash",
  messages: [
    { role: "system", content: "Answer with concrete engineering guidance." },
    {
      role: "user",
      content: "When should a team try Gemini through an OpenAI client?",
    },
  ],
});

console.log(response.choices[0]?.message?.content);

模型 ID 会变化。生产配置应优先参考 Google 的 模型列表,不要写死旧版 Flash 或 Pro 快照字符串。

多供应商产品走网关路径

当 Gemini 只是多个通道之一时,把同一 SDK 指向网关:

client = OpenAI(
    api_key="GATEWAY_API_KEY",
    base_url="https://your-gateway.example.com/v1",
)

response = client.chat.completions.create(
    model="gemini-flash",  # stable alias mapped to gemini-3.5-flash (or successor)
    messages=[{"role": "user", "content": "Draft a checklist for model A/B tests."}],
)

把上游 Gemini 凭证作为通道注册一次,在模型目录中发布别名,并让应用只持有网关密钥。这与 兼容 OpenAI 的 API 网关 所描述的运维模型相同。

稳定别名与原始上游 ID

应用配置应依赖由运维控制的别名:

  1. 发布 gemini-flash、gemini-pro 等名称,或产品专用标签。
  2. 把这些别名映射到当前上游 ID(gemini-3.5-flash、Pro 类 ID 等)。
  3. Google 发布替代模型时,只修改映射。
  4. 每次映射变化后运行一套短回归测试。

这样能减少客户端 PR,并让回滚只需修改配置。将别名纪律与 延迟和成本的模型路由 结合,使 Flash 和 Pro 的放置始终是明确的产品决策。

团队通常先验证的功能

普通聊天与多轮历史

从非流式聊天与固定评估集开始,确认:

  • 系统指令被遵守
  • 多轮上下文被保留
  • max_tokens 的截断行为符合产品预期
  • UI 能处理拒答与空响应

流式

多数聊天产品已消费 OpenAI SDK 流。为 Gemini 开启流式时:

  • 把首 token 时延与总时长分开测量
  • 决定流以错误块结束时 UI 展示什么
  • 避免在已渲染 token 后静默故障转移

早流与中流失败的可靠性规则应写入 LLM API 故障转移策略,而不是客户端临时重试。

工具与函数调用

Gemini 的 OpenAI 兼容接口支持许多智能体工作流所需的工具:

tools = [
    {
        "type": "function",
        "function": {
            "name": "search_docs",
            "description": "Search internal engineering docs",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string"},
                    "limit": {"type": "integer"},
                },
                "required": ["query"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "Find runbooks for gateway failover."}],
    tools=tools,
    tool_choice="auto",
)

在执行任何副作用前,请用白名单验证工具名称,并用 JSON Schema 或 Pydantic 校验参数。可移植性细节和不兼容矩阵位于 跨供应商的可移植工具调用。

思考 / 推理 effort 映射

Gemini 模型可以通过 OpenAI 兼容字段暴露推理配置。不同 Gemini 模型对 reasoning effort 的映射不同;调整模型“思考强度”时,请检查 Google 当前映射表。对于只能设置模型字符串的客户端,网关也可以接受模型别名上的 effort 后缀。应把它们视为运维便利,并记录每个别名对应的 effort。

Embeddings 与相邻端点

Embeddings 和媒体工作流通常需要逐个检查端点。Google 的 OpenAI 兼容页面首先覆盖聊天类示例;部分批处理流程中的文件上传和下载兼容性仍可能要求原生 Google 客户端。不要因为“整个 OpenAI SDK 都能用”的表述,就跳过每个相邻接口各自的 curl 验证。

需要预留预算的限制与错配

请为产品维护明确的不匹配清单,而不是只写一句模糊的“全部测试”:

  • 不支持或被静默丢弃的 OpenAI 参数
  • 多模态部分的编码差异,尤其是图像和音频
  • 工具调用边界情况,例如并行调用、空参数对象和枚举漂移
  • 与 OpenAI 返回不同拒答形态的安全过滤器
  • Google 当前限制中仍列出的测试阶段缺口
  • 限流和错误 header 的差异

如果一个请求在 OpenAI 成功、在 Gemini 返回 400,请逐个移除仅 OpenAI 支持的字段,并记录原始错误体。不要通过捕获所有异常、再在流中切换到另一个供应商来“修复”失败。

避免虚假信心的评估计划

  1. 固定一套 20–50 条提示词的评估集,并在适用时写明预期工具调用名称。
  2. 在当前默认模型与 gemini-3.5-flash(或你的 Pro 别名)上运行该套件。
  3. 把 schema 合法率和必需工具调用成功率与文本质量分开评分。
  4. 测量 p50/p95 延迟和每个成功任务的成本。
  5. 完成这些步骤后再修改路由策略。如果 Gemini 在延迟上获胜、但 schema 合法率较低,只路由能容忍更自由文本的工作流。

改应用代码前的 curl 检查

curl https://your-gateway.example.com/v1/chat/completions \
  -H "Authorization: Bearer $GATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-flash",
    "messages": [
      {"role": "user", "content": "Reply with the single word ready."}
    ]
  }'

直连 Google 测试时,把主机换成 https://generativelanguage.googleapis.com/v1beta/openai/ 并使用 Gemini API Key。共享环境优先网关路径,避免密钥复制到每台笔记本。

把 Gemini 作为通道运营

在多供应商舰队中,Gemini 应像其它通道一样:

  • 凭证保存在服务端
  • Google 更名或下线 ID 时复核模型别名
  • 按团队或产品划分限流与预算
  • 健康与错误率与其它供应商并列可见
  • 默认路由变化时复核价格上下文

这就是 多供应商 LLM 网关 保持可运维的方式:Gemini 是路由目标,不是第二套应用架构。

安全与密钥卫生

  • 永远不要把 Gemini 密钥嵌入浏览器或移动应用。
  • 优先为每个服务使用最小权限的网关作用域密钥。
  • 谨慎记录工具参数;agent 可能把敏感用户数据送入函数调用。
  • 当 agent 能自动调用外部工具时,参考 OWASP LLM 指引;过度代理是产品风险,不只是模型风险。

迁移顺序

  1. 启用 Gemini 通道,并用 curl 验证 /v1/chat/completions。
  2. 把一个非关键服务指向 Gemini 模型别名。
  3. 运行评估套件,比较 schema/工具成功率。
  4. 加入流式客户端。
  5. 加入带服务端参数校验的工具调用 agent。
  6. 在路由策略中决定固定、金丝雀或故障转移位置。
  7. 扩大流量前记录回滚模型别名。

官方来源

最近核对:2026-07-15。锁定生产路由前请确认 Google 文档中的模型 ID、端点路径与限制表。

常见问题

Gemini 的 OpenAI 兼容端点是完整的 OpenAI 克隆吗?

不是。它是面向常见 OpenAI 客户端工作流的兼容层,部分端点、参数和行为仍有差异。请针对依赖的功能阅读 Google 限制章节。如果你尚未投入使用 OpenAI 库,Google 仍建议直接使用原生 Gemini API。

应该通过 Google 的 base URL 还是网关使用 Gemini?

本地快速实验可用 Google base URL。涉及多服务、多团队、多供应商、预算或审计时用网关。

应该从哪个 Gemini 模型开始?

对于延迟敏感的评估,从 Google 文档中的当前 Flash 类 ID 开始(本文撰写时,示例使用 gemini-3.5-flash);更困难的推理或工具工作流使用 Pro 类模型。把它们映射为稳定的网关别名,不要在应用配置中到处写原始 ID。

能否沿用我在 OpenAI 上使用的同一套工具 schema?

初期移植常常可以,但要逐个校验。并行工具调用、严格 JSON 与边界参数编码需要在 Gemini 上显式测试。

首次 Gemini 金丝雀

创建或选择 Gemini 通道,让 OpenAI SDK 通过网关调用 /v1/chat/completions,并运行固定的 20 条提示词评估,其中至少包含一次工具调用。将 schema 成功率和延迟与当前默认模型比较,然后决定 Gemini 在该工作流中应作为默认、金丝雀还是故障转移模型。