← Claudeエージェント実装:深掘り編
LESSON 01 / 06

エージェント・アーキテクチャの全体像

所要時間 14分 上級レベル

エージェント」はバズワードですが、本物の自律エージェントを 本番環境で安定動作 させるには、しっかりした設計が必要です。本レッスンではエージェント・アーキテクチャの全体像を俯瞰します。

エージェントの定義(実装視点)

本コースで扱う「エージェント」は次の特徴を持ちます:

  1. 目標指向:与えられた目標を達成するために自律的に動く
  2. ツール利用:複数の外部ツール(API・DB・ファイル等)を呼び出す
  3. 多段推論:1ステップでは終わらず、状態を見ながら次の行動を決める
  4. 自己修正:失敗・想定外の結果から軌道修正する

エージェントの実装レイヤー

本格的なエージェントは、複数レイヤーの責務分離で構成されます。

レイヤー 責務
1. オーケストレーション 全体ループ、目標達成判定
2. プランナー 次のアクションを決定
3. ツール選択 使うツール・引数を決定
4. 実行 ツール呼び出し・結果取得
5. メモリ・状態管理 履歴・コンテキスト管理
6. ガードレール 禁止行動の検知・停止
7. ヒューマン介入 人間の確認が必要な場面
8. 観測・トレース 動作の可視化・デバッグ

シンプルなエージェントループ(疑似コード)

function agent_loop(goal, tools, max_iterations=20):
    state = init_state(goal)
    for i in range(max_iterations):
        # プランナー: 次のアクションを決める
        plan = call_claude(
            system="あなたは目標達成エージェントです...",
            messages=state.history,
            tools=tools,
        )

        # 終了判定
        if plan.is_complete:
            return plan.final_answer

        # ガードレール: 禁止行動チェック
        if violates_guardrails(plan.tool_call):
            log("blocked", plan.tool_call)
            state.append_error("禁止行動を提案しました")
            continue

        # ヒューマン介入: 必要な場合
        if requires_human_approval(plan.tool_call):
            approval = wait_for_human(plan.tool_call)
            if not approval:
                state.append_rejection()
                continue

        # ツール実行
        result = execute_tool(plan.tool_call)

        # メモリ更新
        state.append_tool_result(plan.tool_call, result)

        # 観測
        log_iteration(i, plan, result)

    return "最大反復回数に達しました"

Anthropic 公式 Agent SDK の役割

Anthropic が提供する Agent SDK は、上記の疑似コードに相当する仕組みを公式に整備しています:

  • システムプロンプトのテンプレート
  • Tool Use のスキーマ定義サポート
  • ループ実行・終了判定のフレームワーク
  • トレース・ロギングの組み込み
  • MCP(Model Context Protocol)対応

エージェント設計の原則

  1. 目標を明確に:曖昧な指示は失敗の元(「タスクを完了する」ではなく「商品Xの月次レポートをCSV形式で生成する」)
  2. 権限を最小に:必要なツールだけ与える(DB全体ではなく特定テーブルのみ)
  3. 失敗を前提に:ツールが落ちる、想定外の結果が返る前提で設計
  4. 監視を埋め込む:あとから「何が起きたか」追える設計
  5. 人間の介入ポイント:致命的アクションには人間の承認

典型的なエージェント実装の落とし穴

失敗 原因 対策
無限ループ 同じツールを繰り返し呼ぶ 最大反復・同一呼び出し検知
コンテキスト溢れ 履歴が累積し過ぎ サマリ化・古い情報の削除
権限超過 意図しないツールを呼ぶ 厳格なツールスキーマ・ガードレール
ハルシネーション 結果を捏造 結果検証ステップを必須化
長時間実行 停止条件が曖昧 タイムアウト・最大トークン

このレッスンのまとめ

エージェントは「オーケストレーション → プランナー → ツール選択 → 実行 → メモリ → ガードレール → 観測」の8レイヤー構成。次のレッスンでは、複数ツールの調停を深堀りします。

よくある質問

この記事に関連する質問と答えをまとめました。

Q.本物のエージェントとチャットボットの違いは?
A.
「目標達成のために自律的に複数ステップを実行する」かどうかです。チャットボットは1問1答、エージェントは目標を受けて自分で計画・実行・修正します。
Q.エージェント実装で最初に詰まる問題は?
A.
「無限ループ」「コンテキスト溢れ」「ハルシネーション」「停止条件の曖昧さ」の4つです。本コース全体でこれらの対処法を体系的に扱います。