OriginCoder

通过 OpenAI 兼容网关调用 Gemini API:curl、Python 与 Node 示例

发布于 2026-11-11

如果你搜的是「Gemini API」或「Gemini API 代理」,通常是想在不改动现有代码的前提下调用 Gemini 模型,或者想用同一个 Key 管理多个模型。简短版本是:在 Gemini 分组里创建 Key,把 OpenAI 客户端指向 https://origincoder.com/v1,再传入 Gemini 的模型名。本文用 OriginCoder 这个 AI API 网关演示 curl、Python 和 Node.js 的写法,并说明网关同时提供的 Gemini 原生格式路径。

利益声明:我们运营 OriginCoder,所以我们对网关这条路线有立场。你也可以直接使用 Google 官方的 Gemini API;下面的代码换成官方的地址和密钥照样能对照着跑。内容截至 2026 年 11 月。

该用哪个模型名

请使用控制台模型广场里 Gemini 对应的准确模型名。Gemini 的模型集合和名称会随 Google 的发布变化,我们不在这里列出具体名字,以模型价格页上的实时列表为准。示例里用 your-gemini-model 作占位,请换成从该页复制的名字。

准备工作

  • 一个 OriginCoder 账号并有余额。注册账号。
  • 一个属于 Gemini 模型分组的 API Key。分组决定这个 Key 能调用哪些模型,当前有哪些分组以控制台为准。只属于其他分组的 Key 调用 Gemini 的名字会返回「模型不存在」或权限类错误。
  • 任意 OpenAI 兼容客户端:Python 或 Node.js 的官方 OpenAI SDK,或者直接发 HTTP。

方式一:OpenAI 兼容格式

这是最省事的路线:沿用 Chat Completions 格式,只改 Base URL、Key 和模型名。网关会把请求转换成 Gemini 能理解的格式再转发。

curl

curl https://origincoder.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-gemini-model",
    "messages": [{"role": "user", "content": "用两句话解释什么是互斥锁。"}]
  }'

Python

from openai import OpenAI

client = OpenAI(
    base_url="https://origincoder.com/v1",
    api_key="sk-xxxx",
)

resp = client.chat.completions.create(
    model="your-gemini-model",
    messages=[{"role": "user", "content": "用两句话解释什么是互斥锁。"}],
)
print(resp.choices[0].message.content)

Node.js

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://origincoder.com/v1",
  apiKey: "sk-xxxx",
});

const resp = await client.chat.completions.create({
  model: "your-gemini-model",
  messages: [{ role: "user", content: "用两句话解释什么是互斥锁。" }],
});
console.log(resp.choices[0].message.content);

不要把真实密钥写死在代码里,请从环境变量读取,例如 process.env.ORIGINCODER_API_KEY 或 os.environ["ORIGINCODER_API_KEY"]。

流式输出和 OpenAI API 一样:设置 stream=True(Python)或 stream: true(Node.js),然后遍历返回的数据块。

方式二:Gemini 原生格式

如果你的代码或工具本来就按 Gemini 官方接口写(例如 generateContent),网关也提供 /v1beta 下与官方路径形式一致的接口,包括 /v1beta/models/{model}:generateContent 和 /v1beta/models/{model}:streamGenerateContent?alt=sse。认证方式可以用 x-goog-api-key 请求头、Authorization: Bearer 请求头,或 key 查询参数。

curl "https://origincoder.com/v1beta/models/your-gemini-model:generateContent" \
  -H "x-goog-api-key: sk-xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"role": "user", "parts": [{"text": "用两句话解释什么是互斥锁。"}]}]
  }'

用 Gemini 官方 SDK 时,需要把它的 API 地址改成 https://origincoder.com。不同 SDK 里这个选项的名字不一样,请以所用 SDK 的官方文档为准。原生格式下具体支持哪些方法和参数,也请以实测和控制台为准,不要默认它与官方完全一致。

为什么通过网关调用 Gemini

  • 一个 Key 对接多个厂商。 改个模型名,代码就能在 Gemini、Claude、GPT、DeepSeek 之间切换,共用一份余额。什么情况下这很重要,见 AI 网关是什么。同样的写法对 DeepSeek 见 DeepSeek API 示例。
  • 逐请求记录。 每次调用都会出现在控制台使用记录里,带 token 数和费用。
  • 账单集中在一处, 不用为每个厂商分别开账号。

取舍也是网关的通用问题:你的提示词会经过第三方,网关也可能落后于厂商的最新功能。完整的权衡清单请读 LLM 网关对比。两种设置如何切换提供商、常见差异怎么排查,见 OpenAI 兼容 API 是什么。

常见问题排查

现象 可能原因 处理
401 或「API Key 无效」 Key 错误或被禁用 重新从控制台复制
404 OpenAI 格式的 Base URL 缺少 /v1 或写了两遍;原生格式路径里 :generateContent 写错 OpenAI 客户端使用 https://origincoder.com/v1;原生格式核对路径
「模型不存在」或 403 Key 所在分组不提供该模型,或名字拼错 从模型价格页复制名字,并使用 Gemini 分组的 Key
429 触发速率限制 带退避重试,并在控制台检查该 Key 的限额
余额相关报错 没有余额 在控制台充值

价格与安全

Gemini 在 OriginCoder 上的按 token 价格显示在模型价格页,可能与 Google 官方价格不同,决定前请对比。请阅读服务条款了解你的数据如何处理,并避免发送机密信息。OriginCoder 是独立平台,与 Google 没有任何关联。

全部教程

更多教程