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. Adaptateur SDK : OpenAI Chat Completions (client eino-openai).
OpenAI est le défaut legacy — les déploiements Ongrid plus anciens venaient avec gpt-4o cuit dedans comme cfg.OpenAI.Model (un champ de struct top-level, pas sous cfg.LLM). Le code actuel garde le champ top-level pour la rétro-compat :
// internal/pkg/config/config.go:36
type Config struct {
OpenAI OpenAIConfig
LLM LLMConfig
// ...
}Une install fraîche lit ONGRID_OPENAI_API_KEY depuis ce chemin legacy ; une édition opérateur dans /settings/llm écrit les nouvelles lignes system_settings.llm.openai_*. Le résolveur vérifie les deux, avec les lignes par provider qui gagnent.
Variables d'env
| Variable | Défaut | Notes |
|---|---|---|
ONGRID_OPENAI_API_KEY | — | Vide = provider retiré du catalogue |
ONGRID_OPENAI_MODEL | gpt-5.4 | Bouton legacy single-model ; honoré comme modèle par défaut quand la ligne openai_default_model est vide |
ONGRID_OPENAI_BASE_URL | https://api.openai.com/v1 | Override pour Azure / relais compatibles OpenAI |
Le trip-wire « modèle par défaut »
Il y a DEUX clés de settings liées au modèle pour OpenAI :
openai_model— la ligne legacy single-model. Précède l'expansion par provider.openai_default_model— la nouvelle ligne « modèle par défaut dans le catalogue », matche ce que chaque autre provider utilise.
Le résolveur essaye la nouvelle ligne d'abord, puis retombe sur la clé legacy, puis sur l'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)
}C'est pourquoi un admin qui a écrit à openai_model en 2025 ne perd pas son défaut après un upgrade 2026 — le chemin de lecture l'honore encore.
Catalogue par défaut
Le picker de modèle out-of-box affiche trois modèles GPT — câblés dans 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 soigne les déploiements qui se sont retrouvés avec le défaut configuré dupliqué dans la liste (le bug gpt-5.4 / gpt-5.4 qui a touché certaines installs 2026-05).
Override BaseURL
Les relais compatibles OpenAI (Azure OpenAI, OpenRouter, le mode --api de llama.cpp local, vLLM) fonctionnent tous — mettez ONGRID_OPENAI_BASE_URL à la base racine en /v1 du relais.
# 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/v1Utilisez Custom pour les relais non-Azure que vous utilisez aussi à côté du vrai OpenAI
Le bouton unique ONGRID_OPENAI_BASE_URL signifie que vous ne pouvez pas exécuter OpenAI ET un relais compatible OpenAI simultanément via le slot de provider openai. Utilisez Custom pour le relais à la place — c'est un slot parallèle spécifiquement pour ça.
Faire d'OpenAI le défaut
ONGRID_LLM_DEFAULT_PROVIDER=openaiOu /settings/llm → Default provider.
Particularités
- Function calling — array
tool_callsplat sur les messages assistant. Le dispatcher d'outils d'Ongrid attend cette forme ; les adaptateurs pour d'autres providers traduisent vers elle. - Streaming — le sentinel
data: [DONE]d'OpenAI est consommé par l'adaptateur eino ; vous obtenez un seul*schema.MessagedeGenerateou un StreamReadereinodeStreampeu importe le provider.
Voir aussi
- Custom (compatible OpenAI) — le second slot style-OpenAI pour les relais / serveurs locaux.
- Aperçu des modèles — assemblage du catalogue de providers.
- Routing —
WithProvider("openai").