multi-agent — 最小のオーケストレーション(Python)
計画役 + 実行役の 2 エージェントで、タスクを分解して実行する最小のオーケストレーション複数の LLM 呼び出しや Agent の実行順序とデータの流れを制御すること。直列・並列・ルーティングなどの定番パターンがある。を示すサンプルです。次のドキュメントの内容を実装しています。
- オーケストレーションパターン — 複数エージェントの実行順序とデータの流れ
- シングルエージェントとマルチエージェント — 分担・独立コンテキストの考え方
このサンプルの要点
- 2 役は独立したコンテキスト: 計画役(
llm_client.pyの別インスタンス)と実行役を分け、計画の詳細で実行役のコンテキストを汚しません - 実行役はツールを使う: 実行役は
get_temperature(モックツール)を呼んで各サブタスクを実行します - 決定的な計算はコードで: 平均の計算は LLM ではなくコードで行います(確実性が要る処理を LLM に溶かさない)
- 計画と取得結果を別々に検証: このサンプルの対象は
EXPECTED_CITIESの東京・大阪・札幌です。空計画・対象の欠落・余分な都市・重複は実行前に拒否します。自由な質問へ拡張するときは、利用者が確認した対象一覧も入力契約として渡します - 欠損を隠さない: 実行時に取得できない都市があれば
partialとして未取得都市を示し、取得済み分の平均と全対象の平均を区別します。0 件ならfailed、平均はNoneです。CLI は全件完了した場合だけ終了コード 0 を返します
前提
- Python 3.11 以降(
--mockは追加依存なし・標準ライブラリのみで動きます) - 実 API 実行時のみ: Anthropic API キー(環境変数
ANTHROPIC_API_KEY)とpip install -r requirements.txt
実行
# モック実行(API キー不要・依存インストール不要)
python multi_agent.py --mock
# 実 API 実行(要 ANTHROPIC_API_KEY)
pip install -r requirements.txt
python multi_agent.py計画役の分解 → 実行役の実行(ツール呼び出し)→ 集約(平均計算)の流れが表示されます。
既定の結果は 3 都市すべてを集約した平均 27.3 度です。_MOCK_TEMPS から札幌を除くと 2/3 都市の部分結果となり、全対象の平均が未確定であることと終了コード 1 を確認できます。
動作確認日
- 今回の再確認: 2026-10-04(Python 3.12.14、作業専用 venv、固定した anthropic 1.4.0 / httpx2 2.12.0 / mcp 2.2.0)。全 6 サンプルの
--mockを含む 17 回帰テストプロンプト・ツール・モデルの変更で既存の品質が壊れていないかを、評価データセットの再実行と前回比較で検知するテスト。が合格しました。実 SDK の HTTP モックとローカル MCPツールやデータソースを LLM アプリケーションに接続するための標準プロトコル。概要は ツール使用、接続の実務は ツール接続標準(MCP とエコシステム) stdio を確認し、実 LLM API は呼んでいません(実行手順)
以下は過去の確認記録です。
- モック実行(
--mock): 2026-09-10 に確認(Python 3.11.3、追加依存なし) - 回帰テスト: 2026-09-10 に確認。空・欠落・重複した計画、取得失敗時の部分結果・全件失敗、anthropic 1.4.0 / httpx2 2.12.0 の HTTP モックで SDK の打ち切り応答を確認(実行手順)
- 実 API 実行: 未確認(各自の環境で確認し、この欄に日付を追記してください)
TODO・未確認事項
モデルの選択
既定モデルは claude-opus-5-5 です(モデル仕様確認: 2026-10-03)。環境変数 ANTHROPIC_MODEL で上書きできます。PowerShell では $env:ANTHROPIC_MODEL = "claude-sonnet-5-5"、POSIX シェルでは export ANTHROPIC_MODEL=claude-sonnet-5-5 を実行してから起動します。--mock は API を呼びません。モデル移行時は強制ツール指定・思考履歴・出力上限の互換性を確認してください。実 API の動作確認日は従来の記録を維持し、今回のモック回帰結果は作業記録に分けます。