openai-completions API を使用して接続し、VLLM_API_KEY でオプトインするとモデルを自動検出できます。
はじめに
1
OpenAI 互換サーバーで vLLM を起動する
ベース URL は
/v1 エンドポイント(/v1/models、/v1/chat/completions)を公開する必要があります。vLLM は通常、次の場所で実行されます。2
API キー環境変数を設定する
サーバーが認証を強制しない場合、空でない任意の値を使用できます。
3
モデルを選択する
vLLM のモデル ID のいずれかに置き換えます。
4
モデルが利用可能か確認する
モデル検出(暗黙的プロバイダー)
VLLM_API_KEY が設定されている(または認証プロファイルが存在する)場合に、models.providers.vllm が定義されていなければ、OpenClaw は GET http://127.0.0.1:8000/v1/models に問い合わせ、返された ID をモデルエントリに変換します。
models.providers.vllm を明示的に設定すると、OpenClaw は宣言されたモデルのみを使用します。OpenClaw が設定済みプロバイダーの /models エンドポイントにも問い合わせ、公開されているすべての vLLM モデルを含めるようにするには、"vllm/*": {} を agents.defaults.models に追加します。明示的な設定
vLLM が別のホストまたはポートで実行される場合、contextWindow/maxTokens を固定する場合、サーバーが実際の API キーを要求する場合、または信頼された loopback、LAN、Tailscale エンドポイントに接続する場合は、明示的に設定します。
高度な設定
プロキシ形式の動作
プロキシ形式の動作
vLLM は、ネイティブ OpenAI エンドポイントではなく、プロキシ形式の OpenAI 互換
/v1 バックエンドとして扱われます。Qwen の thinking 制御
Qwen の thinking 制御
Qwen モデルでは、サーバーが Qwen チャットテンプレートの kwargs を期待する場合、モデル行に OpenClaw は
compat.thinkingFormat: "qwen-chat-template" を設定します。Qwen チャットテンプレートの thinking は OpenAI 形式の effort 段階ではなくオン/オフのフラグであるため、これらのモデルは二値の /think プロファイル(off、on)を公開します。/think off を次のようにマッピングします。off 以外の thinking レベルでは enable_thinking: true が送信されます。エンドポイントが代わりに DashScope 形式のトップレベルフラグを期待する場合は、compat.thinkingFormat: "qwen" を使用してリクエストルートに enable_thinking を送信します。Nemotron 3 の thinking 制御
Nemotron 3 の thinking 制御
thinking がオフの これらの値をカスタマイズするには、モデルの params 配下に
vllm/nemotron-3-* モデルでは、同梱 Plugin が次を送信します。chat_template_kwargs を設定します。params.extra_body.chat_template_kwargs も設定した場合、extra_body が最後のリクエスト本文オーバーライドであるため、その値が優先されます。Qwen のツール呼び出しがテキストとして表示される
Qwen のツール呼び出しがテキストとして表示される
まず、モデルに適したツール呼び出しパーサーとチャットテンプレートを指定して vLLM が起動されたことを確認します。vLLM では、Qwen2.5 モデル向けに モデル ID を これはオプトインの回避策です。ツールを使用するすべてのターンでツール呼び出しを強制するため、許容できる専用のモデルエントリにのみ使用してください。すべての vLLM モデルのグローバルデフォルトとして設定しないでください。また、任意のアシスタントテキストを実行可能なツール呼び出しに変換するプロキシと組み合わせないでください。
hermes、Qwen3-Coder モデル向けに qwen3_xml が記載されています。症状: Skills/ツールがまったく実行されない、アシスタントが {"name":"read","arguments":...} のような未加工の JSON/XML を出力する、または OpenClaw が tool_choice: "auto" を送信したときに vLLM が空の tool_calls 配列を返す。一部の Qwen/vLLM の組み合わせでは、リクエストで tool_choice: "required" を使用した場合にのみ、構造化されたツール呼び出しが返されます。params.extra_body を使用してモデルごとに強制します。openclaw models list --provider vllm の正確な ID に置き換えるか、CLI から同じオーバーライドを適用します。カスタムベース URL
カスタムベース URL
vLLM サーバーがデフォルト以外のホストまたはポートで実行されている場合は、明示的なプロバイダー設定で
baseUrl を設定します。トラブルシューティング
最初の応答が遅い、またはリモートサーバーがタイムアウトする
最初の応答が遅い、またはリモートサーバーがタイムアウトする
大規模なローカルモデル、リモート LAN ホスト、または tailnet リンクでは、プロバイダー固有のリクエストタイムアウトを設定します。
timeoutSeconds は、vLLM モデルへの HTTP リクエスト(接続の確立、レスポンスヘッダー、本文のストリーミング、および保護された fetch 全体の中止)にのみ適用されます。また、このプロバイダーの LLM アイドル/ストリーム監視の上限を暗黙的なデフォルトの約 120s より長くします。エージェント実行全体を制御する agents.defaults.timeoutSeconds を増やすよりも、こちらを優先してください。サーバーに接続できない
サーバーに接続できない
vLLM サーバーが実行中で、アクセス可能であることを確認します。接続エラーが表示される場合は、ホスト、ポート、および vLLM が OpenAI 互換サーバーモードで起動されたことを確認します。OpenClaw は、loopback、LAN、Tailscale エンドポイントに対する保護されたモデルリクエストについて、設定された正確な
models.providers.vllm.baseUrl オリジンを信頼します。メタデータ/link-local オリジンは、明示的にオプトインしない限り引き続きブロックされます。vLLM リクエストが別のプライベートオリジンに到達する必要がある場合にのみ models.providers.vllm.request.allowPrivateNetwork: true を設定するか、正確なオリジンの信頼を無効にするには false を設定します。リクエストの認証エラー
リクエストの認証エラー
リクエストが認証エラーで失敗する場合は、サーバー設定と一致する実際の
VLLM_API_KEY を設定するか、models.providers.vllm 配下でプロバイダーを明示的に設定します。モデルが検出されない
モデルが検出されない
自動検出には
VLLM_API_KEY の設定が必要です。models.providers.vllm を定義している場合、agents.defaults.models に "vllm/*": {} が含まれていない限り、OpenClaw は宣言されたモデルのみを使用します。ツールが未加工のテキストとして表示される
ツールが未加工のテキストとして表示される
Qwen モデルが Skills を実行せずに JSON/XML のツール構文を出力する場合:
- そのモデルに適したパーサー/テンプレートを使用して vLLM を起動します。
openclaw models list --provider vllmで正確なモデル ID を確認します。tool_choice: "auto"が依然として空またはテキストのみのツール呼び出しを返す場合に限り、モデルごとに専用のparams.extra_body.tool_choice: "required"オーバーライドを追加します。
関連項目
モデルの選択
プロバイダー、モデル参照、フェイルオーバー動作の選択。
OpenAI
ネイティブ OpenAI プロバイダーと OpenAI 互換ルートの動作。
OAuth と認証
認証の詳細と認証情報の再利用ルール。
トラブルシューティング
よくある問題とその解決方法。