AnthropicによるAIエージェント向け効果的なコンテキスト工学
Anthropicは、従来のプロンプト工学から脱却し、大規模言語モデル(LLM)の推論中に提供されるトークンの総体を戦略的に選定・維持するというコンテキスト工学の概念を導入しました。このアプローチは、複数のターンにわたる長時間にわたる運用を必要とする強力なAIエージェントを構築する上で不可欠であり、単にプロンプトの表現を最適化するのではなく、システム指示、ツール、メッセージ履歴を含む包括的な状態を管理することが重要です。
コンテキスト工学の必要性
コンテキスト工学は、LLMが有限の「注目予算」を持ち、コンテキストロット(context rot)と呼ばれる現象に直面するため必要です。これは、コンテキストウィンドウ内のトークン数が増えるにつれて、モデルが情報を正確に記憶する能力が低下する現象です。
この劣化は、トランスフォーマー構造のトークン間の $n^2$ のペアワイズ関係が、コンテキストが拡大するにつれて注目を薄くしてしまうことに起因します。さらに、トレーニングデータは通常短いシーケンスで構成されているため、モデルはコンテキスト全体の依存関係に特化したパラメータが不足しています。その結果、コンテキストは限られたリソースであり、限界効用逓減の特性を持つものと扱うべきであり、望ましい結果の確率を最大化するためには、高信号のトークンの最小集合を見つけることが目標となります。
効果的なコンテキストの構造
注目予算の効用を最大化するため、Anthropicはコンテキストの3つの主要な要素を最適化することを推奨しています。
システムプロンプト
システムプロンプトは「適切な高さ」(right altitude)を目指すべきです。これは、脆いハードコードされた論理と、あまりに曖昧なガイドラインの間のバランスです。効果的に行動を導くために十分に具体的である一方で、強力なヒューリスティクスを提供できるだけの柔軟性も持つべきです。Anthropicは、XMLタグやMarkdownヘッダーを使用して、<background_information>、<instructions> などの明確なセクションに分けることを提案しています。
ツール
ツールは自己完結型で、堅牢かつトークン効率的であるべきです。一般的な失敗モードは、「肥大化したツールセット」の使用であり、これによりエージェントに曖昧さが生じます。最小限の実用的ツールセットをキュレートすることで、長期的な相互作用においてより信頼性の高いメンテナンスとコンテキストの削減が可能になります。
例示
エッジケースの網羅的なリストを提供するのではなく、開発者は多様で代表的な例(少しだけの例提示、few-shot prompting)をキュレートすべきです。これにより、エージェントの期待される振る舞いが明確に示されます。
コンテキストの取得とエージェント検索
Anthropicは、埋め込みベースの事前推論取得から「タイムリーな」コンテキスト戦略へのシフトを観察しています。
- タイムリーな取得(Just-in-Time Retrieval): エージェントは軽量な識別子(ファイルパスやウェブリンクなど)を保持し、実行時にツールを使ってデータを動的にコンテキストに読み込みます。たとえば、Claude Code は、ターゲットクエリを書くことで大規模なデータベースを分析し、
headやtailなどのBashコマンドを使って完全なデータオブジェクトを読み込まない方法を採用しています。 - 段階的公開(Progressive Disclosure): これにより、エージェントは探索を通じて関連するコンテキストを段階的に発見でき、メタデータ(フォルダ階層やタイムスタンプなど)を使って次の意思決定を支援できます。
- ハイブリッド戦略: 一部のエージェントは、速度のために事前に計算されたデータ取得と、深さのために自律的な探索を組み合わせます。Claude Codeは、
CLAUDE.mdファイルを事前に読み込む一方で、globやgrepを用いてタイムリーなナビゲーションを実行することで、この戦略を活用しています。
長期間タスクの管理
数時間にわたるタスクや、コンテキストウィンドウを超えるトークン数を必要とするタスクでは、Anthropicはコンテキスト汚染を防ぐための3つの主要な技術を提示しています。
圧縮(Compaction)
圧縮は、会話がコンテキスト制限に近づくとそれを要約し、その要約を使って新しいウィンドウを再初期化するものです。Claude Codeでは、アーキテクチャ上の決定や未解決のバグを保持しながら、重複するツール出力を破棄します。この手法の「軽いアプローチ」は、ツールの結果をクリアする(過去のツール呼び出しの生データを履歴から削除する)方法です。
構造化ノート記録
エージェントメモリとも呼ばれるこの手法は、エージェントが永続的な外部メモリ(例:NOTES.md ファイル)にノートを書き込み、必要に応じてそれをコンテキストに戻すことを意味します。これにより、リセット後も状態を維持でき、Claudeがポケモンゲームで目標や戦略を追跡できるようにします。
サブエージェントアーキテクチャ
このアーキテクチャでは、リーダーエージェントが高レベルの計画を調整し、専門的なサブエージェントがクリーンなコンテキストウィンドウで集中したタスクを処理します。サブエージェントは深く作業を行い、リーダーエージェントにわずかに要約(通常1,000〜2,000トークン)を返却するだけで、責任の明確な分離が保たれます。
| 戦略 | 最適な用途 |
|---|---|
| 圧縮 | 広範な双方向の会話フローが必要なタスク |
| ノート記録 | 明確なマイルストーンを持つ反復的開発 |
| マルチエージェント | 並列探索を必要とする複雑な研究や分析 |
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch