LLM Frontline
プロンプト実務

コンテキストエンジニアリングとは|プロンプトの次に来る設計の基本

ミナト開発・API担当
・ 約7分で読めます
コンテキストエンジニアリングとは|プロンプトの次に来る設計の基本

「良いプロンプトを書く」だけでは、複数ステップで動くAIエージェントの品質を安定させにくくなってきました。エージェントは1回のやり取りで終わらず、ツールの実行結果や過去の履歴をどんどん抱えていきます。そこで重要になるのが、モデルに渡すコンテキスト全体をどう設計するか、という視点です。この記事では、プロンプトエンジニアリングの発展形として語られる「コンテキストエンジニアリング」の考え方を、実務で使える形に整理します。

プロンプトから、コンテキストへ

プロンプトエンジニアリングは「どう書くか」に焦点がありました。コンテキストエンジニアリングはもう一段広く、システム指示・ツール定義・外部データ・過去のメッセージ履歴まで含めた、モデルが読む情報の状態全体を対象にします。エージェントが何ターンも動く間、絶えず増えていくデータの中から関連する情報だけを残し続ける、反復的な作業だと考えると分かりやすいです。

メモ

プロンプトエンジニアリングが不要になるわけではありません。プロンプトはコンテキストの一部です。単発のやり取りではプロンプト設計が中心で、複数ステップのエージェントになるほどコンテキスト全体の設計が効いてきます。

前提となる「コンテキストの劣化」

コンテキストエンジニアリングが必要になる根っこには、context rot(コンテキストの劣化)という現象があります。渡すトークンが増えるほど、モデルが情報を正確に思い出す力は下がっていきます。これはモデルの手抜きではなく、すべてのトークンが互いに関係を計算し合うアーキテクチャ上の制約から来るものです。

ここから導かれる原則はシンプルです。多く詰め込むほど良いのではなく、望ましい振る舞いを引き出す、情報量の多い最小限のトークン群を探す。これがコンテキストエンジニアリングの目標になります。

何を、どの順で渡すか

渡す情報は、おおまかに次の順で構成すると整理しやすくなります。

要素役割設計の勘所
システム指示振る舞いの土台具体的すぎる場当たり的な分岐を避け、行動を導く強い指針を明確な言葉で。セクションで構造化する
ツール定義できることの提示単一責任・入出力を明確に。機能が重複するツールは曖昧さの元
事例(例示)期待する出力の見本大量のエッジケースより、少数の代表的で質の高い例を厳選
外部データ判断に必要な材料全部を先に積まず、必要なときに必要な分だけ
メッセージ履歴これまでの経緯増え続ける前提で、要約や整理の仕組みを持つ

例示について補足すると、想定される例外を延々と並べるより、代表的なパターンを少数そろえるほうが効きます。良い例は、長い説明文に勝る見本になります。

必要なときに取りに行く

コンテキストを軽く保つ有効な考え方が、都度取得(just-in-time)です。関連データを最初から全部プロンプトに載せるのではなく、ファイルパス・検索クエリ・URLといった軽い参照だけを持たせ、実行時にツール経由で必要な分だけ読み込ませます。ファイルの階層構造や命名規則そのものが、エージェントにとっての手がかりになります。RAGで外部知識を渡す設計とも地続きの発想です。

あわせて読みたい

RAGとは何か|仕組み・向き不向き・導入判断の考え方

長時間動くエージェントの手法

タスクが長く続き、コンテキストの上限が見えてくると、次のような手法で文脈を絞り続けます。

  1. 1

    圧縮(compaction)

    上限に近づいた会話を要約し、要点だけを引き継いで新しいコンテキストで再開します。設計上の決定や未解決の課題は残し、冗長なやり取りは落とすのがコツです。まずはツール実行結果の整理から始めると軽く効きます。
  2. 2

    構造化メモ(外部メモリ)

    重要な情報をコンテキストの外にメモとして書き出し、必要なタイミングで読み戻します。コンテキストがリセットされても一貫性を保つための土台になります。
  3. 3

    サブエージェント

    焦点を絞った作業は専門のサブエージェントに任せ、詳細な探索を切り離します。各サブエージェントは要点だけ(目安として千数百トークン規模)を親に返し、親は統合と判断に集中します。
  4. 4

    都度取得(just-in-time)

    前述のとおり、必要になったデータだけを実行時に読み込み、コンテキストの肥大を防ぎます。

どれを使うかはタスクの性質で決まります。対話の継続性が大事なら圧縮、反復的な開発ならメモ、複雑な分析の分担ならサブエージェント、という使い分けが目安です。

実務での始め方

最初から手法を盛り込むと、どれが効いているのか分からなくなります。まずは最小限のコンテキストで動かし、失敗の仕方を観察してから、その失敗を潰す分だけ足していくのが結局いちばん速いです。
エージェントを実装するエンジニア

考え方は、最小のコンテキストから始め、観測された失敗モードに応じて段階的に足していくことです。先に作り込むのではなく、実際の失敗を見てから必要な要素を加えます。相談役の上位モデルに方針だけ委ねるといった構成も、コンテキスト設計の一つの形です。

あわせて読みたい

Claudeのadvisorツールとは|速い実行役に賢い相談役を組み合わせる

よくある質問

プロンプトエンジニアリングはもう学ばなくてよいですか
いいえ。プロンプトはコンテキストの一部で、書き方の基本は引き続き重要です。単発の利用ではプロンプト設計が中心になります。コンテキストエンジニアリングは、複数ステップで動くエージェントで効いてくる、その上位の視点だと捉えてください。
コンテキストは長ければ長いほど有利ではないのですか
そうとは限りません。トークンが増えるほど正確な想起は落ちる傾向(context rot)があります。多く詰めるより、必要な情報を必要なだけ渡すほうが安定しやすいです。
小さなツールやチャット利用でも関係ありますか
効果が大きいのは複数ステップのエージェントですが、考え方は単発利用にも応用できます。関係する情報を絞って渡す、例示は代表的なものを少数、という原則は規模を問わず有効です。
どの手法から試すべきですか
まず最小構成で動かし、失敗を観察することからです。会話が長引くなら圧縮、経緯の保持が課題ならメモ、作業分担が要るならサブエージェントと、直面した課題に対応する手法を一つずつ足すのが安全です。

まとめ

コンテキスト設計のチェックリスト

  • 渡す情報を、望ましい振る舞いを引き出す最小限に絞ったか
  • システム指示・ツール・例示・外部データ・履歴の構成と順序を整理したか
  • データを先に全部載せず、都度取得できる設計にしたか
  • 長時間タスク向けに、圧縮・メモ・サブエージェントのどれを使うか決めたか
  • 最小構成から始め、失敗モードを見てから足す進め方にしたか

コンテキストエンジニアリングは、特定のモデルや流行に依存しない、息の長い設計スキルです。プロンプトの書き方を磨くのと並行して、モデルに何を見せるかを設計する視点を持っておくと、エージェントの品質を安定させやすくなります。まずは手元のエージェントのコンテキストを一度書き出し、削れる情報がないかを見直すところから始めてみてください。

あわせて読みたい

プロンプト設計の基本|役割・制約・出力形式・例示の4要素で安定させる

出典・参考

この記事をシェア

関連する記事