カスタムプロバイダー
ZeroClaw に同梱されていないプロバイダーを追加する3つの方法:
customスロットを使用します。 既存の正規スロットでカバーされていない OpenAI 互換エンドポイントに使用します。- ファーストクラスのローカルサーバースロットを使用する(
lmstudio、llamacpp、sglang、vllm、osaurus、litellm)。適切なデフォルト値を備えたシンラッパーです。 - Rustで**
ModelProviderトレイトを実装**します。OpenAI互換ではないものすべてに対して使用します。
OpenAI互換エンドポイント: custom スロットを使用します
サービスが OpenAI の chat-completions に対応している場合、これは設定のみの変更です。custom スロットには uri が必要です(このファミリのエンドポイント enum にはデフォルト値がありません)。エージェントの model_provider から参照してください。
これは groq、mistral、xai、およびカタログに独自の正規スロットを持つ他のすべてのベンダーで使用されているものと同じ OpenAiCompatibleModelProvider ランタイム実装です。違いは使用するファミリースロットにあります。custom はベンダースロットで表現されないエンドポイント向けの汎用スロットです。
画像を含むツール結果を受け付けられないゲートウェイでは、周囲のツールテキストを保持したまま、それらのペイロードを省略します。
[providers.models.custom.gateway]
uri = "https://gateway.example.com/v1"
model = "my-model"
tool_result_image_policy = "omit"
ファーストクラスのローカル推論サーバー
ZeroClawは、人気のあるローカル推論スタック向けの標準スロットを同梱しています。これらはすべて内部的にOpenAI互換ですが、デフォルトのuri値があらかじめ適用されているため、通常はuriを完全に省略できます。
llama.cpp: スロット llamacpp
sh
llama-server -hf ggml-org/gpt-oss-20b-GGUF --jinja -c 133000 --host 127.0.0.1 --port 8033
オプションフィールドは、任意の compat-slot ファミリー(llamacpp を含む)に適用されます。スキーマから導出された完全なセットは次のとおりです。
api_key 🔑
この model_provider のシークレット API トークン。model_provider のダッシュボード(OpenAI platform、Anthropic console、OpenRouter keys ページなど)から取得します。可能な場合は OS キーリング経由で保存され、config.toml に直接コミットしないでください。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.api_key フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.api_key フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.api_key # マスクされた入力、暗号化して保存
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__api_key=
chat_template_kwargs
OpenAI互換プロバイダーのリクエスト本文で、トップレベルの chat_template_kwargs オブジェクトとして任意のキーと値のペアをそのまま転送します。vLLM、SGLang、llama.cpp などのチャットテンプレート対応バックエンドがこれを使用し、他のフィールドでは公開されていない動作を制御するモデルファミリー固有のテンプレート変数を渡します。JSON オブジェクト(TOML インラインテーブル)である必要があり、オブジェクト以外の値は警告とともに無視されます。例(Qwen3 の思考抑制):chat_template_kwargs = { enable_thinking = false }
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて、providers.models.custom.<alias>.chat_template_kwargs フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.chat_template_kwargs フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.chat_template_kwargs <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__chat_template_kwargs=
context_window
このモデルのコンテキストウィンドウサイズ(最大入力トークン数)。利用可能な場合、セットアップ時にプロバイダーの /models エンドポイントから自動入力されます。カスタムエンドポイントの場合や自動検出が失敗した場合は手動で上書きします。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.context_window フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.context_window フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.context_window <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__context_window=
extra_headers 🔑
すべてのリクエストに付与される追加のHTTPヘッダー。ニッチな用途: 認証ブリッジ、企業プロキシ、またはトレーシングヘッダーを要求するカスタムゲートウェイで使用されます。ほとんどのユーザーが触れることはありません。必要な場合はconfig.tomlを直接編集してください。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.extra_headers フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.extra_headers フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.extra_headers # マスクされた入力、暗号化して保存
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__extra_headers=
fallback
このエイリアスのすべてのモデルが失敗したときに試行する、他のプロバイダーエイリアスの順序付きリストです。各エントリは providers.models 内のドット区切りの <type>.<alias> 参照であり、独自の認証情報、エンドポイント、モデルで解決されます。フォールバックがこのエイリアスのキーを継承することはありません。走査は深さ優先で行われます。まずこのエイリアスのモデルが使い尽くされ、次に各フォールバックエイリアスが順番に降下されます(それぞれ独自の fallback_models と fallback を適用します)。空の場合、プロバイダーレベルのフォールバックはありません。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて、providers.models.custom.<alias>.fallback フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.fallback フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.fallback <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__fallback=
fallback_models
fallback エイリアスにフォールバックする前に、このプロバイダーで試行する代替モデルの順序付きリスト。プライマリの model と同じエンドポイント、キー、ヘッダーを使用します。変更されるのはモデル識別子のみです。プロバイダーが(例えばより小さい、または古いバリアントの)バックアップモデルを提供しており、プロバイダーを完全に離れる前に試行すべき場合に使用します。空の場合は model のみが試行されます。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.fallback_models フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.fallback_models フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.fallback_models <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__fallback_models=
kind
このプロファイルでインスタンス化するプロバイダー実装です。正規の型付きスロットを互換性のある実装で実行する場合に使用します。例: [providers.models.openai.proxy] kind = "openai-compatible"。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて、providers.models.custom.<alias>.kind フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.kind フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.kind <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__kind=
live_pricing
このプロバイダーのモデルのライブトークン価格を、プロバイダー自身のOpenAI互換の /models リストから取得し(ゲートウェイがその価格の信頼できる情報源です)、オペレーターが [cost.rates] / pricing で価格を設定していないモデルのコスト追跡レートを補完します。ゲートウェイが価格を設定していないモデル(または kilocli のようなサブプロセスゲートウェイなど、HTTP /models リスト自体が存在しないプロバイダー)は、公開されている models.dev カタログにフォールバックします。設定されたレートが常に優先され、ライブ価格は不足分を補完するだけです。バックグラウンドタスクが価格スナップショットを1時間ごとに更新します。コスト記録パスはキャッシュされたスナップショットを読み取り、ネットワークでブロックすることはありません。デフォルトは false:オフの場合、取得は行われず、この機能なしでビルドした場合と同一の動作になります。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.live_pricing フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.live_pricing フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.live_pricing <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__live_pricing=
max_tokens
応答の長さの上限をトークン数で指定するハードキャップです。ほとんどのモデルにはすでに適切な組み込みの上限が設定されているため、コストやレイテンシの理由で長い出力を切り詰める必要が特にない限り、未設定のままにしてください。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて providers.models.custom.<alias>.max_tokens フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.max_tokens フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.max_tokens <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__max_tokens=
merge_system_into_user
ModelProvider 固有の癖: システムプロンプトを別の system ロールとして送信せず、最初のユーザーメッセージに統合します。単独の system ロールを拒否する(または正しく処理できない)モデル、例えば一部の古い Mistral バリアントでのみ必要です。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.merge_system_into_user フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.merge_system_into_user フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.merge_system_into_user <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__merge_system_into_user=
model
各リクエストで送信するモデル識別子: model_provider のカタログにある ID 文字列(例: gpt-4o、claude-sonnet-4-5、llama-3.3-70b)。このアカウントで model_provider が実際に提供しているモデルと一致する必要があります。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.model フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.model フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.model <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__model=
native_tools
ネイティブツール呼び出しに関するプロバイダーのデフォルト設定をオーバーライドします。None(デフォルト)はプロバイダーの組み込み設定を尊重します。Some(true) はネイティブツール呼び出しを強制的に有効化し、Some(false) はテキストフォールバックを強制します。現在はGroqファクトリーのみが参照しており、llamaファミリーのGroqモデルがネイティブツール呼び出しをHTTP 400で拒否するため、デフォルトでテキストフォールバックになっています。native_tools = true を設定すると、対応するGroqモデルでネイティブツール呼び出しが再度有効になります。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.native_tools フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.native_tools フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.native_tools <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__native_tools=
pricing
コスト追跡用のモデルごとの料金設定。100万トークンあたりのUSD。自由形式のキー/値マップ。キーはユーザー定義のモデル識別子で、オプションの .input / .output サフィックスは、オペレーターがレートを分割したい場合に料金の次元を示します。サフィックスのない単純なキーは、いずれの次元も指定されていない場合にトークンごとの一律レートとして使用されます。デフォルトは空です。この場合、コスト追跡は「不明」レートにフォールバックし、トークン使用量のみが記録されます。例: pricing = { opus = 15.0, sonnet = 3.0 } または分割する場合: pricing = { "opus.input" = 15.0, "opus.output" = 75.0 }
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.pricing フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.pricing フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.pricing <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__pricing=
provider_extra
API リクエストに含める追加の JSON パラメーター。リクエストボディのトップレベルでマージされ、コードを変更することなくプロバイダー固有の機能(ルーティング、変換など)を利用できます。例: provider_extra = { model_provider = { only = ["Anthropic"] } }
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.provider_extra フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.provider_extra フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.provider_extra <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__provider_extra=
replay_assistant_reasoning
保存されたアシスタントの推論を、送信するアシスタント履歴メッセージで再生するかどうか。Some(false) は送信前に reasoning_content と reasoning を除去します。None(デフォルト)はプロバイダーの組み込みデフォルト(ほとんどの互換プロバイダーでは true、Groq では false)に従います。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.replay_assistant_reasoning フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.replay_assistant_reasoning フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.replay_assistant_reasoning <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__replay_assistant_reasoning=
requires_openai_auth
true の場合、クライアントは上記の api_key フィールドではなく、ZeroClaw に保存された openai-codex 認証プロファイルから認証情報を取得します。既存の Codex CLI ログインをインポートするには zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json を実行するか、zeroclaw auth login --model-provider openai-codex を実行してください。OpenAI Codex の model_provider の場合にのみ有効にし、標準の API キーによる model_provider では無効のままにしてください。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.requires_openai_auth フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.requires_openai_auth フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.requires_openai_auth <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__requires_openai_auth=
temperature
モデルに渡されるサンプリング温度です。低い値(0.0〜0.3)は決定論的でほぼ忠実な出力となり、コード、ルーティング、要約に適しています。高い値(0.7〜1.2)はより多様な出力となり、自由形式のチャットに適しています。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて、providers.models.custom.<alias>.temperature フィールドを設定してください。
zerocode
Configペインで、providers.models.custom.<alias>.temperatureフィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.temperature <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__temperature=
think
これをサポートするモデル(例:Qwen3、GLM-4)で連鎖的思考(chain-of-thought)を有効または無効にします。true で思考をオンにし、false でオフにします。None(デフォルト)の場合はモデルが判断します。リクエストボディ内で enable_thinking として転送され、Ollama プロバイダーの think フィールドに対応します。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて、providers.models.custom.<alias>.think フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.think フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.think <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__think=
timeout_secs
HTTPリクエストのタイムアウト(秒単位)。低速なローカルmodel_providers(CPU上のOllama、大規模なローカルモデル)や高レイテンシのネットワークの場合はこの値を引き上げてください。それ以外の場合は未設定のままにしてください。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて、providers.models.custom.<alias>.timeout_secs フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.timeout_secs フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.timeout_secs <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__timeout_secs=
tls_ca_cert_path
このプロバイダーへのTLS接続に使用するPEMエンコードされたCA証明書へのパス。絶対パスである必要があります。シェル展開(例: ~)は実行されません。システムのデフォルトのトラストストアを使用する場合は未設定のままにしてください。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開いて、providers.models.custom.<alias>.tls_ca_cert_path フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.tls_ca_cert_path フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.tls_ca_cert_path <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__tls_ca_cert_path=
tool_result_image_policy
ネイティブ互換の chat-completions プロバイダーが role=tool の結果に含まれる画像マーカーを処理する方法。image_url は構造化された画像パートを保持し、omit はそれらのペイロードを削除して固定の通知を追加します。これは、ユーザーが直接指定した画像コンテンツや OpenAI Responses プロバイダーには影響しません。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.tool_result_image_policy フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.tool_result_image_policy フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.tool_result_image_policy <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__tool_result_image_policy=
uri
クライアントが接続するエンドポイント URI。セルフホスト型のゲートウェイ(LiteLLM、vLLM、Ollama)、カスタムプロキシ、または非標準の URL を指定する場合に、ファミリーのデフォルトエンドポイントを上書きします。未設定のままにすると、ファミリーの ModelEndpoint 実装によるデフォルト URI が使用されます。これにはエンドポイントの完全な URL を設定してください。パスサフィックス用の個別フィールドはありません。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.uri フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.uri フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.uri <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__uri=
vision
プロバイダーの vision(画像入力)機能を上書きします。None(デフォルト)はプロバイダーファミリーの組み込みデフォルトを使用します。いくつかのファミリー(llama.cpp、汎用の OpenAI 互換エンドポイントなど)は、マルチモーダルモデルを提供できるため vision 対応と見なされます。そのようなファミリーで提供されるテキスト専用モデル(例: llama.cpp の背後にあるテキスト LLM)の場合は vision = false を設定してください。これにより、画像メッセージは、それらを拒否するモデルに送信される代わりに、設定された [multimodal] vision_model_provider にルーティングされます。Some(true) は vision を強制的に有効にします。
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.vision フィールドを設定します。
zerocode
Config ペインで、providers.models.custom.<alias>.vision フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.vision <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__vision=
wire_api
任意のサーフェスに設定する場合:
ゲートウェイダッシュボード
/config/providers.models/custom を開き、providers.models.custom.<alias>.wire_api フィールドを設定してください。
zerocode
Config ペインで、providers.models.custom.<alias>.wire_api フィールドを設定します。
zeroclaw config
zeroclaw config set providers.models.custom.<alias>.wire_api <value>
環境変数
オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc、~/.zshrc、.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。
export ZEROCLAW_providers__models__custom__<alias>__wire_api=
思考モードの制御はモデルファミリーによって異なります。think = false はリクエスト内のトップレベルの enable_thinking フィールドを設定します。一部のモデル(例: Qwen3)は、代わりに chat_template_kwargs を介して Jinja テンプレートからこのフラグを読み取ります:
他のモデルファミリーでは異なるテンプレート変数名を使用します。お使いのモデルのチャットテンプレートを確認し、chat_template_kwargsの下に適切なキーを設定してください。
SGLang: スロット sglang
sh
python -m sglang.launch_server --model meta-llama/Llama-3.1-8B-Instruct --port 30000
vLLM: スロット vllm
sh
vllm serve meta-llama/Llama-3.1-8B-Instruct
LM Studio, Osaurus, LiteLLM
スロット lmstudio、osaurus、litellm も同じパターンに従います。詳しくはカタログを参照してください。
ワイヤープロトコル: wire_api = "responses"
設定に書き込まれる 新しい OpenAI プロバイダースロット(zeroclaw quickstart またはゲートウェイ/設定 UI で作成される providers.models.openai.<alias>)は、デフォルトで wire_api = "responses" になります。これは、OpenAI の最近の GPT モデルがプライマリワイヤーとして POST /v1/responses を使用するためです。その他の独自エンドポイント持ち込み型スロット(custom、llamacpp、および OpenAI 互換ベンダー)は、依然として chat-completions ワイヤーがデフォルトです。OpenAI の responses ワイヤーのみに対応するエンドポイント(一部のセルフホスト型 vLLM / TGI デプロイメント)では、エイリアスエントリーに明示的な wire_api = "responses" のオプトインが必要です。
"responses" に設定すると、プロバイダーは chat-completions プロバイダーではなく、OpenAiResponsesModelProvider(responses プロトコル経由の完全なストリーミングツール呼び出し)として構築されます。レガシーのワイヤー形式を強制するには "chat_completions" を設定します。後方互換性のため、実行時に chat-completions を維持するケースが 2 つあるため、アップグレード時に既存のセットアップのワイヤー形式が変更されることはありません:
wire_apiを省略した永続化されたproviders.models.openai.<alias>エントリは、未設定としてデシリアライズされ、chat-completions のままになります。- bare な
model_provider = "openai"参照(または存在しないエイリアスへのドット区切りの参照)には、読み取る config エントリがありません。これは family fallback から構築され、chat-completions のままです。responses のデフォルトは、スロットが実際に config に書き込まれている場合にのみ適用されます。
wire_apiは、ワイヤをオペレーターが設定可能な bring-your-own-endpoint ファミリーで尊重されます:openai、llamacpp、custom(さらに汎用の openai-compatible パス)。ブランド付きベンダースロット(groq、mistral、deepseek、…)はワイヤプロトコルが固定されており、このフィールドを無視します。ただし1つ例外があります:opencodeはwire_api = "responses"を尊重します。これは OpenCode Zen が両方のワイヤを提供するためです。uriのオーバーライドがない場合、OpenCode responses ルートはhttps://opencode.ai/zen/v1/responsesを対象とします:
[providers.models.opencode.default]
model = "big-pickle"
wire_api = "responses"
この設定はプライマリエージェントパスとデリゲートターゲットの両方を制御するため、ターゲットエイリアスが wire_api = "responses" を宣言しているデリゲートは、responsesワイヤー経由でエンドポイントに到達します。
検証
アプローチに関わらず:
sh
zeroclaw config list # 設定を読み込む。検証に失敗した場合は stderr に出力される
zeroclaw models refresh --model-provider <type>.<alias> # list models the endpoint advertises
zeroclaw agent -a <alias> -m "hello" # `[agents.<alias>]` のエージェントに対するスモークテスト
新しい ModelProvider トレイトの実装
エンドポイントが OpenAI 互換ではなく、ローカルサーバースロットのいずれにも該当しない場合は、コードが必要です。
このトレイトは crates/zeroclaw-api/src/model_provider.rs にあります:
#![allow(unused)]
fn main() {
#[async_trait]
pub trait ModelProvider: Send + Sync {
fn name(&self) -> &str;
fn supports_streaming(&self) -> bool { true }
fn supports_streaming_tool_events(&self) -> bool { false }
async fn chat(
&self,
messages: Vec<Message>,
tools: Vec<ToolSchema>,
options: ChatOptions,
) -> Pin<Box<dyn Stream<Item = Result<StreamEvent>> + Send>>;
}
}
実装パターン:
-
crates/zeroclaw-config/src/schema.rsで型付き設定を定義します:#![allow(unused)] fn main() { pub struct MyProviderModelProviderConfig { #[serde(flatten)] pub base: ModelProviderConfig, pub endpoint: MyProviderEndpoint, // ファミリー固有のフィールド } pub enum MyProviderEndpoint { Default } impl ModelEndpoint for MyProviderEndpoint { fn uri(&self) -> &'static str { match self { Self::Default => "https://my-provider.example.com/v1" } } } } -
crates/zeroclaw-config/src/providers.rsのfor_each_model_provider_slot!にスロットを追加します。すべてのヘルパーが新しいスロットを自動的に認識します。 -
crates/zeroclaw-providers/src/myprovider.rsにランタイム実装を追加します。Vec<Message>をワイヤーフォーマットに変換し、レスポンスをストリーミングしてStreamEventの値を出力します。 -
crates/zeroclaw-providers/src/lib.rs::create_provider_with_url_and_optionsのファクトリーブランチを接続します。 -
プロバイダーが重い依存関係を取り込む場合は、
Cargo.tomlにフィーチャーフラグを追加してください。
完全にカスタムなワイヤーフォーマットを持つプロバイダーの例については、anthropic.rs を参照してください。SSEストリーミングのOpenAI互換パターンについては、compatible.rs を参照してください。
トラブルシューティング
認証エラー
- APIキーがエンドポイントと一致していることを確認してください(多くのベンダーはキーのプレフィックスを使用しています:
sk-、gsk_、sk-ant-)。 uriにスキーム(http:///https://)が含まれていること、およびエンドポイントが必要とする場合は/v1パスが含まれていることを確認してください。- VPN またはプロキシの背後にあるエンドポイントですか?ZeroClaw ホストからのルーティングを確認してください。
モデルが見つかりません
- エンドポイントが宣伝しているものをリストします:
sh
curl -sS $URI/models -H `Authorization: Bearer $API_KEY` | jq
接続の問題
curl -I $URI、応答はありますか?- ファイアウォール、プロキシ、egressルールは?VPSプロバイダーは送信用の高位ポートをブロックすることがあります。
- ホステッドサービスの場合はベンダーのステータスページ。
ゲートウェイが temperature を拒否します
一部のゲートウェイ(例えば claude-opus-4-7 をフロントエンドとする LiteLLM プロキシ)は、temperature フィールドが存在するだけでエラーを返します。ZeroClaw は Option の規約を尊重します。設定で temperature を未設定のままにした場合、そのフィールドはリクエストボディから完全に省略され、バックエンドが独自のデフォルト値を選択します。エンドポイントが受け付ける場合にのみ、temperature を明示的に設定してください。
関連項目も参照してください
- 概要: プロバイダーモデルとエージェントごとのディスパッチの仕組み
- 設定: 完全な
[providers.*]スキーマ、Azure 型付き設定、リージョンおよび OAuth バリアント - カタログ: すべての正規スロットと実際の TOML 例
- 開発 → プラグインプロトコル: プラグインがファーストクラスのクレートよりもうまく機能する場合