Gemini

Gemini API 与 SDK

通过 Passion8 调用 Gemini API:原生 generateContent curl、OpenAI 兼容 Python SDK 与流式示例,说明 API Key、模型和两种 Base URL 的区别。

Gemini 可以通过原生 Gemini 协议或 OpenAI 兼容协议接入本站。两者都使用 Passion8 Key 与控制台开放的模型,不需要申请 Google 账号或 Google API Key。

#选择协议

客户端地址请求格式
Gemini CLI / 原生 Gemini 请求https://passion8.cc/v1beta/models/{model}:generateContent
Cline OpenAI Compatible / OpenAI SDKhttps://passion8.cc/v1/chat/completions

Google 官方 OpenAI 兼容入口使用自己的路径,但本站兼容入口就是 /v1,不要把 Google 示例地址拼接到本站。

#准备环境变量

macOS / Linux:

export PASSION8_API_KEY="replace-with-your-Passion8-key"
export PASSION8_GEMINI_MODEL="replace-with-an-enabled-Gemini-model-ID"

Windows PowerShell:

$env:PASSION8_API_KEY="replace-with-your-Passion8-key"
$env:PASSION8_GEMINI_MODEL="replace-with-an-enabled-Gemini-model-ID"

从控制台复制完整模型 ID。SDK 中的环境变量是本文约定,不会自动修改 Gemini CLI;CLI 的变量名见 安装配置。

#原生 Gemini:一次最小请求

macOS / Linux 使用:

curl --fail-with-body \
  "https://passion8.cc/v1beta/models/${PASSION8_GEMINI_MODEL}:generateContent" \
  -H "x-goog-api-key: $PASSION8_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contents":[{"role":"user","parts":[{"text":"Reply only OK."}]}]}'

正常文本位于响应的 candidates[].content.parts[].text。如果没有文本,先检查错误正文或 finish reason,不要把空候选结果当成连接成功。

#OpenAI 兼容:Python SDK

在自己的项目虚拟环境中安装 SDK:

python -m pip install --upgrade openai

保存下面代码为 gemini_smoke.py,然后执行 python gemini_smoke.py:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["PASSION8_API_KEY"],
    base_url="https://passion8.cc/v1",
)

response = client.chat.completions.create(
    model=os.environ["PASSION8_GEMINI_MODEL"],
    messages=[{"role": "user", "content": "Reply only OK."}],
)
print(response.choices[0].message.content)

此请求使用 OpenAI 兼容协议,不读取 Gemini CLI 配置。先确认普通请求返回,再测试流式、图片或工具;兼容协议并不保证覆盖所有原生 Gemini 字段。

#流式输出

将请求部分替换为:

stream = client.chat.completions.create(
    model=os.environ["PASSION8_GEMINI_MODEL"],
    messages=[{"role": "user", "content": "Explain this project in three sentences."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)
print()

生产程序需要按实际 SDK 错误类型处理鉴权、限流和超时。401 时检查 Key,429 时查看错误说明和重试指引;不要持续重试错误模型 ID。

#验证结果与功能边界

在 Passion8 控制台核对请求时间、模型和计费。图片、结构化输出、函数调用、搜索与缓存是不同功能,需逐项验证。Google 托管 Grounding / 搜索的官方文档不能直接作为本站每个渠道的功能承诺。

编程插件接入见 VS Code 使用 Gemini,实际任务见 编程工作流。

#API 接入问答

#Gemini 原生 API 和 OpenAI 兼容 API 的 Key 可以一样吗?

两种协议都填写本站 Key,不需要 Google API Key;能否使用同一令牌访问所选模型,仍以令牌权限为准。原生请求用 x-goog-api-key 和 https://passion8.cc/v1beta/models/{model}:generateContent;OpenAI SDK 用 Bearer 鉴权和 https://passion8.cc/v1 Base URL。不要混用路径和请求体。

#用 OpenAI SDK 能直接复制所有 Google 官方示例吗?

不能直接复制原生 contents、parts 请求体到 Chat Completions。OpenAI 兼容请求使用 messages;原生请求使用 contents。图片、工具、搜索和缓存应按当前协议与本站渠道分别确认。

#核对来源

核对日期:2026-10-11。

支持

需要帮助?

接入、计费与模型异常可邮件联系;服务可用性以状态页为准。

也可使用右下角微信 / QQ 客服。