返回全部文章
指南

用 OpenAI SDK 调 Gemini API:base_url、模型名和 Gemini 3.5 Flash 价格怎么配

2026年6月14日 · 10 分钟阅读 · Claude / GPT / Gemini

米白背景上的开发者 API 迁移示意图:左侧炭灰色 OpenAI SDK 代码卡片,中间赤陶色 base_url 开关,右侧 Gemini 3.5 Flash 模型卡片,下方用小型价格标签标出输入 $1.50/M、输出 $9.00/M,整体

Google 的 OpenAI 兼容文档在 2026-05-18 更新,直接写明:Gemini 模型可以通过 OpenAI Python / JavaScript SDK 调用,核心只改三处:api_keybase_urlmodelGoogle)。今天是 2026-06-14,价格页给 gemini-3.5-flash 的标准付费层标价是:输入 $1.50 / 100 万 token,输出含思考 token $9.00 / 100 万 tokenGoogle Pricing)。

我的判断很简单:如果你已有 OpenAI SDK 项目,先别重写。先把 Gemini 当成一个 OpenAI-compatible backend 接进去,跑通成本、流式、工具调用,再决定要不要迁到原生 Gemini SDK。

米白背景的迁移前后对比图,左侧为 OpenAI SDK 配置卡片,右侧为 Gemini 配置卡片,中间只高亮 api_key、base_url、model 三行变化,赤陶色箭头连接两侧

1. 最小改动:只换 endpoint 和模型名

Python 先装官方 OpenAI SDK:

pip install openai
export GEMINI_API_KEY="你的 Gemini API Key"

然后把客户端改成这样:

import os
from openai import OpenAI

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

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    reasoning_effort="low",
    messages=[
        {"role": "system", "content": "你是一个直接、准确的代码助手。"},
        {"role": "user", "content": "用三句话解释 SSE 流式输出。"},
    ],
)

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

chat.completions.createmessagestools 这些形状仍是 OpenAI Chat Completions 风格;OpenAI 自家 API 参考也仍把 Chat Completions 定义为基于消息列表生成回复的接口(OpenAI)。所以迁移重点不是业务代码,而是配置层。

2. base_url 别少最后的斜杠

Google 文档里的地址是:

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

少写最后的 /,某些客户端拼路径时会出怪问题。生产代码里建议抽成环境变量:

OPENAI_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/"
OPENAI_API_KEY="$GEMINI_API_KEY"
OPENAI_MODEL="gemini-3.5-flash"

如果你想省掉多厂商账号、额度和账单的切换,onehop 是更省事的路径:把 base_url 改成 https://api.onehop.ai/v1,同一套 OpenAI / Anthropic 兼容接口里调用 Claude、GPT、Gemini。新账号送 $10,无需绑卡;适合先做 PoC,再看是否直连官方。

from openai import OpenAI

client = OpenAI(
    api_key="你的 onehop key",
    base_url="https://api.onehop.ai/v1",
)

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "给我一个 FastAPI 健康检查接口"}],
)
print(resp.choices[0].message.content)

入口放这里:在 onehop 上调用 Claude 等模型注册即送 $10 体验额度

3. 价格先按输出 token 算

gemini-3.5-flash 标准层不是“便宜到不用管”。输出价是输入价的 6 倍:

模型 层级 输入 / 100 万 token 输出 / 100 万 token
gemini-3.5-flash 标准 $1.50 $9.00
gemini-3.5-flash 批量 $0.75 $4.50
gemini-3.5-flash Flex $0.75 $4.50

批量和 Flex 的数字也来自同一张 Google 价格页。写应用时要限制 max_completion_tokens,尤其是总结、代码生成、Agent 工具循环。输入长一点还能缓存,输出失控就是实打实烧钱。

紧凑柱状图,横轴为标准、批量、Flex 三种层级,纵轴为美元每百万 token;每组两根柱,输入为炭灰色,输出为赤陶色,突出输出价格更高

4. reasoning_effort 怎么映射

Google 兼容层接受 OpenAI 风格的 reasoning_effort,并映射到 Gemini 的 thinking 配置(Google):

reasoning_effort Gemini 3 Flash thinking_level
minimal minimal
low low
medium medium
high high

不传时用模型默认值。Google 文档还写了一个关键限制:Gemini 3 不能关闭 thinking;none 只适用于部分 2.5 模型。我的建议是线上默认 low,只有复杂规划、长链路工具调用才升到 mediumhigh。因为输出价格包含思考 token,推理强度不是免费旋钮。

5. 流式和函数调用:能用,但要防空块

流式调用保持 OpenAI SDK 写法:

stream = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "写一个 Redis 缓存封装"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

这里的 if delta 很实用。流式响应里可能有角色、工具调用或空增量,不要假设每个 chunk 都有文本。

函数调用也走 toolstool_choice="auto"。Google 兼容文档给了天气函数示例,并确认 Gemini API 支持 function calling(Google)。真实项目里别只打印模型返回;要检查 message.tool_calls,执行本地函数,再把工具结果作为下一轮消息喂回模型。

结论:迁 Gemini 最小成本就是三行配置;真正要盯的是输出 token、thinking 强度、流式空 chunk 和工具调用闭环。如果你只是想快速把 Claude、GPT、Gemini 放进同一个 OpenAI SDK 项目,直接用 onehop 的统一入口会省不少配置时间:在 onehop 上调用 Claude 等模型,或者先领 注册即送 $10 体验额度