Skip to content

Custom(OpenAI 互換)

TL;DR

bash
ONGRID_CUSTOM_API_KEY=...
ONGRID_CUSTOM_BASE_URL=https://your-relay/v1     # REQUIRED — no upstream default
ONGRID_CUSTOM_MODEL=your-default-model

Provider id:custom。SDK アダプタ:eino-openai(OpenAI Chat Completions 互換の任意のエンドポイント)。

Custom スロットは Settings UI の 7 番目のプロバイダーカードです。ワイヤー レベルで OpenAI 互換ながら、組み込み済みの 6 プロバイダーのいずれでも ないものすべてに存在します:

  • セルフホストの vLLM / TGI / llama.cpp。
  • OpenRouter、Together、Fireworks、Anyscale、Groq、Mistral。
  • 社内コーポレートモデルゲートウェイ。
  • Ongrid が専用スロットを追加する前に出荷される新プロバイダー。

ベース URL ガード

Custom スロットは明示的なベース URL を 必要 とします。これがないと 基底 SDK は OpenAI のデフォルト(https://api.openai.com/v1)にサイレント にフォールバックし、operator の custom キーを誤ったホストに送ります。 その場合 resolver はプロバイダーをスキップします:

go
// internal/manager/biz/setting/llm.go:155
if pk.id == model.LLMProviderCustom && strings.TrimSpace(baseURL) == "" {
    continue
}

env または Settings UI で BaseURL を指定してください。さもなくばプロバ イダーはカタログに現れません。

環境変数

Varデフォルト注記
ONGRID_CUSTOM_API_KEY空 = プロバイダー除外
ONGRID_CUSTOM_BASE_URLREQUIRED
ONGRID_CUSTOM_MODEL毎回送るデフォルトモデル id
ONGRID_CUSTOM_MODELSカタログリスト(SPA ピッカーが表示するクローズドセット)

箱から出した状態のデフォルトカタログはありません —— エンドポイントが サポートするものを埋めてください。

事前登録された inner ChatModel

グラフカーネルランタイムは custom プロバイダー id の inner ChatModel を、 キーがまだ設定されていなくても起動時に事前登録します。これが operator が Settings UI に期待する「起動後に設定すれば再起動なしですぐルーティング」 プロパティです:

go
// cmd/ongrid/main.go:2457
for _, id := range []string{
    llm.ProviderOpenAI, llm.ProviderAnthropic, llm.ProviderZhipu,
    llm.ProviderGemini, llm.ProviderDeepSeek, llm.ProviderKimi, llm.ProviderCustom,
} {
    if _, ok := innerModels[id]; !ok {
        addInner(id, "") // model supplied per-call (picker / DefaultResolver)
    }
}

inner は起動時に存在し、per-call のキー / baseURL は LLM-settings resolver で動的に解決されます。未設定のプロバイダーは決してピッカーに 届きません(/v1/aiops/models カタログが ResolveProviders でゲート) ので、inner は実際に必要になるまで無害です。

設定例

OpenRouter

bash
ONGRID_CUSTOM_API_KEY=sk-or-v1-...
ONGRID_CUSTOM_BASE_URL=https://openrouter.ai/api/v1
ONGRID_CUSTOM_MODEL=anthropic/claude-sonnet-4
ONGRID_CUSTOM_MODELS=anthropic/claude-sonnet-4,anthropic/claude-opus-4,meta-llama/llama-3.3-70b

ローカル vLLM

bash
ONGRID_CUSTOM_API_KEY=sk-not-checked-by-vllm
ONGRID_CUSTOM_BASE_URL=http://vllm.internal:8000/v1
ONGRID_CUSTOM_MODEL=Qwen2.5-72B-Instruct
ONGRID_CUSTOM_MODELS=Qwen2.5-72B-Instruct

vLLM はデフォルトで API キーを検証しません —— 空でない任意の文字列を 設定してください。

Groq

bash
ONGRID_CUSTOM_API_KEY=gsk_...
ONGRID_CUSTOM_BASE_URL=https://api.groq.com/openai/v1
ONGRID_CUSTOM_MODEL=llama-3.3-70b-versatile

Mistral

bash
ONGRID_CUSTOM_API_KEY=...
ONGRID_CUSTOM_BASE_URL=https://api.mistral.ai/v1
ONGRID_CUSTOM_MODEL=mistral-large-latest

Custom をデフォルトにする

bash
ONGRID_LLM_DEFAULT_PROVIDER=custom

LLM-resolver バグに注意 —— default_provider が未設定だと、resolver は 最初にソートされたプロバイダー id(anthropic)にフォールバックします。 custom スロット経由で OpenRouter を配線し default_provider="" だと、 チャット呼び出しは OpenRouter ではなく Anthropic のエンドポイント上の Anthropic モデル id に行き —— 認証で失敗します。default_provider=custom を明示的に設定してください。

クセ

  • スキーマ忠実度 —— エンドポイントが本物の OpenAI Chat Completions を 話すと仮定します。フィールド(tool_callsfinish_reason)を剥がす エンドポイントはエージェントの関数呼び出し信頼性を確実に低下させます。
  • ストリーミング —— 多くのリレーはまだストリーミングをサポート しません。アダプタは両モードを扱います。Stream()"streaming not supported" でエラーになると、チャット UI は自動で buffered に フォールバックします。
  • ネイティブレート制限なし —— 企業ゲートウェイは標準 429 として 現れないトークンごとレート制限を課すことが多いです。クロスプロバイダー バジェットガードに ONGRID_LLM_DAILY_TOKEN_LIMIT を設定 —— バジェット を参照。

関連