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 adapter: OpenAI Chat Completions (eino-openai клиент).
OpenAI — legacy default — более старые развёртывания Ongrid пришли с gpt-4o, запечённым как cfg.OpenAI.Model (top-level struct поле, не под cfg.LLM). Текущий код держит top-level поле для backward compat:
// internal/pkg/config/config.go:36
type Config struct {
OpenAI OpenAIConfig
LLM LLMConfig
// ...
}Свежая установка читает ONGRID_OPENAI_API_KEY с этого legacy-пути; operator-правка в /settings/llm пишет новые строки system_settings.llm.openai_*. Resolver проверяет оба, с per-provider строками побеждающими.
Env-переменные
| Var | По умолчанию | Заметки |
|---|---|---|
ONGRID_OPENAI_API_KEY | — | Пусто = provider выпадает из каталога |
ONGRID_OPENAI_MODEL | gpt-5.4 | Legacy single-model ручка; учитывается как дефолтная модель, когда строка openai_default_model пуста |
ONGRID_OPENAI_BASE_URL | https://api.openai.com/v1 | Override для Azure / OpenAI-совместимых relays |
«Default model» trip-wire
Есть ДВА связанных с моделью settings-ключа для OpenAI:
openai_model— legacy single-model row. Предшествует per-provider расширению.openai_default_model— новая «default model in the catalog» строка, соответствует тому, что использует каждый другой provider.
Resolver пробует новую строку сначала, потом fall back'ит на legacy- ключ, потом на 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)
}Поэтому админ, который писал в openai_model в 2025, не теряет свой дефолт после 2026 апгрейда — read-путь всё ещё его учитывает.
Дефолтный каталог
Out-of-box model 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 лечит развёртывания, которые закончили с сконфигурированным дефолтом, дублированным в списке (баг gpt-5.4 / gpt-5.4, который попал в некоторые 2026-05 установки).
BaseURL override
OpenAI-совместимые relays (Azure OpenAI, OpenRouter, локальный llama.cpp --api режим, vLLM) — все работают — поставьте ONGRID_OPENAI_BASE_URL на /v1-rooted base 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
# Local vLLM
ONGRID_OPENAI_BASE_URL=http://localhost:8000/v1Используйте Custom для не-Azure relays, которые вы также используете
наряду с реальным OpenAI Единая ручка ONGRID_OPENAI_BASE_URL означает, что вы не можете запускать OpenAI И OpenAI-совместимый relay одновременно через слот provider'а openai. Используйте Custom для relay вместо этого — это параллельный slot специально для этого.
Сделать OpenAI дефолтным
ONGRID_LLM_DEFAULT_PROVIDER=openaiИли /settings/llm → Default provider.
Особенности
- Function calling — flat
tool_callsмассив в assistant- сообщениях. Ongrid tool-dispatcher ожидает эту форму; адаптеры для других providers переводят в неё. - Streaming — sentinel
data: [DONE]OpenAI потребляется eino-адаптером; вы получаете единый*schema.MessageизGenerateилиeinoStreamReader изStreamнезависимо от provider.
См. также
- Custom (OpenAI-совместимый) — второй OpenAI-style slot для relays / локальных серверов.
- Обзор моделей — сборка provider-каталога.
- Routing —
WithProvider("openai").