Custom(OpenAI 互換)
TL;DR
ONGRID_CUSTOM_API_KEY=...
ONGRID_CUSTOM_BASE_URL=https://your-relay/v1 # REQUIRED — no upstream default
ONGRID_CUSTOM_MODEL=your-default-modelProvider 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 はプロバイダーをスキップします:
// 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_URL | — | REQUIRED |
ONGRID_CUSTOM_MODEL | — | 毎回送るデフォルトモデル id |
ONGRID_CUSTOM_MODELS | — | カタログリスト(SPA ピッカーが表示するクローズドセット) |
箱から出した状態のデフォルトカタログはありません —— エンドポイントが サポートするものを埋めてください。
事前登録された inner ChatModel
グラフカーネルランタイムは custom プロバイダー id の inner ChatModel を、 キーがまだ設定されていなくても起動時に事前登録します。これが operator が Settings UI に期待する「起動後に設定すれば再起動なしですぐルーティング」 プロパティです:
// 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
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
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-InstructvLLM はデフォルトで API キーを検証しません —— 空でない任意の文字列を 設定してください。
Groq
ONGRID_CUSTOM_API_KEY=gsk_...
ONGRID_CUSTOM_BASE_URL=https://api.groq.com/openai/v1
ONGRID_CUSTOM_MODEL=llama-3.3-70b-versatileMistral
ONGRID_CUSTOM_API_KEY=...
ONGRID_CUSTOM_BASE_URL=https://api.mistral.ai/v1
ONGRID_CUSTOM_MODEL=mistral-large-latestCustom をデフォルトにする
ONGRID_LLM_DEFAULT_PROVIDER=customLLM-resolver バグに注意 —— default_provider が未設定だと、resolver は 最初にソートされたプロバイダー id(anthropic)にフォールバックします。 custom スロット経由で OpenRouter を配線し default_provider="" だと、 チャット呼び出しは OpenRouter ではなく Anthropic のエンドポイント上の Anthropic モデル id に行き —— 認証で失敗します。default_provider=custom を明示的に設定してください。
クセ
- スキーマ忠実度 —— エンドポイントが本物の OpenAI Chat Completions を 話すと仮定します。フィールド(
tool_calls、finish_reason)を剥がす エンドポイントはエージェントの関数呼び出し信頼性を確実に低下させます。 - ストリーミング —— 多くのリレーはまだストリーミングをサポート しません。アダプタは両モードを扱います。
Stream()が"streaming not supported"でエラーになると、チャット UI は自動で buffered に フォールバックします。 - ネイティブレート制限なし —— 企業ゲートウェイは標準 429 として 現れないトークンごとレート制限を課すことが多いです。クロスプロバイダー バジェットガードに
ONGRID_LLM_DAILY_TOKEN_LIMITを設定 —— バジェット を参照。
関連
- OpenAI (GPT) —— 本物の OpenAI エンドポイントか Azure OpenAI 用。
- モデル概要。
- ルーティング。