OpenAI (GPT)
TL;DR
ONGRID_OPENAI_API_KEY=sk-...
ONGRID_OPENAI_MODEL=gpt-5.4 # padrão
ONGRID_OPENAI_BASE_URL= # opcional; relay compatível com OpenAIProvider id: openai. Adapter SDK: OpenAI Chat Completions (client eino-openai).
OpenAI é o padrão legado — deployments mais antigos do Ongrid vinham com gpt-4o embutido como cfg.OpenAI.Model (um campo struct top-level, não sob cfg.LLM). O código atual mantém o campo top-level para back compat:
// internal/pkg/config/config.go:36
type Config struct {
OpenAI OpenAIConfig
LLM LLMConfig
// ...
}Uma instalação fresca lê ONGRID_OPENAI_API_KEY desse caminho legado; uma edição do operador em /settings/llm escreve as novas linhas system_settings.llm.openai_*. O resolver checa ambas, com as linhas por-provider vencendo.
Env vars
| Var | Padrão | Notas |
|---|---|---|
ONGRID_OPENAI_API_KEY | — | Vazio = provider removido do catálogo |
ONGRID_OPENAI_MODEL | gpt-5.4 | Knob legado de modelo único; honrado como o modelo padrão quando a linha openai_default_model está vazia |
ONGRID_OPENAI_BASE_URL | https://api.openai.com/v1 | Override para Azure / relays compatíveis com OpenAI |
O trip-wire "default model"
Há DUAS chaves de setting relacionadas a modelo para OpenAI:
openai_model— a linha legada de modelo único. Predata a expansão por-provider.openai_default_model— a nova linha "modelo padrão no catálogo", casa com o que todo outro provider usa.
O resolver tenta a linha nova primeiro, então cai para a chave legada, então para 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)
}Por isso um admin que escreveu em openai_model em 2025 não perde seu default depois de um upgrade em 2026 — o read path ainda o honra.
Catálogo padrão
O picker de modelo de fábrica mostra três modelos GPT — conectado em 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 cura deployments que terminaram com o default configurado duplicado na lista (o bug gpt-5.4 / gpt-5.4 que afetou algumas instalações de 2026-05).
Override de BaseURL
Relays compatíveis com OpenAI (Azure OpenAI, OpenRouter, modo --api local do llama.cpp, vLLM) todos funcionam — defina ONGRID_OPENAI_BASE_URL para a base /v1-rooted do relay.
# Azure OpenAI
ONGRID_OPENAI_BASE_URL=https://<resource>.openai.azure.com/openai/deployments/<deployment>
# OpenRouter
ONGRID_OPENAI_BASE_URL=https://openrouter.ai/api/v1
# vLLM local
ONGRID_OPENAI_BASE_URL=http://localhost:8000/v1Use Custom para relays não-Azure que você usa junto com OpenAI real
O único knob ONGRID_OPENAI_BASE_URL significa que você não pode rodar OpenAI E um relay compatível com OpenAI simultaneamente pelo slot do provider openai. Use Custom para o relay em vez disso — é um slot paralelo especificamente para isso.
Tornando OpenAI o padrão
ONGRID_LLM_DEFAULT_PROVIDER=openaiOu /settings/llm → Default provider.
Pegadinhas
- Function calling — array
tool_callsflat em mensagens assistant. O dispatcher de tool do Ongrid espera esse formato; adapters para outros providers traduzem para ele. - Streaming — o sentinel
data: [DONE]do OpenAI é consumido pelo adapter eino; você ganha um único*schema.MessagedeGenerateou um StreamReadereinodeStreamindependentemente do provider.
Veja também
- Custom (OpenAI-compatible) — o segundo slot estilo OpenAI para relays / servers locais.
- Visão geral dos modelos — montagem do catálogo de provider.
- Roteamento —
WithProvider("openai").