Skip to content

OpenAI(GPT)

TL;DR

bash
ONGRID_OPENAI_API_KEY=sk-...
ONGRID_OPENAI_MODEL=gpt-5.4                 # default
ONGRID_OPENAI_BASE_URL=                     # optional; OpenAI-compatible relay

Provider id:openai。SDK 适配器:OpenAI Chat Completions(eino-openai client)。

OpenAI 是遗留默认 —— 较老的 Ongrid 部署带 gpt-4o 烤进 cfg.OpenAI.Model(顶层结构字段,不在 cfg.LLM 下)。当前代码为向后兼容 保留这个顶层字段:

go
// 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_MODELgpt-5.4遗留单模型旋钮;openai_default_model 行为空时被当成默认 model
ONGRID_OPENAI_BASE_URLhttps://api.openai.com/v1Azure / OpenAI 兼容中继覆盖

"默认模型" 触发线

OpenAI 有两个跟模型相关的 settings key:

  • openai_model —— 遗留单模型行。早于按 provider 扩展之前。
  • openai_default_model —— 新的 "目录里的默认 model" 行,跟其他每个 provider 用法一致。

resolver 先试新行,再回退到遗留 key,再回退到 env:

go
// 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 接好:

go
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。

bash
# 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 设为默认

bash
ONGRID_LLM_DEFAULT_PROVIDER=openai

或者 /settings/llm → Default provider。

怪癖

  • 函数调用 —— assistant 消息上是扁平的 tool_calls 数组。Ongrid tool 分发器期望这种形状;其他 provider 的适配器翻译成它。
  • 流式 —— OpenAI 的 data: [DONE] 哨兵被 eino 适配器消费掉;无论 provider, Generate 给你单个 *schema.MessageStream 给你 eino StreamReader。

另见