← Claude API & Claude Code 活用
LESSON 05 / 06

Agent SDK で自律エージェントを構築

所要時間 14分 上級レベル

このレッスンでは、Anthropic の Agent SDK を使ってカスタム自律エージェントを作る方法を学びます。Agent とは「目標を与えると、自分で考えて手順を踏み、ツールを使って完了させるAI」のことです。

Agent SDK の特徴

  • ループ実行:1リクエスト/1応答を超えて、複数ステップを自動実行
  • 状態管理:会話履歴・中間結果を保持
  • ツール統合:Tool Use を抽象化して扱いやすく
  • コンパクション:長期実行時のコンテキスト圧縮

シンプルなエージェント例(Python)

from anthropic import Anthropic

client = Anthropic()

tools = [
    {"name": "search_docs", "description": "...", "input_schema": {...}},
    {"name": "write_file", "description": "...", "input_schema": {...}},
]

def run_agent(goal: str, max_steps: int = 10):
    messages = [{"role": "user", "content": goal}]

    for step in range(max_steps):
        response = client.messages.create(
            model="claude-sonnet-4-5",
            max_tokens=2048,
            tools=tools,
            messages=messages,
        )

        # ツール呼び出しが含まれていなければ完了
        if response.stop_reason == "end_turn":
            return response.content[-1].text

        # ツール実行 → 結果を会話に追加
        messages.append({"role": "assistant", "content": response.content})
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result,
                })
        messages.append({"role": "user", "content": tool_results})

    return "max_steps reached"

設計パターン

  • Reflexion:自分の出力をレビューさせて改善
  • Plan-and-Execute:最初にステップ分解、その後実行
  • Memory:長期記憶を外部DB化
  • Multi-agent:役割の異なるエージェントを連携

運用上の注意

  • ループ上限:必ず max_steps で暴走防止
  • コスト監視:1タスクあたりの上限金額を設定
  • 人間レビュー:本番反映前に人間チェックを挟む
  • 権限分離:書込・送信などのツールには厳格な確認

このレッスンのまとめ

Agent SDK で、Claude を業務プロセスの一部として動かせます。次の最終レッスンでは、本番運用で必須のエラーハンドリング・レート制限対応を学びます。