Categories:

OpenClaw マルチモデル構成のベストプラクティス: インテリジェンス、速度、コストの両立

OpenClaw を基盤としたインテリジェントアシスタントを構築する際、複雑なタスクを処理できる「賢さ」、ユーザーへの迅速な応答、そして API 呼び出しコストの削減のすべてを追求することは珍しくありません。単一のモデルでこれら三つの目標を同時に達成することは困難です。合理的なマルチモデル構成とインテリジェントなルーティングにより、異なるモデルに適切な役割を割り当て、ユーザーエクスペリエンスを保ちつつコストを最適化することが可能になります。本ドキュメントでは、OpenClaw でこの目標を実現する方法を詳しく解説します。

一、全体戦略:モデル階層化とインテリジェントルーティング

私たちの核となる考え方は、「資源の最適配分」です。すなわち、タスクを階層化し、各階層を最も適したモデルに処理させ、ワークフローによる自動ルーティングを実現します。

  • 分類層(Tier 1 – 軽量・高速): 極小モデル(qwen2.5:3b や llama3.2-3b 等)を使用し、ユーザー入力に対する迅速な意図認識と複雑度評価を行います。この層の応答は非常に高速で、Token消費はほぼゼロです。
  • 実行層(Tier 2 – 専門・主力): 分類結果に基づき、タスクをその分野に特化したモデルに振り分けます。
    • 日常会話、簡単なQA → GLM-4.7(バランス型、低コスト)
    • 高度なコード推論、システム設計 → GLM-5 または Llama Nemotron Super(高性能だが低速)
    • フロントエンド生成、オフィス自動化 → GPT-5.3-Codex(高価値だがToken高価)
  • フォールバック層(Tier 3 – 障害迂回): 各エージェント内部にバックアップモデルを設定します。プライマリモデルが利用不可(タイムアウト、割当超過等)になった場合、自動的に切り替わり、サービス継続性を保証します。

二、構成手順

1. 複数モデルの接続

OpenClaw のメイン設定ファイル(例: ~/.openclaw/openclaw.json)の models ノードに必要なモデルを追加します。以下の例では、GLM-4.7、GLM-5、GPT-5.3-Codex、およびローカル分類モデルを含めています。

{
  "models": {
    "mode": "merge",
    "providers": {
      "zai": {
        "baseUrl": "https://open.bigmodel.cn/api/paas/v4",
        "apiKey": "YOUR_ZAI_KEY",
        "api": "openai-completions",
        "models": [
          {
            "id": "glm-4-plus",          // GLM-4.7 のIDはプラットフォームにより異なる場合あり
            "name": "GLM-4.7",
            "input": ["text"],
            "contextWindow": 200000,
            "maxTokens": 4096
          },
          {
            "id": "glm-5",
            "name": "GLM-5",
            "input": ["text"],
            "contextWindow": 200000,
            "maxTokens": 128000
          }
        ]
      },
      "openai": {
        "baseUrl": "https://api.openai.com/v1",
        "apiKey": "YOUR_OPENAI_KEY",
        "api": "openai-completions",
        "models": [
          {
            "id": "gpt-5.3-codex",
            "name": "GPT-5.3-Codex",
            "input": ["text"],
            "contextWindow": 32000,
            "maxTokens": 4000
          }
        ]
      },
      "ollama": {
        "baseUrl": "http://localhost:11434",
        "api": "ollama",
        "models": [
          {
            "id": "qwen2.5:3b",
            "name": "Qwen 2.5 3B",
            "input": ["text"],
            "contextWindow": 8192,
            "maxTokens": 2048
          }
        ]
      }
    }
  }
}

2. 専門エージェントの作成とフォールバック設定

専門的な役割ごとにエージェントを作成し、model.primarymodel.fallbacks を設定します。これにより、プライマリモデルが失敗した場合、OpenClaw は自動的にフォールバックモデルを試行します。また、すべてのモデルは同じ Workspace を共有するため、会話コンテキストの連続性が保たれます。

{
  "agents": {
    "classifier": {
      "id": "classifier",
      "name": "意図分類器",
      "workspace": "~/.openclaw/workspaces/classifier",
      "model": {
        "primary": "ollama/qwen2.5:3b",
        "fallbacks": []   // 分類器は通常フォールバック不要
      },
      "systemPrompt": "あなたはタスク分類器です。ユーザーの入力に基づき、ラベルと複雑度を出力してください。ラベルは 'chat'(日常会話)、'code'(プログラミング関連)、'doc'(ドキュメント処理)から選び、複雑度は 'low'、'medium'、'high' から選んでください。出力形式は JSON です。例: {\"label\": \"code\", \"complexity\": \"high\"}。"
    },
    "general_assistant": {
      "id": "general_assistant",
      "name": "汎用アシスタント",
      "workspace": "~/.openclaw/workspaces/general",
      "model": {
        "primary": "zai/glm-4-plus",
        "fallbacks": ["openai/gpt-5.3-codex", "zai/glm-5"]
      },
      "systemPrompt": "あなたは親切な汎用アシスタントです。簡潔かつ正確に回答してください。"
    },
    "coding_architect": {
      "id": "coding_architect",
      "name": "プログラミングアーキテクト",
      "workspace": "~/.openclaw/workspaces/coding",
      "model": {
        "primary": "zai/glm-5",
        "fallbacks": ["openai/gpt-5.3-codex", "zai/glm-4-plus"]
      },
      "systemPrompt": "あなたは経験豊富なソフトウェアアーキテクトです。システム設計、複雑なアルゴリズム、コード最適化を得意としています。明確で保守性の高いソリューションを提供してください。",
      "modelParameters": {
        "max_tokens": 8000
      }
    },
    "ui_expert": {
      "id": "ui_expert",
      "name": "UIエキスパート",
      "workspace": "~/.openclaw/workspaces/ui",
      "model": {
        "primary": "openai/gpt-5.3-codex",
        "fallbacks": ["zai/glm-4-plus"]
      },
      "systemPrompt": "あなたはフロントエンドUIの専門家であり、美しくレスポンシブなHTML/CSS/JSコードを生成することを得意としています。",
      "modelParameters": {
        "max_tokens": 2000   // Codex の出力長制限、Token節約
      }
    }
  }
}

3. インテリジェントルーティングワークフローの設計

ワークフローは分類器を呼び出し、その結果に応じて対応する専門エージェントに遷移します。同時に、GLM-5のような応答に時間がかかるモデルについては非同期実行を採用し、ユーザー操作をブロックしないようにします。

三、最適化のヒント

{
  "workflows": {
    "smart_router": {
      "description": "インテリジェントルーティング:意図に応じて異なる専門家を呼び出す",
      "steps": [
        {
          "name": "classify",
          "type": "agent",
          "agent": "classifier",
          "input": "{{user_input}}",
          "output": "classification"
        },
        {
          "name": "route",
          "type": "switch",
          "condition": {
            "cases": [
              {
                "match": "{{classification.label}} == 'chat' && {{classification.complexity}} == 'low'",
                "next": "quick_chat"
              },
              {
                "match": "{{classification.label}} == 'code' && {{classification.complexity}} == 'high'",
                "next": "deep_code_async"
              },
              {
                "match": "{{classification.label}} == 'code' && {{classification.complexity}} != 'high'",
                "next": "general_code"
              },
              {
                "match": "{{classification.label}} == 'doc'",
                "next": "doc_processing"
              }
            ],
            "default": "quick_chat"
          }
        },
        {
          "name": "quick_chat",
          "type": "agent",
          "agent": "general_assistant",
          "input": "{{user_input}}",
          "output": "final_response"
        },
        {
          "name": "general_code",
          "type": "agent",
          "agent": "coding_architect",
          "input": "{{user_input}}",
          "output": "final_response",
          "modelParameters": {
            "max_tokens": 4000
          }
        },
        {
          "name": "deep_code_async",
          "type": "async",
          "agent": "coding_architect",
          "input": "{{user_input}}",
          "callback": {
            "type": "notify",
            "message": "お客様の複雑なプログラミングタスクが完了しました。結果をご確認ください。"
          },
          "output": "final_response"
        },
        {
          "name": "doc_processing",
          "type": "agent",
          "agent": "general_assistant",  // 実際には専用ドキュメントエージェントを設定可能、ここでは簡略化
          "input": "{{user_input}}",
          "output": "final_response"
        }
      ],
      "output": "{{final_response}}"
    }
  }
}
  1. 高コストモデルへの Token 予算設定


    エージェントの modelParameters で、GPT-5.3-Codex などの高コストモデルに対して max_tokens を小さく設定し、一回の呼び出しで過剰な割当を消費するのを防ぎます。また、ワークフローに「コスト見積もり」ステップを追加し、推定 Token がしきい値を超えた場合にユーザー確認を求めることも可能です。


  2. 非同期タスクによる時間のかかるリクエストの処理


    GLM-5 のような深い思考を要するモデルを用いるタスクは非同期(type: "async")に設定し、コールバック通知を構成します。これにより、ユーザーはモデルの完了を待たずにインタラクションを継続でき、体感的な応答速度が大幅に向上します。


  3. 軽量モデルによる単純なリクエストのフィルタリング


    分類器自体が多くの単純なリクエストをフィルタリングし、GLM-4.7 などの高速モデルで日常会話を処理させることで、GLM-5 や Codex を起動する頻度を抑えます。


  4. フォールバックとリトライ


    fallbacks に加え、エージェントやワークフローで retry 戦略を構成することで、ネットワークの不安定性などの一時的なエラー発生時に自動再試行が可能です。


  5. 監視と動的調整


    OpenClaw のログや ClawRouter などの外部監視ツールと連携し、各モデルの応答時間、成功率、Token消費を観察しながら、ルーティングルールやモデルパラメータを動的に調整します。


四、まとめ

上記の構成により、以下が実現されました。

  • より賢く: GLM-5、GPT-5.3-Codex などの強力なモデルが複雑なタスクで専門性を発揮。
  • より高速な応答: 分類器による迅速な振り分け、非同期タスクによる非ブロック化、フォールバックによる可用性確保。
  • Token消費の削減: 軽量モデルが頻繁な単純リクエストを処理し、高価なモデルは必要な時だけ呼び出され、出力長も制限。

このパターンは柔軟に拡張可能です。さらに多くのモデルを接続したり、新しい専門エージェントを追加したりする場合も、ワークフローとエージェント定義を調整するだけで対応できます。本ドキュメントが、効率的かつ経済的な OpenClaw インテリジェントアシスタントの構築に役立つことを願っています。

コメントなし

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です