コンテキストエンジニアリング2026年8月16日 | |
🐧 要するにどういう話かChatGPTが出てすぐのころは、望みの回答を得るにはプロンプト(入力)の工夫が重要だという認識により「プロンプトエンジニアリング」などといわれはじめたが、その成果が都度モデル側に取り込まれていくにつれ、モデルの自律性とそれが動作する環境のほうが問題になりはじめ、今度はコンテキスト(文脈)管理のほうが重要だと認識されはじめた。一般ユーザーにも「AIだからよしなにやってくれるんでしょ」という感じで何でも突っ込んではうまくいかないことがうっすら認識されつつある。それこそエンジニアリングが必要だ、というのがコンテキストエンジニアリングの話である。 1. はじめにこの文書は、Prompt Engineering Guide などを参考にして作成した。 2. コンテキストエンジニアリングとは定義AIモデル(特に大規模言語モデル:LLM)が望ましい回答を生成するようにプロンプト(指示)を設計・最適化する技術をプロンプトエンジニアリングという。コンテキストエンジニアリングはその上位概念である。
LLM が1回の推論で一度に見て参照できるテキストの範囲(最大トークン数)をコンテキストウィンドウという。これはモデルの「ワーキングメモリ」に相当し、有限である。コンテキストウィンドウのサイズを(最大)コンテキスト長という。 コンテキストエンジニアリングは、LLM の推論時に渡すトークン集合の整備と管理を通じて、望ましい結果が得られる確率を最大化する技術の総称である。対象はプロンプトだけでなく、コンテキストウィンドウに入る全体である。 比喩Andrej Karpathy 氏は、LLM を CPU、コンテキストウィンドウを RAM、コンテキストエンジニアリングを OS(オペレーティングシステム)にたとえた。OS が CPU の RAM に何を載せて何を追い出すかを決めるように、コンテキストエンジニアリングはその限られたコンテキストウィンドウに何を入れるかを決める。 なぜ必要かコンテキストウィンドウの容量には限界があるし、容量に余裕があっても何でも詰め込めばよいというわけではない。理由は次の通りである。
つまり、「情報が多いほどよい」というわけではない。必要最小限の高シグナルなトークンのみを入れることが重要である。 対象の幅コンテキストエンジニアリングが扱うのは、コンテキストウィンドウに入るすべてのものである。
LangChain は、コンテキストを次の 3 つのタイプに整理した。
誰に使えるかコンテキストエンジニアリングは、次の 3 つの立場のいずれでも使える。
Prompt Engineering Guide では「盲目的な指示(blind prompting)」と「プロンプトエンジニアリング」を区別している。「盲目的な指示」は文脈を考えずに短いタスクの記述を送ることで、プロンプトエンジニアリングは文脈と構造を考えた指示である。コンテキストエンジニアリングは、さらに全体系にまで視野を広げたものである。 基本原則コンテキストエンジニアリングの基本原則は 1 文で言える:「望ましい結果が得られる確率を最大化する、最小の高シグナルなトークン集合を見つけよ」。これは 5 章以降の全技術が狙う目標である。 3. AI エージェントの基礎コンテキストエンジニアリングが最も重要となるのは、AI エージェントの構築においてである。この章では、AIエージェントの基礎を整理する。 3 層の心のモデルエージェントは、次の 3 層で理解できる。
エージェントとは何かエージェントは、LLM がループの中で自律的にツールを使ってタスクを遂行するシステムである。通常の LLM 呼び出しとの違いは、モデルが「次に何をすべきか」を繰り返し決め、ツールを使う点にある。 フロー型と自律ループ型エージェント的なシステムには、次の 2 つの形がある。
近年は自律ループ型が主流になりつつある。それゆえ、構築側でも利用側でもコンテキストエンジニアリングの重要性が増している。 3 つの部品エージェントには、次の 3 つの基本的な部品がある。
ファンクション呼び出しとエージェントループファンクション呼び出し(ツール呼び出し)は、LLM がツールを使う仕組みである。流れは次の通りである。
エージェントループを図で示す。 flowchart TD
A["ユーザのメッセージ"] --> B["コンテキストの組み立て
システムプロンプト + ツール + 履歴"] B --> C{"ツールを呼ぶべきか"} C -- "呼ぶ" --> D["ツールを実行"] D --> E["観察をコンテキストに追加"] E --> C C -- "呼ばない" --> F["ユーザへの応答"] ここで重要なのは、観察がコンテキストに積み上がることである。モデルは次回に応答を返すとき、過去のすべての観察を含んだコンテキストに基づいて判断する。つまりエージェントが働けば働くほどコンテキストは膨らみ、その管理が重要になる。これがコンテキストエンジニアリングの動機である。 4. コンテキストウィンドウに入るものこの章では、コンテキストウィンドウに入るものと、その扱い方を整理する。 システムプロンプトシステムプロンプトはコンテキストの土台である。次の点に注意する。
Prompt Engineering Guide の deep-research エージェントのシステムプロンプトは、「エージェントの定義」「一般的な指示」「ツールの説明」「エラー処理」の構造を持っている。セクション分割の良い例である。 ツールツールはトークンを消費しやすいコンテキストである。
少数例(few-shot)少数例は有効だが、注意して選ぶ。
その他の要素ウィンドウに入るその他の要素は次の通りである。
5. コンテキストエンジニアリングの 4 つの戦略LangChain は、コンテキストエンジニアリングの技術を次の 4 つの戦略に整理した。書き出す、選ぶ、圧縮する、分離するである。 書き出す(Write)情報を外に書き出し、取得可能にする。
なぜ効くか:モデルはコンテキストにないものにはアクセスできない。書き出すことで、コンテキストを膨らませずに、情報をいつでも使える状態にする。 選ぶ(Select)必要な情報のみを選んで、コンテキストウィンドウに入れる。
なぜ効くか:その瞬間に実際に必要なトークンだけを入れる。「アテンション予算」を節約し、無関係な内容からのそらしを避ける。 圧縮する(Compress)コンテキストを縮小する。
なぜ効くか:コンテキストを圧縮することで、トークン数を減らしつつ重要な情報を残せる。コンテキストウィンドウに限界がある状況でも動作を続けられる。 分離する(Isolate)コンテキストを分ける。
なぜ効くか:コンテキストを分離することで、タスク間の汚染を防ぎ、各エージェントのコンテキストを小さく、高シグナルな状態に保つ。 4 つの戦略の関係4 つは排他的ではない。状況に応じて組み合わせる。共通する目標は、コンテキストを小さく、高シグナルな状態に保つことである。 6. 長時間タスクへの適用長時間のタスク(長いコーディングセッションなど)は、コンテキストに負荷をかける。トークン数がコンテキストウィンドウを超えたり、コンテキストが汚染されたりする。Anthropic は、この制約に直接対処する 3 つの技術を提示した。 圧縮(Compaction)圧縮は、コンテキストウィンドウの限界に近づいた対話を要約し、その要約で新しいウィンドウに再開始する技術である。
圧縮は、対話中心のタスクに向く。 構造化ノート取り(Structured note-taking)エージェントが重要な状態をノートファイルに書き、各ステップで参照する。
ノート取りは、反復的な開発に向く。 ※個人的にはタスクリストは サブエージェント(Sub-agents)メインのエージェントが計画し、サブエージェントがクリーンなコンテキストウィンドウで作業し、要約を返す。
サブエージェントは、並列な探索や独立したサブタスクに向く。 使い分け
7. 実践コンテキストエンジニアリングは一度で完成するものではなく、反復的な作業である。 反復プロセス次のサイクルを回す。
Prompt Engnieering Guide は「最大の性能改善は、システムプロンプトでツールの利用方法を明確に説明することからしばしば生まれる」としている。ツールのパラメータを定義するだけでは不十分である。 観察可能性(Observability)反復するには、中身を見られる必要がある。
よくある落とし穴
評価コンテキストエンジニアリングの効果を測定すべきである。
8. ユーザーとしてのコンテキストエンジニアリングここまでは主に「エージェントを組む」立場で述べてきた。この章では、2〜7 章の原則をユーザーの立場からもう一度読み替える。 コーディングエージェントを使う場合4〜6 章の技術は、コーディングエージェントの具体的な機能に対応している。
原則を理解していれば、どの状況でどの機能を使えばよいか判断できる。 タスク・出力形式・制約を明示する
関連する資料だけ提示する
望ましい出力の例を見せる
日付や期間を伝える
出力を見て指示を改善する
9. 結語コンテキストは有限な資源である。何でも入れればよいものではない。モデルが賢くなるほど必要な指示は減るが、何をコンテキストに入れるかの選択の重要性は残る。コンテキストエンジニアリングは、限られたコンテキストウィンドウの中で、望ましい結果が得られる確率を最大化する最小の高シグナルなトークン集合を見つける仕事である。この文書ではその基礎を示した。 📚 参考文献 | |
| PENGUINITIS | |