はじめに
前回のPart 2では、Claude Team Agentのアーキテクチャと設計思想を解説した。本稿(Part 3)では、実際にローカル環境でClaude Agent SDKをセットアップし、最小構成のマルチエージェントシステムを動作させるまでの具体的な手順を示す。コードを実際に動かしながら理解を深めることが目的であり、次回Part 4の応用実装への足がかりとなる。
1. 前提環境の確認
Claude Agent SDKはPython 3.10以上を要件としている。まず現在のPython環境を確認する。
python3 --version # Python 3.11.x 以上が望ましい 仮想環境の管理にはvenvまたはuvを推奨する。uvはRust製の高速パッケージマネージャであり、依存関係の解決が従来のpipと比較して大幅に高速化される [Source: https://docs.astral.sh/uv/]。
# uvを使う場合 pip install uv uv venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate 2. APIキーの取得と設定
Claude Agent SDKを利用するにはAnthropicのAPIキーが必要となる。Anthropic Consoleにアクセスし、アカウント作成後にAPIキーを発行する [Source: https://console.anthropic.com/]。
APIキーは環境変数として設定することがセキュリティ上の推奨プラクティスである。
export ANTHROPIC_API_KEY="sk-ant-XXXXXXXXXXXXXXXX" プロジェクト管理の観点から、.envファイルを使用しpython-dotenvで読み込む方法も一般的である。ただし.envファイルは必ずGitの管理対象から除外すること。
# .env ファイル ANTHROPIC_API_KEY=sk-ant-XXXXXXXXXXXXXXXX from dotenv import load_dotenv import os load_dotenv() api_key = os.environ.get("ANTHROPIC_API_KEY") 3. Claude Agent SDKのインストール
Anthropicが提供するClaude Agent SDKはanthropicパッケージとして配布されている。マルチエージェント機能を含む最新版をインストールする [Source: https://github.com/anthropics/anthropic-sdk-python]。
uv pip install anthropic # あるいは pip install anthropic インストール後、バージョンを確認する。
python -c "import anthropic; print(anthropic.__version__)" 4. 最小構成のTeam Agentを実装する
ここでは「オーケストレータ」と「サブエージェント」の2層構造による最小構成のTeam Agentを実装する。Anthropicのドキュメントによると、マルチエージェントシステムにおけるエージェント間の通信は、ツール呼び出しのインターフェースを通じて行われる [Source: https://docs.anthropic.com/en/docs/build-with-claude/agents]。
import anthropic import os client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY")) # サブエージェントとして機能するツール定義 def run_sub_agent(task: str) -> str: """特定タスクを処理するサブエージェント""" response = client.messages.create( model="claude-opus-4-5", max_tokens=1024, system="あなたはデータ分析の専門家です。与えられたタスクを簡潔に処理してください。", messages=[{"role": "user", "content": task}] ) return response.content[0].text # オーケストレータエージェント def orchestrator_agent(user_query: str) -> str: """タスクを分解しサブエージェントに委譲するオーケストレータ""" # ツールスキーマの定義 tools = [ { "name": "delegate_to_sub_agent", "description": "特定のサブタスクをサブエージェントに委譲する", "input_schema": { "type": "object", "properties": { "task": { "type": "string", "description": "サブエージェントに処理させるタスクの内容" } }, "required": ["task"] } } ] messages = [{"role": "user", "content": user_query}] # オーケストレータのループ while True: response = client.messages.create( model="claude-opus-4-5", max_tokens=2048, system="あなたはタスクを管理するオーケストレータです。複雑なリクエストをサブタスクに分解し、必要に応じてサブエージェントに委譲してください。", tools=tools, messages=messages ) # ツール呼び出しがない場合は終了 if response.stop_reason == "end_turn": return response.content[0].text # ツール呼び出しを処理 tool_results = [] for block in response.content: if block.type == "tool_use": result = run_sub_agent(block.input["task"]) tool_results.append({ "type": "tool_result", "tool_use_id": block.id, "content": result }) # メッセージ履歴を更新して継続 messages.append({"role": "assistant", "content": response.content}) messages.append({"role": "user", "content": tool_results}) # 実行 if __name__ == "__main__": result = orchestrator_agent("売上データの傾向を分析し、来月の予測を行ってください。") print(result) 5. 動作確認と典型的なエラー対処
よく遭遇するエラーと対処法を整理する。
AuthenticationError: APIキーが正しく設定されていない。環境変数の読み込みを再確認する。RateLimitError: APIレート制限に達している。指数バックオフを実装してリトライ処理を追加する。InvalidRequestError: ツールスキーマの形式が不正。input_schemaの構造をドキュメントと照合する。
まとめと次回予告
本稿ではPython環境構築からAPIキー設定、SDKインストール、そして最小構成のTeam Agent実装までを一通り解説した。2層のエージェント構造によりタスクの委譲と結果の集約が実現できることを確認できたはずだ。
Part 4では、このベースをもとに実用的なツール統合とエラーハンドリングの設計パターンを深掘りする。並列エージェント実行と結果の集約戦略についても実装例を交えて解説する予定だ。
Category: LLM | Tags: Claude, AgentSDK, マルチエージェント, Python, LLM実装
0 件のコメント:
コメントを投稿