Claudeエージェント実装:深掘り編
0 / 6 完了
(0%)
LESSON 01
/ 06
エージェント・アーキテクチャの全体像

「エージェント」はバズワードですが、本物の自律エージェントを 本番環境で安定動作 させるには、しっかりした設計が必要です。本レッスンではエージェント・アーキテクチャの全体像を俯瞰します。
エージェントの定義(実装視点)
本コースで扱う「エージェント」は次の特徴を持ちます:
- 目標指向:与えられた目標を達成するために自律的に動く
- ツール利用:複数の外部ツール(API・DB・ファイル等)を呼び出す
- 多段推論:1ステップでは終わらず、状態を見ながら次の行動を決める
- 自己修正:失敗・想定外の結果から軌道修正する
エージェントの実装レイヤー
本格的なエージェントは、複数レイヤーの責務分離で構成されます。
| レイヤー | 責務 |
|---|---|
| 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)対応
エージェント設計の原則
- 目標を明確に:曖昧な指示は失敗の元(「タスクを完了する」ではなく「商品Xの月次レポートをCSV形式で生成する」)
- 権限を最小に:必要なツールだけ与える(DB全体ではなく特定テーブルのみ)
- 失敗を前提に:ツールが落ちる、想定外の結果が返る前提で設計
- 監視を埋め込む:あとから「何が起きたか」追える設計
- 人間の介入ポイント:致命的アクションには人間の承認
典型的なエージェント実装の落とし穴
| 失敗 | 原因 | 対策 |
|---|---|---|
| 無限ループ | 同じツールを繰り返し呼ぶ | 最大反復・同一呼び出し検知 |
| コンテキスト溢れ | 履歴が累積し過ぎ | サマリ化・古い情報の削除 |
| 権限超過 | 意図しないツールを呼ぶ | 厳格なツールスキーマ・ガードレール |
| ハルシネーション | 結果を捏造 | 結果検証ステップを必須化 |
| 長時間実行 | 停止条件が曖昧 | タイムアウト・最大トークン |
このレッスンのまとめ
エージェントは「オーケストレーション → プランナー → ツール選択 → 実行 → メモリ → ガードレール → 観測」の8レイヤー構成。次のレッスンでは、複数ツールの調停を深堀りします。
よくある質問
この記事に関連する質問と答えをまとめました。
Q.本物のエージェントとチャットボットの違いは?
A.
「目標達成のために自律的に複数ステップを実行する」かどうかです。チャットボットは1問1答、エージェントは目標を受けて自分で計画・実行・修正します。
Q.エージェント実装で最初に詰まる問題は?
A.
「無限ループ」「コンテキスト溢れ」「ハルシネーション」「停止条件の曖昧さ」の4つです。本コース全体でこれらの対処法を体系的に扱います。