Gemini
TL;DR
bash
ONGRID_GEMINI_API_KEY=...
ONGRID_GEMINI_MODEL=gemini-2.5-pro # default
ONGRID_GEMINI_BASE_URL= # defaults to generativelanguage.googleapis.com OAI modeProvider id:gemini。SDK 适配器:在 Google generativelanguage API 上走 OpenAI 兼容模式。
env 变量
| 变量 | 默认 | 备注 |
|---|---|---|
ONGRID_GEMINI_API_KEY | — | 空 = provider 掉出 |
ONGRID_GEMINI_MODEL | gemini-2.5-pro | 默认 model |
ONGRID_GEMINI_BASE_URL | https://generativelanguage.googleapis.com/v1beta/openai | OpenAI 兼容 endpoint |
ONGRID_GEMINI_MODELS | gemini-3.5-flash,gemini-2.5-pro,gemini-2.5-flash | 目录列表 |
默认目录
gemini-3.5-flash—— 前沿;又快又惊人地便宜。gemini-2.5-pro—— 目录默认;平衡。gemini-2.5-flash—— 便宜那个。
为什么用 OAI 兼容端点
Gemini 有两套 API surface:
- Google 原生
generativelanguage.googleapis.com/v1beta/——generateContent形状,跟 OpenAI 不一样。 - 在
.../v1beta/openai/上的 OpenAI 兼容层 —— 接受 OpenAI 风格的chat/completions请求,返回 OpenAI 形态的响应。
Ongrid 用 #2。兼容层意味着 eino-openai 适配器不用改,tool 调用 / system 消息 / 流式都跟其他每个 provider 槽一样行为。无特殊处理。
如果你要 OAI 兼容 surface 不暴露的 Gemini 独有功能(比如 OAI 形状无法表达 的媒体输入),塞个自定义适配器 —— 那超出支持配置范围。
把 Gemini 设为默认
bash
ONGRID_LLM_DEFAULT_PROVIDER=geminiBaseURL
默认走 generativelanguage.googleapis.com。BaseURL 覆盖用于:
- Vertex AI 代理端点(一般
us-central1-aiplatform...)。 - 公司 Google Cloud 中继。
Settings UI 这字段的 hint 是 "Google generativelanguage.googleapis.com (OpenAI compatibility mode)"。
怪癖
- 区域限制 —— 有些 Gemini 模型不是每个区域都可用。上游 403 在 chat 记录里以常规 API 错误形式出现;遇到就查 provider 的区域矩阵。
- 安全过滤 —— Google 内容过滤可能返空消息加
finishReason: SAFETY。 Ongrid 适配器在 chat 里渲染成明确的 "blocked by safety filter" 消息,而 不是空答案。 - 视觉 —— 图像输入通过 OAI 兼容层用标准
image_urlcontent block 工作; BaseTool surface 还没暴露图像参数。