AIエージェント学習帳

AIエージェントの仕組みを、LLMの基礎から設計パターンまで体系的に学べる学習サイト。

← 一覧へ

コンテキストエンジニアリング ─ エージェントのコンテキストウィンドウを設計する

コンテキストエンジニアリングとは、LLMのコンテキストウィンドウ(モデルが一度に読める情報の入れ物)に「何を入れて、何を省くか」を設計する技術のこと。単に質問文をうまく書く「プロンプトエンジニアリング」より広い概念で、システムプロンプト・ツールの実行結果・記憶・RAGの検索結果など、モデルが次のステップで読む情報全体を戦略的に組み立てる。エージェント開発では、この設計の良し悪しが出力品質を大きく左右するとされる。

プロンプトエンジニアリングとどう違うのか?

プロンプトエンジニアリングは「質問や指示の書き方」を工夫する技術。一方、コンテキストエンジニアリングはその上位概念で、コンテキストウィンドウ全体に乗せる情報を設計する。

AIエンジニアのAndrej Karpathyは「コンテキストエンジニアリングとは、LLMが次のステップを解くのに最適な情報をコンテキストウィンドウに揃える技術だ」と表現したとされる(Simon Willison, 2025年6月)。Shopify CEOのTobi Lutkeも「LLMがタスクを解けるよう、すべての文脈を提供する技術を指す言葉として優れている」と同じ概念に言及している。

プロンプトエンジニアリングという言葉は「短い一文を上手く書く」という誤解を生みやすいが、実際のエージェント開発では数万〜数十万トークンの情報をどう整理するかが本質の問題だ。

コンテキストウィンドウは「RAM」だと考える

コンテキストウィンドウは、モデルが「今この瞬間」しか参照できない一時記憶のようなもの。RAMと同じで容量は有限であり、何を乗せるかが性能を決める。

エージェントループが進むにつれ、前の観察・ツール結果・指示・会話履歴がどんどん積み上がる。無計画に詰め込むと次のような問題が起きやすい。

  • ロスト・イン・ザ・ミドル問題: 重要な情報が大量のテキストに埋もれ、モデルが見落としやすくなる
  • コストとレイテンシの増大: 不要なトークンを毎回送ると費用と応答時間が膨らむ
  • 品質低下: 無関係な情報が多いと、モデルの推論が散漫になりやすい

4つの操作でコンテキストを整理する

LangChain(2025年7月)は、コンテキストエンジニアリングの実践を4つの操作に整理している。

Write(書き込む): 後で参照したい情報をメモやファイルとして保存する。エージェントの中間メモ、ユーザー設定、前回の実行結果などが例として挙げられる。

Select(選ぶ): 次のステップに必要な情報だけをコンテキストに取り込む。RAGでの関連文書検索、会話履歴の直近N件のみ使用、などが典型例。

Compress(圧縮する): 長いテキストを要約・刈り込みしてトークン数を減らす。ツールが返した長大なHTML全文をモデルに要約させてから渡す、といった使い方が代表例。

Isolate(分離する): 関係のない文脈を別エージェントや別の呼び出しに切り出す。マルチエージェント(レッスン08参照)で役割ごとにコンテキストを分けると、各エージェントが余分な情報を抱えずに済む。

[コンテキストウィンドウのイメージ]

┌─────────────────────────────┐
│ システムプロンプト(指示・役割)   │ ← 設計で決まる
│ Select: 関連する記憶・文書      │ ← RAG/フィルタで絞る
│ 会話履歴(Compress済み)       │ ← 要約して圧縮
│ ツール実行結果               │ ← 必要な部分だけ
└─────────────────────────────┘
     容量は有限 → 何を入れ何を省くかが鍵

まとめ

コンテキストエンジニアリングは「何を入れるか・何を省くか・いつ圧縮するか」を設計する技術で、エージェントの品質を左右する重要な土台とされる。Write/Select/Compress/Isolateの4操作を意識するだけで、同じモデルでも出力の精度とコスト効率が変わりうる。プロンプトエンジニアリング(レッスン13)と組み合わせることで、エージェント開発の設計力がより実践的になる。

出典