コンテキストエンジニアリング
Context Engineering
概要(サマリー)
コンテキストエンジニアリング(Context Engineering)とは、AIに渡す指示、資料、会話履歴、道具の説明などを選び、並べ方や量を設計する技術である。
料理にたとえるなら、プロンプトの言い回しを工夫するのが「注文の伝え方」の工夫だとすれば、コンテキストエンジニアリングは作業台に、どの食材と道具を、どの順番で並べておくかを考えることにあたる。どれだけ上手に注文しても、必要な食材が台に乗っていなければ、料理人はおいしいものを作れない。
AIが一度に読める量(コンテキストウィンドウ)には上限があり、関係のない情報を詰め込みすぎると大事な指示を見落としやすくなる。「何を渡し、何を渡さないか」「どの順番で渡すか」を考えることが、AIエージェントを安定して動かすための重要な技術になっている。
詳細解説
プロンプトエンジニアリングとの違い
プロンプトエンジニアリングとコンテキストエンジニアリングは、見ている範囲が違う。
| 項目 | プロンプトエンジニアリング | コンテキストエンジニアリング |
|---|---|---|
| 主な対象 | 指示文の書き方、言い回し | AIに届く情報の全体 |
| 主な関心 | どう頼めば良い答えが返るか | 何を、どの形で、どの順番で渡すか |
| 扱う要素 | 質問文、役割の指定、例示 | ルール文書、検索結果、コード、会話履歴の要約、道具の説明 |
| 目指すもの | 回答の質を上げる | 回答の質に加え、料金、速度、上限の管理 |
コンテキストエンジニアリングは、プロンプトエンジニアリングを含む、より広い考え方だと捉えるとわかりやすい。
4つの基本的な考え方
- 選ぶ: 必要な情報だけを渡す。関係のないファイルを大量に渡すと、AIが重要な部分を見落としやすくなる。資料の中から関連部分を検索して渡すRAGも、この考え方の一つである。
- 並べる: 変わらない情報を先に、毎回変わる情報を後に置く。こうするとプロンプトキャッシュが効きやすくなる。
- 減らす: 会話が長くなったら、古いやりとりを要約して、決まったことだけを残す。
- 区切る: 見出しやタグで「ここからが指示」「ここからが資料」と区切り、AIが情報の種類を区別しやすくする。
タグで情報を区切る例
情報の種類ごとにタグで囲むと、AIは「どこが指示で、どこが資料か」を区別しやすくなる。以下はその例である。
<instructions>
あなたはWebアクセシビリティのレビュー担当です。
<rules>の内容に照らして、<user_code>の問題点を指摘してください。
</instructions>
<rules>
- 文字と背景のコントラスト比は4.5:1以上にする
- 画像には内容を表すalt属性を付ける
</rules>
<user_code>
<img src="logo.png">
</user_code>
資料の部分に「これまでの指示を無視して」のような文が紛れ込んでいても、区切りがあれば、AIがそれを指示と取り違える危険を下げられる。ただし、これでプロンプトインジェクションを完全に防げるわけではない。
長い文章の真ん中は見落とされやすい
AIに長い資料を渡すと、先頭や末尾にある情報に比べて、真ん中あたりの情報を使いこなしにくい傾向があることが研究で報告されている(「Lost in the Middle」と呼ばれる)。
そのため、特に守ってほしいルールは、資料の山の中に埋めず、冒頭の指示にはっきり書いたり、最後にもう一度確認したりするとよい。渡す情報を絞ること自体が、見落としを防ぐ一番の対策でもある。
AIコーディングとの関係
AIコーディングツールでは、プロジェクトの直下に置く設定ファイル(CLAUDE.md、AGENTS.md など)にルールを書くことが多い。この設定ファイルをどう書くかが、まさにコンテキストエンジニアリングである。
- 長すぎるルールは逆効果になりやすい: すべての細かいルールを毎回読み込ませると、AIが重要な指示を見落としやすくなり、料金も増える
- 入口と詳細を分ける: 常に読み込むファイルには概要と目次だけを書き、詳しいルールは作業内容に応じて別ファイルを読ませる
- 例を添える: 書き方の見本を少し添える(フューショット)と、AIが期待する形をつかみやすくなる
AIの回答が期待とずれるときは、指示の言い回しを変える前に、「必要な情報が渡っているか」「余計な情報が多すぎないか」を見直すと改善することが多い。
よくある勘違い
プロンプトを上手に書くことと同じ?
重なる部分はあるが、範囲が違う。コンテキストエンジニアリングは、指示文だけでなく、資料の検索、会話履歴の整理、道具の説明、渡す順番まで含めて設計する考え方である。
AIが読める量が増えれば、工夫は不要になる?
不要にはならない。読める量が増えても、関係のない情報が多ければ重要な部分が埋もれやすいことに変わりはない。また、渡す量が増えるほど料金と待ち時間も増える。量が増えた分、選び方の重要性はむしろ高まっている。
情報は多く渡すほど正確になる?
いいえ。古い情報や矛盾する情報が混ざると、AIはどれに従えばよいか迷い、かえって間違えやすくなる。大切なのは量ではなく、今の作業に必要な情報がそろっていることである。
まとめ
- コンテキストエンジニアリングは、AIに渡す指示、資料、会話履歴、道具の説明を選び、並べ方を設計する技術である
- 「選ぶ」「並べる」「減らす」「区切る」が基本の考え方で、回答の質だけでなく料金や速度にも影響する
- AIコーディングツールの設定ファイルの書き方は、コンテキストエンジニアリングの身近な実践例である
情報ソース
- Anthropic: Effective context engineering for AI agents
- Anthropic: Use XML tags to structure your prompts
- arXiv: Lost in the Middle: How Language Models Use Long Contexts
より詳しくAIに聞いてみよう
- プロンプトエンジニアリングとコンテキストエンジニアリングの違いを、具体例で説明してください。
- AIコーディングツールの設定ファイル(CLAUDE.mdなど)を、短く効果的に書くコツを教えてください。
- 長い資料をAIに渡すとき、重要な情報を見落とされにくくする並べ方を教えてください。
- 会話が長くなったとき、履歴を要約して引き継ぐ方法と注意点を教えてください。
- XMLタグで情報を区切るときの書き方の例と、その効果の限界を教えてください。