メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

inferrs は、OpenAI 互換の /v1 API の背後でローカルモデルを提供できます。OpenClaw は汎用の openai-completions パスを通じて inferrs と連携します。
プロパティ
プロバイダー IDinferrs (カスタム。models.providers.inferrs の下で設定)
Pluginなし — inferrs はバンドルされた OpenClaw プロバイダー Plugin ではありません
認証環境変数任意。inferrs サーバーに認証がない場合は任意の値で動作します
APIOpenAI 互換 (openai-completions)
推奨ベース URLhttp://127.0.0.1:8080/v1 (または inferrs サーバーが稼働している場所)
inferrs は現在、専用の OpenClaw プロバイダー Plugin ではなく、カスタムのセルフホスト OpenAI 互換バックエンドとして扱うのが最適です。オンボーディング選択フラグではなく、models.providers.inferrs を通じて設定します。自動検出付きの真のバンドル Plugin が必要な場合は、SGLang または vLLM を参照してください。

はじめに

1

モデル付きで inferrs を起動する

inferrs serve google/gemma-4-E2B-it \
  --host 127.0.0.1 \
  --port 8080 \
  --device metal
2

サーバーに到達できることを確認する

curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models
3

OpenClaw プロバイダーエントリを追加する

明示的なプロバイダーエントリを追加し、デフォルトモデルをそこに向けます。完全な設定例は以下を参照してください。

完全な設定例

この例では、ローカルの inferrs サーバー上で Gemma 4 を使用します。
{
  agents: {
    defaults: {
      model: { primary: "inferrs/google/gemma-4-E2B-it" },
      models: {
        "inferrs/google/gemma-4-E2B-it": {
          alias: "Gemma 4 (inferrs)",
        },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      inferrs: {
        baseUrl: "http://127.0.0.1:8080/v1",
        apiKey: "inferrs-local",
        api: "openai-completions",
        models: [
          {
            id: "google/gemma-4-E2B-it",
            name: "Gemma 4 E2B (inferrs)",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 131072,
            maxTokens: 4096,
            compat: {
              requiresStringContent: true,
            },
          },
        ],
      },
    },
  },
}

オンデマンド起動

inferrs/... モデルが選択された場合にのみ、OpenClaw によって Inferrs を起動することもできます。同じプロバイダーエントリに localService を追加します。
{
  models: {
    providers: {
      inferrs: {
        baseUrl: "http://127.0.0.1:8080/v1",
        apiKey: "inferrs-local",
        api: "openai-completions",
        timeoutSeconds: 300,
        localService: {
          command: "/opt/homebrew/bin/inferrs",
          args: [
            "serve",
            "google/gemma-4-E2B-it",
            "--host",
            "127.0.0.1",
            "--port",
            "8080",
            "--device",
            "metal",
          ],
          healthUrl: "http://127.0.0.1:8080/v1/models",
          readyTimeoutMs: 180000,
          idleStopMs: 0,
        },
        models: [
          {
            id: "google/gemma-4-E2B-it",
            name: "Gemma 4 E2B (inferrs)",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 131072,
            maxTokens: 4096,
            compat: {
              requiresStringContent: true,
            },
          },
        ],
      },
    },
  },
}
command は絶対パスである必要があります。Gateway ホストで which inferrs を使用し、そのパスを設定に入れてください。すべてのフィールドリファレンスについては、ローカルモデルサービス を参照してください。

高度な設定

一部の inferrs Chat Completions ルートは、構造化された content-part 配列ではなく、文字列の messages[].content のみを受け付けます。
OpenClaw の実行が次のようなエラーで失敗する場合:
messages[1].content: invalid type: sequence, expected a string
モデルエントリで compat.requiresStringContent: true を設定してください。
compat: {
  requiresStringContent: true
}
OpenClaw はリクエストを送信する前に、純粋なテキストの content part をプレーンな文字列にフラット化します。
現在の一部の inferrs + Gemma の組み合わせは、小さな直接の /v1/chat/completions リクエストを受け付けますが、完全な OpenClaw agent-runtime ターンではまだ失敗します。その場合は、まずこれを試してください。
compat: {
  requiresStringContent: true,
  supportsTools: false
}
これにより、そのモデルに対する OpenClaw のツールスキーマサーフェスが無効になり、より厳格なローカルバックエンドへのプロンプト負荷を軽減できます。ごく小さな直接リクエストは引き続き動作するものの、通常の OpenClaw エージェントターンが inferrs 内でクラッシュし続ける場合、残っている問題は通常、OpenClaw のトランスポート層ではなく、アップストリームのモデルまたはサーバーの挙動です。
設定後、両方の層をテストします。
curl http://127.0.0.1:8080/v1/chat/completions \
  -H 'content-type: application/json' \
  -d '{"model":"google/gemma-4-E2B-it","messages":[{"role":"user","content":"What is 2 + 2?"}],"stream":false}'
openclaw infer model run \
  --model inferrs/google/gemma-4-E2B-it \
  --prompt "What is 2 + 2? Reply with one short sentence." \
  --json
最初のコマンドは動作するが、2 番目が失敗する場合は、以下のトラブルシューティングセクションを確認してください。
inferrs はネイティブの OpenAI エンドポイントではなく、プロキシ形式の OpenAI 互換 /v1 バックエンドとして扱われます。
  • ネイティブ OpenAI 専用のリクエスト整形はここでは適用されません
  • service_tier、Responses store、プロンプトキャッシュヒント、OpenAI reasoning 互換ペイロード整形はありません
  • 隠し OpenClaw attribution ヘッダー (originatorversionUser-Agent) はカスタム inferrs ベース URL には注入されません

トラブルシューティング

inferrs が実行されていない、到達できない、または想定された host/port にバインドされていません。サーバーが起動され、設定したアドレスでリッスンしていることを確認してください。
モデルエントリで compat.requiresStringContent: true を設定してください。詳細は上記の requiresStringContent セクションを参照してください。
ツールスキーマサーフェスを無効にするために、compat.supportsTools: false を設定してみてください。上記の Gemma ツールスキーマの注意点を参照してください。
OpenClaw がスキーマエラーを受け取らなくなっても、inferrs が大きなエージェントターンでまだクラッシュする場合は、アップストリームの inferrs またはモデルの制限として扱ってください。プロンプト負荷を下げるか、別のローカルバックエンドまたはモデルに切り替えてください。
一般的なヘルプについては、トラブルシューティングFAQ を参照してください。

関連

ローカルモデル

ローカルモデルサーバーに対して OpenClaw を実行する。

ローカルモデルサービス

設定済みプロバイダーのためにローカルモデルサーバーをオンデマンドで起動する。

Gateway トラブルシューティング

プローブは通るがエージェント実行に失敗するローカル OpenAI 互換バックエンドをデバッグする。

モデル選択

すべてのプロバイダー、モデル参照、フェイルオーバー挙動の概要。