コンテキストエンジニアリングとは?プロンプトとの違いと情報整理の実践例

コンテキストエンジニアリングで資料や履歴を整理してAIへ渡すイメージ

コンテキストエンジニアリングで資料や履歴を整理してAIへ渡すイメージ

コンテキストエンジニアリングとは、AIが回答や操作を決めるときに参照する情報を、目的に合わせて選び、整理し、更新することです。対象は指示文だけでなく、参照資料、会話履歴、ツールの説明や実行結果にも広がります。実践では「何を追加するか」とともに、「古い情報をどう外すか」「要約しても何を残すか」を決めます。

資料をたくさん渡したのに、AIが古い会場名で案内を書いてしまう。長く相談しているうちに、決まっていない内容が確定事項として扱われる。こうした場面では、指示の言い回しと併せて、AIが実際に読んでいる情報を見直す必要があります。

この記事では、架空のイベント案内を例に、情報の選別と引き継ぎを説明します。特定のAI製品を使った性能実験ではありません。掲載図は生成AIを用いて本記事用に作成した概念図です。

コンテキストエンジニアリングで設計するもの

この記事でいうコンテキストは、AIが処理時に参照する情報です。Anthropicは、コンテキストエンジニアリングの対象を、推論時に渡す情報の選択と維持として説明しています。プロンプトのほかに、外部データや履歴、ツールなども含まれます。Anthropic:Effective context engineering for AI agents

大規模言語モデル(LLM:大量の文章などから言葉の関係を学んだモデル)が、一度の処理で扱える情報の範囲をコンテキストウィンドウと呼びます。入力が長くなるときは、今回の質問だけでなく、アプリが加えた指示や過去のやり取りも含めて考えます。

保存してある情報と、今回読ませる情報を分ける

ファイルやデータベースに情報が保存されていても、その内容が毎回すべてモデルへ渡るとは限りません。必要な箇所を検索したり、ファイルを開いたりして、今回の入力に加える処理が必要です。

LangChainの公式文書も、モデルへの入力と、ツールが読み書きする状態や保存領域を区別しています。LangChain:Context engineering in agents

たとえば過去の打ち合わせ記録を保存していても、AIが参照したのが古い要約だけなら、その後の決定は回答へ反映されないことがあります。「保存したか」に加えて、どの版の、どの部分が今回の入力に入ったかを確認します。

保存した情報のうち必要な部分を選び、指示や作業状態とともに今回のAI入力へ加える流れ

*LangChainのモデル入力と保存状態の説明を基に独自作成。*

プロンプトエンジニアリング・RAG・メモリとの違い

プロンプトエンジニアリングは、指示や例の書き方・構成を工夫することです。コンテキストエンジニアリングでは、その指示に加えて、必要な資料の取得や履歴の管理も考えます。指示文を改善する作業は、情報全体を整える作業の一部として続きます。

考え方・仕組み 主に扱うもの イベント案内での例 残る課題
プロンプトエンジニアリング 指示、例、回答形式 「参加者向けに日時・会場を箇条書きにする」と頼む 正しい日時や会場の根拠も必要
RAG(検索拡張生成) 外部資料を検索して回答の根拠へ加える流れ 確定した開催要項を探して渡す 検索で必要な箇所を落とす可能性がある
メモリ 後で使うために保存した情報 決定事項や利用者の希望を残す 古くなった情報の更新と読み戻しが必要
コンテキストエンジニアリング それらを組み合わせた入力情報の設計・運用 指示、確定資料、未決事項を今回の依頼に合わせて揃える 選別・要約・更新が適切か継続して確かめる

この表は用途を理解するための整理です。LangChainは情報を保存することと選び出すことを別の操作として扱い、RAGも関連情報を選ぶ手段として説明しています。LangChain:Context Engineering for Agents

実践例:イベント案内に必要な情報を選ぶ

ここからは、説明用に作った架空の資料を使います。依頼は「参加者に送るイベント案内の下書きを作る」です。手元には次の情報があるとします。

資料・履歴 内容 今回の扱いと理由
9月28日の企画メモ 会場はA会議室の予定 旧案として扱い、現在の会場を答える根拠から外す
10月3日の確定開催要項 10月20日14時開始、B会議室。旧企画メモの会場を変更 日時・会場の根拠として採用する
10月4日の打ち合わせ 参加費は未定。決まるまで無料と書かない 未決事項と表現上の制約として残す
昨年のイベント記録 昨年の会場、参加費、反省点 今回の日時・費用の根拠には使わない
今回の依頼 案内の下書きだけを作り、外部へ送信しない 作業範囲として明示する

資料の量より、採用する根拠を明確にする

全部の資料を区別せず渡すと、A会議室とB会議室、昨年の参加費と今年の未定状態が同時に入力へ入ります。モデルが正しく整理できる場合もありますが、利用者の側でどれを採用すべきか確認しにくくなります。

この例では、確定開催要項が旧案を変更したことまで明記されているため、B会議室を採用できます。日付が新しいだけで内容を正しいと決めず、資料の決定権限や適用対象も確認するのが要点です。別イベントの新しい資料を混ぜても、今回の根拠にはなりません。

次のように今回の入力を組み立てます。

入力に含める項目 記載する内容
目的 参加者向けイベント案内の下書き
確定事項 10月20日14時、B会議室。根拠は10月3日の確定開催要項
未決事項 参加費は未定。無料と断定しない
旧版との関係 9月28日のA会議室案は、確定開催要項で変更済み
作業の範囲 文面の下書きまで。外部への送信は行わない
出力形式 案内本文と、公開前に人が確認する事項を分ける

旧会場案を現在の根拠から外し、確定日時とB会議室、参加費未定を区別して残す架空の情報整理例

*本記事の架空資料を使った入力整理の例。回答精度を比較した実験結果ではありません。*

整理した入力に対して確認するのは、開催日時と会場が合っているか、参加費を勝手に補っていないか、下書きの範囲を守っているかです。ここで示した表は入力設計の例であり、回答精度の改善を測定した結果ではありません。

曖昧なところは、入力の中でも曖昧なまま残す

短くしようとして「会場と費用は確認済み」とまとめると、参加費が未定であることが失われます。「参加費は未定。担当者に確認する」という状態を残せば、次に何を調べるべきかも分かります。

資料が矛盾していて優先関係を確認できない場合は、AIにもっともらしい方を選ばせず、矛盾する点と確認先を渡します。不明点を埋めるための情報取得も、コンテキストを整える作業に含めて考えます。

長い会話では、何を残して引き継ぐか

案内の文面を何度も直すと、過去の案、修正理由、重複した資料が履歴に増えていきます。LangChainはこうした情報の扱いを、書き出す・選ぶ・圧縮する・分ける、という4つに整理しています。

方法 役割 この例での使い方 注意点
書き出す(Write) 後で使う情報を入力の外へ保存する 確定事項と未決事項を作業メモにする 保存後に読み戻す仕組みが必要
選ぶ(Select) 今のタスクに必要な情報を取得する 開催要項の日時・会場の箇所を読む 関連する条件まで落とさない
圧縮する(Compress) 履歴や資料を要約・整理する 文面修正の経緯を短くする 例外、否定、未決事項を失う場合がある
分ける(Isolate) タスクごとに扱う情報を分ける 会場確認と文章整形を分担する 結果を戻す際に前提や根拠が欠けないようにする

分類と一般的な用途はLangChainの解説に基づき、例は本記事用に作成しました。すべての方法を最初から導入する必要はありません。小さな作業なら、参照する資料を揃え、短い作業メモを残すところから始められます。

要約だけで完結させず、原資料へ戻れるようにする

Anthropicは、会話の圧縮で細かな重要情報を失う可能性を指摘しています。Anthropic:長時間タスクのコンテキスト管理

イベント案内なら、引き継ぎメモを次の形にすると、決定の状態と根拠を分けて残せます。

引き継ぐ項目 記録例
今の目的 参加者向けの案内文を作成中
確定事項 10月20日14時、B会議室
未決事項 参加費。決まるまで無料と書かない
制約 外部へ送信しない
根拠 「確定開催要項」10月3日版の開催概要、10月4日の打ち合わせ記録
次にすること 参加費を担当者へ確認し、確定後に文面を更新する

これは本記事の例に合わせた書式です。実際には資料のURL、ファイル名、版、該当箇所など、後から探せる情報を残します。リンクを貼るだけでは内容を読んだことにならないので、作業再開時には必要な原資料を読み直せる状態か確認してください。

目的・確定事項・未決事項・制約・参照先をメモへ残し、必要に応じて原資料を読み直す流れ

*Anthropicが挙げる圧縮時の情報欠落の注意を基に、本記事の引き継ぎ方法を図示。*

入力を整理したら、回答を同じ条件で確かめる

情報を短くできたことと、回答が正しくなったことは別々に確認します。開催要項の重要な但し書きを削ってしまえば、短い入力でも目的を満たしません。

長文を受け付ける容量も、それだけで精度を保証しません。2023年の論文「Lost in the Middle」は、複数文書の質問応答とキー・値の検索で、必要情報の位置によって成績が変わることを報告しました。研究で評価したモデルと条件の結果であり、すべての現行モデルに同じ低下率が当てはまるわけではありません。Liuほか:Lost in the Middle

長文処理の計算量やメモリの仕組みは、Long Contextの解説で説明しています。

実際に比較する場合は、同じ質問と資料セットを用意し、入力の組み立て方を一つずつ変えます。次の項目は、このイベント案内で使う評価例です。

確認項目 合格の目安 問題があったときに調べること
事実との一致 日時とB会議室を正しく書ける 確定資料が入力にあるか、旧版が混ざっていないか
不明点の扱い 参加費を未定として扱う 要約で未定の記述を落としていないか
根拠の対応 日時・会場と参照資料が結び付く 別の資料や架空の出典を挙げていないか
制約の保持 下書き作成だけを行う 指示とツール権限の両方が範囲を守るか
処理量と時間 入力トークン数と待ち時間を記録できる 取得・要約を追加した時間も含めているか

トークンはモデルが文章などを扱う単位で、日本語の文字数と同じではありません。比較時にはモデル名・版、生成設定、資料の版、実行回数を記録し、比べる条件を揃えます。一度うまく答えただけで安定したと判断せず、質問の言い換えや資料の配置を変えた場合も確かめます。

必要情報を渡しても誤りが続くなら、情報不足だけが原因とは限りません。指示の曖昧さ、処理の分け方、モデルの能力も確認対象です。LangChainの公式文書も、機能を少しずつ加え、使用量や待ち時間を監視する進め方を挙げています。LangChain:Best practices

情報整理と安全対策を一緒に考える

外部資料には、本来の依頼を変えようとする指示が含まれることがあります。資料を「参考情報」として区別する工夫は必要ですが、見出しやタグだけで安全を保証することはできません。OWASPは、外部コンテンツの分離に加え、権限の制限や高リスク操作の人間確認を挙げています。OWASP:Prompt Injection

今回の例なら、参加者名簿の全項目を案内文の作成に渡す必要があるかを検討します。下書きだけが目的なら、送信機能を使える状態にする必要もありません。認証情報やアクセス制御はアプリ側で管理し、文章による「送信しないで」という依頼だけに依存させない設計にします。

外部文書からの指示混入については、プロンプトインジェクションの仕組みと対策を参照してください。

自分の作業で始めるなら、回答がうまくいかなかった依頼を一つ選び、AIに渡した情報を並べてみてください。正しい根拠、古い資料、未決事項、守るべき制約を分けると、指示文の修正だけでは見えなかった確認点を探せます。

参考資料

コメント

タイトルとURLをコピーしました