概要
https://lucumr.pocoo.org/2025/11/21/agents-are-hard/
詳細内容
## エージェント設計は依然として困難
https://lucumr.pocoo.org/2025/11/21/agents-are-hard/
**Original Title**: Agent Design Is Still Hard
著者は、AIエージェント構築の複雑性を詳述し、SDKの抽象化、キャッシュ管理、強化学習、障害分離、ファイルシステムによる状態共有、出力ツールの活用、モデル選択など、実践から得られた具体的な教訓を提示する。
**Content Type**: ⚙️ Tools
**Language**: en
**Scores**: Signal:5/5 | Depth:5/5 | Unique:4/5 | Practical:5/5 | Anti-Hype:5/5
**Main Journal**: 96/100 | **Annex Potential**: 93/100 | **Overall**: 96/100
**Topics**: [[エージェント設計, LLMツール呼び出し, キャッシュ戦略, 強化学習, 仮想ファイルシステム]]
Armin Ronacher氏のブログ記事「Agent Design Is Still Hard」は、AIエージェントの構築が依然として複雑であり、その実践から得られた具体的な教訓を詳細に解説しています。著者は、現在のエージェント開発において、高レベルのSDK抽象化がモデル間の差異やツール使用の複雑さに対処しきれず、かえって問題を生じさせると指摘します。そのため、プラットフォーム固有のSDKを直接使用し、エージェントのロジックを自ら制御する方が、より詳細な制御と明確なエラーメッセージが得られると強調しています。
キャッシュ管理については、Anthropicのような明示的なキャッシュ管理方式を強く推奨しています。これは、コスト予測の容易さ、キャッシュ利用率の向上、および会話の分岐やコンテキスト編集といった高度な操作を可能にするためです。システムプロンプトとツール選択を静的に保ち、動的な情報を後から注入することが、キャッシュを有効に活用する鍵となります。
エージェントの性能向上には「強化学習」が不可欠であると述べています。タスクの目標再確認、ツール失敗時のヒント提供、バックグラウンドでの状態変化の通知などに活用することで、エージェントの進行を促進し、特に自己強化(例:ToDoリストのエコーツール)が効果的であるとしています。また、実行中の障害を主コンテキストから隠蔽する「障害分離」の重要性も指摘。サブエージェントで反復タスクを実行し、成功と不成功のアプローチの要約のみを報告することで、エージェントが失敗から学べるようにすることが肝要です。
コード実行と生成を主体とするエージェントには、仮想ファイルシステムのような「共有状態層」が不可欠です。これにより、異なるツールやサブエージェントがデータを一元的にやり取りできるようになり、複雑なワークフローでの「行き止まり」を防ぎます。ツールはファイルパスを介してこのファイルシステムにアクセスできるよう設計されるべきです。
人間への通知には専用の「出力ツール」を使用する設計が検討されていますが、そのトーンや表現の制御は予想以上に困難であることが課題です。著者は、サブルールとしてのLLMによるトーン調整はレイテンシ増加と品質低下を招くとし、最終出力に不要な情報が混入するリスクも指摘しています。出力ツールの呼び出し忘れに対しては、明示的な強化学習メッセージで促す必要があると述べています。
モデル選択については、ツール呼び出しの精度でHaikuとSonnetを高く評価し、大量文書の要約や画像からの情報抽出にはGemini 2.5が適しているとしています。トークンコストだけでなく、ループ全体での効率性がエージェントの真のコストを決定すると強調。
最後に、エージェントの「テストと評価」が最も困難な課題であると述べ、エージェント特有の性質から従来の評価手法が適用しにくく、実際の実行ログやオブザーバビリティデータに基づいた評価手法の確立が急務であると訴えています。コーディングエージェントでは、Ampのサブエージェント連携(Oracleとメインループ)のデザインが特に優れており、開発者自身が使う視点で作られていると評価しています。