OpenAI(GPT)
TL;DR
ONGRID_OPENAI_API_KEY=sk-...
ONGRID_OPENAI_MODEL=gpt-5.4 # default
ONGRID_OPENAI_BASE_URL= # optional; OpenAI-compatible relayProvider id:openai。SDK 适配器:OpenAI Chat Completions(eino-openai client)。
OpenAI 是遗留默认 —— 较老的 Ongrid 部署带 gpt-4o 烤进 cfg.OpenAI.Model(顶层结构字段,不在 cfg.LLM 下)。当前代码为向后兼容 保留这个顶层字段:
// internal/pkg/config/config.go:36
type Config struct {
OpenAI OpenAIConfig
LLM LLMConfig
// ...
}新装从这条遗留路径读 ONGRID_OPENAI_API_KEY;运维在 /settings/llm 里编 辑会写新的 system_settings.llm.openai_* 行。resolver 两边都查,按 provider 行优先。
env 变量
| 变量 | 默认 | 备注 |
|---|---|---|
ONGRID_OPENAI_API_KEY | — | 空 = provider 从目录里掉出 |
ONGRID_OPENAI_MODEL | gpt-5.4 | 遗留单模型旋钮;openai_default_model 行为空时被当成默认 model |
ONGRID_OPENAI_BASE_URL | https://api.openai.com/v1 | Azure / OpenAI 兼容中继覆盖 |
"默认模型" 触发线
OpenAI 有两个跟模型相关的 settings key:
openai_model—— 遗留单模型行。早于按 provider 扩展之前。openai_default_model—— 新的 "目录里的默认 model" 行,跟其他每个 provider 用法一致。
resolver 先试新行,再回退到遗留 key,再回退到 env:
// internal/manager/biz/setting/llm.go:181
defaultModel, _, _ := r.svc.Get(ctx, model.CategoryLLM, pk.defaultModel)
if defaultModel == "" && pk.legacyModelKey != "" {
legacy, _, _ := r.svc.Get(ctx, model.CategoryLLM, pk.legacyModelKey)
defaultModel = strings.TrimSpace(legacy)
}这就是为什么 2025 年写过 openai_model 的 admin 在 2026 年升级后默认不会 丢 —— 读路径仍尊重它。
默认目录
开箱模型 picker 显示三个 GPT 模型 —— 在 cmd/ongrid/main.go:499 接好:
Models: dedupeModels(firstNonEmpty(cfg.OpenAI.Model, "gpt-5.4"),
"gpt-5.5", "gpt-5.4", "gpt-5.4-mini"),dedupeModels 治愈那种配置默认在列表里重复的部署(命中部分 2026-05 装机 的 gpt-5.4 / gpt-5.4 bug)。
BaseURL 覆盖
OpenAI 兼容中继(Azure OpenAI、OpenRouter、本地 llama.cpp 的 --api 模式、 vLLM)都能用 —— 把 ONGRID_OPENAI_BASE_URL 设成中继的以 /v1 为根的 base。
# Azure OpenAI
ONGRID_OPENAI_BASE_URL=https://<resource>.openai.azure.com/openai/deployments/<deployment>
# OpenRouter
ONGRID_OPENAI_BASE_URL=https://openrouter.ai/api/v1
# Local vLLM
ONGRID_OPENAI_BASE_URL=http://localhost:8000/v1非 Azure 中继跟真 OpenAI 并用,请用 Custom
单一的 ONGRID_OPENAI_BASE_URL 旋钮意味着你不能在 openai provider 槽里 同时跑 OpenAI 和一个 OpenAI 兼容中继。用 Custom 跑中继 —— 就是为这个并行槽设计的。
把 OpenAI 设为默认
ONGRID_LLM_DEFAULT_PROVIDER=openai或者 /settings/llm → Default provider。
怪癖
- 函数调用 —— assistant 消息上是扁平的
tool_calls数组。Ongrid tool 分发器期望这种形状;其他 provider 的适配器翻译成它。 - 流式 —— OpenAI 的
data: [DONE]哨兵被 eino 适配器消费掉;无论 provider,Generate给你单个*schema.Message,Stream给你einoStreamReader。
另见
- Custom(OpenAI 兼容) —— 给中继 / 本地服务的第二个 OpenAI 风格槽。
- 模型概览 —— provider 目录装配。
- 路由 ——
WithProvider("openai")。