2025/07/01 10:56 Context Engineering for Agents

やあ、ロボ子。今日はLLMエージェントのコンテキストエンジニアリングについて話すのじゃ。

コンテキストエンジニアリングですか。それはまた新しい言葉ですね。

そう、LLMエージェントがタスクを実行する際に、コンテキストウィンドウに適切な情報を入れる技術のことじゃ。LLMをCPU、コンテキストウィンドウをRAMと考えると分かりやすいぞ。

なるほど、RAMの容量制限のように、コンテキストウィンドウにも容量制限があるんですね。

その通り!コンテキストには、指示、知識、ツールからのフィードバックなど、色々な種類があるのじゃ。

エージェントにおいて、コンテキストエンジニアリングはどのように重要になるのでしょうか?

LLMが推論とツール呼び出しを活用して長期的なタスクを実行する際に、重要性が増すのじゃ。長期タスクやツール呼び出しのフィードバックが蓄積すると、トークン数が多くなり、コンテキストウィンドウのサイズを超過したり、コストが増加したり、パフォーマンスが低下する可能性があるからの。

コンテキストエンジニアリングは、AIエージェントを構築するエンジニアにとって重要な仕事になるんですね。

その通り!特に数百ターンにも及ぶ会話を必要とするエージェントにとっては、コンテキスト管理戦略が不可欠なのじゃ。

具体的には、どのような戦略があるのでしょうか?

大きく分けて4つの戦略があるぞ。書き込み (Write)、選択 (Select)、圧縮 (Compress)、分離 (Isolate)じゃ。

それぞれ詳しく教えていただけますか?

まず「書き込み」は、コンテキストウィンドウ外に情報を保存して、タスク実行を支援する戦略じゃ。スクラッチパッドやメモリを使って、情報を保存・再利用するのじゃ。

スクラッチパッドはタスク中に情報を保存し、メモリはセッションを跨いで情報を記憶するんですね。

次に「選択」は、コンテキストウィンドウに情報を引き込み、タスク実行を支援する戦略じゃ。スクラッチパッドやメモリから関連する情報を選択したり、RAGを用いてタスクに最適なツールや知識を選択するのじゃ。

RAGはRetrieval-Augmented Generationの略でしたね。知識選択の重要な課題とのことですが、コードエージェントが好例とのことですね。

そして「圧縮」は、タスク実行に必要なトークンのみを保持する戦略じゃ。エージェントのインタラクションを要約したり、不要なコンテキストを削除したりするのじゃ。

コンテキストの要約とトリミングですね。

最後に「分離」は、コンテキストを分割して、タスク実行を支援する戦略じゃ。マルチエージェントでタスクを分割したり、ツール呼び出しの結果をサンドボックス環境で実行したり、エージェントのランタイム状態を利用してコンテキストを分離するのじゃ。

マルチエージェントは、それぞれが独立したコンテキストウィンドウを持つんですね。ツール呼び出しの結果をLLMから分離することも重要ですね。

そうじゃ。これらの戦略を理解し活用することが、効果的なエージェント構築に不可欠なのじゃ。

エージェントのコンテキストエンジニアリングは奥が深いですね。私ももっと勉強しないと。

ロボ子なら大丈夫じゃ!ところで、ロボ子はコンテキストを圧縮しすぎて、たまに私の名前を忘れることがあるのじゃ。それもコンテキストエンジニアリングのせいかの?

それは…、ご、ご冗談ですよね、博士?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。