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-Adapter: OpenAI Chat Completions (eino-openai-Client).

OpenAI ist der Legacy-Default — ältere Ongrid-Bereitstellungen kamen mit gpt-4o eingebackenen als cfg.OpenAI.Model (ein Top-Level-Struct-Feld, nicht unter cfg.LLM). Der aktuelle Code behält das Top-Level-Feld für Rückwärtskompatibilität:

go
// internal/pkg/config/config.go:36
type Config struct {
    OpenAI         OpenAIConfig
    LLM            LLMConfig
    // ...
}

Eine frische Installation liest ONGRID_OPENAI_API_KEY aus diesem Legacy-Pfad; ein Operator-Edit in /settings/llm schreibt die neuen system_settings.llm.openai_*-Zeilen. Der Resolver prüft beide, mit Per-Provider-Zeilen, die gewinnen.

Umgebungsvariablen

VarDefaultNotizen
ONGRID_OPENAI_API_KEYLeer = Provider aus dem Katalog gedroppt
ONGRID_OPENAI_MODELgpt-5.4Legacy-Single-Model-Knopf; geehrt als Standardmodell, wenn die openai_default_model-Zeile leer ist
ONGRID_OPENAI_BASE_URLhttps://api.openai.com/v1Override für Azure / OpenAI-kompatible Relays

Die „Default-Modell"-Stolperfalle

Es gibt ZWEI modell-bezogene Settings-Keys für OpenAI:

  • openai_model — die Legacy-Single-Modell-Zeile. Geht der Per-Provider-Erweiterung voraus.
  • openai_default_model — die neue „Default-Modell im Katalog"-Zeile, passt zu dem, was jeder andere Provider verwendet.

Der Resolver probiert zuerst die neue Zeile, dann fällt er auf den Legacy-Key zurück, dann auf 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)
}

Deshalb verliert ein Admin, der 2025 nach openai_model schrieb, seinen Default nach einem 2026-Upgrade nicht — der Lesepfad ehrt es weiterhin.

Standardkatalog

Der Out-of-Box-Modell-Picker zeigt drei GPT-Modelle — verdrahtet in 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 heilt Bereitstellungen, die mit dem konfigurierten Default in der Liste dupliziert endeten (der gpt-5.4 / gpt-5.4-Bug, der einige 2026-05-Installationen traf).

BaseURL-Override

OpenAI-kompatible Relays (Azure OpenAI, OpenRouter, llama.cpps --api-Modus lokal, vLLM) alle funktionieren — setzen Sie ONGRID_OPENAI_BASE_URL auf den /v1-gerooten Base des Relays.

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

Verwenden Sie Custom für Nicht-Azure-Relays, die Sie auch neben echtem OpenAI verwenden

Der einzelne ONGRID_OPENAI_BASE_URL-Knopf bedeutet, Sie können OpenAI UND ein OpenAI-kompatibles Relay nicht gleichzeitig durch den openai-Provider-Slot laufen lassen. Verwenden Sie Custom für das Relay stattdessen — es ist ein paralleler Slot speziell dafür.

OpenAI zum Default machen

bash
ONGRID_LLM_DEFAULT_PROVIDER=openai

Oder /settings/llm → Default-Provider.

Eigenheiten

  • Function-Calling — Flat-tool_calls-Array auf Assistant-Messages. Der Ongrid-Tool-Dispatcher erwartet diese Form; Adapter für andere Provider übersetzen dazu.
  • Streaming — OpenAIs data: [DONE]-Sentinel wird vom eino-Adapter konsumiert; Sie bekommen eine einzelne *schema.Message von Generate oder einen eino-StreamReader von Stream, unabhängig vom Provider.

Siehe auch