
2026/10/26 5:32
コンテキストエンジニアリングの現状
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
元要約はよく書かれていますが、要点に含まれている具体的な詳細が不足しています。以下に、欠落している要素を取り入れつつ、明確さと流れを保った改善版を示します。
改善された要約
AGNTCon のトーク「Context Fails & Fixes」では、大規模言語モデル(LLM)の拡大に伴うコンテキストエンジニアリングにおける致命的なボトルネックが指摘され、開発者に膨大な情報を効果的に管理するよう迫られました。モデル製造会社はコンテキストウィンドウサイズに飛躍的な進歩を遂げましたが、Gemini 1.5 や Llama 4 Scout の 1000 万トークン規模のコンテキストウィンドウなどから~128,000 トークンへと拡大しました。しかし、システム側は複雑な障害モードに直面し、これが信頼性を脅かしています。具体的な事例として、Gemini 2.5における『ポケモン赤』と『ファイアレッド』の衝突(コンテキストポイゾニング)があり、これは矛盾する指示によりモデルが混乱したり、直接的なコマンドを無視したりする現象を示しています(「Do as I Say, Not as I Do」といった研究で詳しく論じられている)。また、モデルは「コンテキスト慣性」にも苦しんでおり、陳腐化した仮説に固執したり、新しい指示に対して訓練重みと戦ったりします。これらのリスクを軽減するためには、コンテキストオグメンテーション、ツールロードアウトレ、隔離、剪定、オフロード化、サマライゼーションの 6 つの中核ツールのセットが不可欠です。定期的なデータ削除(例:Anthropic の Memento や Fork-and-Flush)といった戦略によって「戦略的忘却」が可能となり、エージェントが矛盾する記憶に圧倒されるのを防ぎます。2027 年に見込まれている通り、個人向け AI エージェントは矛盾するデータを大量に蓄積することになり、確率的なループ内の決定論的制御を実現する DSPy などの高度な管理フレームワークが必要不可欠となるでしょう。この変化は、現在 2025 年の関連性について議論が行われている The Context Engineering Handbook といったリソースの開発を促進しています。結局のところ、巨大なストレージと能動的メンテナンスのバランスを保つことで、膨大なデジタルメモリバンクが内在する混乱にもかかわらず、エージェントが信頼性を維持できることを保証します。
本文
コンテキストエンジニアリング:失敗事例、解決策、そして未来の課題
今週開催された AGNTCon において、「Context Fails & Fixes」をテーマに講演を行いました。これとは別に出版準備中の『コンテキスト・エンジニアリングの手帳』の内容にも触れながら、コンテキストエンジニアリングの現在と将来について解説しました。
コンテキストエンジニアリングの現状と課題
AI 関連の教科書はすぐに陳腐化してしまいますが、明確な指示を出し、ノイズのない一貫したガイダンスを与えることは、モデルがどれだけ進化しても永遠に克服すべき課題です。
人間同士の意思疎通やチューリングテストをパスする AI との対話も容易ではありません。特に、人間の仮定とは異なる性質を持つモデルとの関わりにおいて、以下の固有の失敗モードに対処する必要があります。
長文コンテキストによる 4 つの主要な失敗モード
2024 年末、業界が「RAG は死んだ」と言い切る頃、長文コンテキスト(百万トークン級)への期待が高まりました。しかし、単にコンテキストを大きくするだけでは解決せず、以下のような新たな問題が発生します。
1. コンテキスト汚染 (Context Poisoning)
本来含まれてはならない情報が混入し、モデルが誤った事実を学習してしまう現象です。
- 具体例(ポケモン)
- 『Pokémon FireRed』では「渇いたセキュリティガードにアイスティーを与える」という特定のルールがありました。
- 長文コンテキストでゲーム履歴を読み込ませた際、モデルはこのルールを絶対的な事実として記憶し、他の状況でも同様に「ティーが必要」と判断してしまいます。
- 「やるべきことリスト(to-do list)」に「ティーを探す」が追加され、モデルから抜け出せなくなります。
2. コンテキスト分散 (Context Distraction)
コンテキストが長くなりすぎると、モデルが基礎知識よりもコンテキストそのものに関心を持つようになり、指示に従いにくくなります。
- 研究データ: 『Do as I Say, Not as I Do』の研究により、矛盾する「悪い例(フランス語で回答する例)」をコンテキストに投入すると、指示(ロシア語で回答)に従う頻度が低下することが確認されています。
- モデルのサイズに関わらずこの現象は起こりますが、小さいモデルほど顕著です。
- 警戒ライン: 私は20 万〜30 万トークン付近からコンテキストの管理を重視し始めます。
3. コンテキスト混淆 (Context Confusion)
タスクと無関係な余分な事柄(モデルが勝手に立てた仮定など)が入り込み、回答に影響を与えます。
- 例: モデルが「あなたは誰か」という仮定を立て、それに基づいて回答してしまうケース。
4. コンテキスト対立 (Context Clash)
ツール呼び出しやスキル、あるいは履歴内の情報が互いに衝突し、予期せぬ挙動を引き起こします。
- 対策例: ChatGPT や Claude のメモリ機能は混同の原因となりやすいため、オフにするのが安全です。
コンテキスト管理のための 6 つのツール
これらの失敗モードに対処するため、以下のツールボックスが開発されました。これらはハネス(システム)に組み込んで自動化されています。
- コンテキスト拡張 (Context Augmentation)
- RAG やスキルを駆使し、タスクに関連する情報のみを入手します。
- ツール負荷調整 (Tool Loadout)
- 過剰なツールのロードを防ぎます。例:起動時に 600 つのスキルをロードせず、必要なもののみを選別します。
- コンテキスト隔離 (Context Quarantine)
- サブエージェントを使用し、空の履歴から新しい環境で作業を再開させます。
- コンテキスト剪定 (Context Pruning)
- 不要なツール結果や古い情報を削除します(Claude Code や Codex などで自動的に行われることがあります)。
- コンテキストオフロード (Context Offloading)
- 情報を Markdown ファイルやデータベースに保存し、必要時にのみ読み込みます。
- コンテキストサマライゼーション (Context Summarization)
- 履歴を圧縮・サマリー化します。重要度の判断を加えることで、より質の高いサマリーを作成できます。
ハネスエンジニアリング:決定論的アプローチ
複雑な問題に対処するためには、**確率的なモデル呼び出しではなく、決定論的なコード(ハネス)**によってコンテキストを管理すべきです。DSPy を例に挙げて解説します。
基本的な構造
- エージェント:
ループと ReAct モジュールを使用。while - 意思決定モデル(軽量): Jev(小さな意思決定用モデル)などを導入し、高速な判断を行います。
- 処理フロー: 入力を蓄積した履歴と共に ReAct に渡す構成です。
4 つの修正をコード化した例
以下のステップで、コンテキスト管理ロジックを実装できます(約 16 行の変更)。
- 負荷調整関数: 全ツールのリストに対し、「このタスクで必要なか?」を Jev で個別に判定し、上位サブセットのみを返します。
- 隔離処理: メインエージェントに対してサブエージェント(空の履歴を持つ)を公開して作業を開始させます。
- 剪定ロジック: 履歴を進みながら各ターンを Jev に渡り、「これまだ必要か?」を確認し、不要なら削除します。
- サマリー化: 古いターンから関連性を判断し(Jev などで)、重要な部分だけを残してサマリーを作成します。
このアプローチにより、コンテキストを組み立てる作業の多くが、確率的なモデル呼び出しから決定論的なコードへと移行します。
新しい失敗モードと未来の課題
ハネスにコンテキスト管理機能を組み込むことで、さらに新しい失敗モードが出現しています。
1. 重みとの戦い (Fighting the Weights)
モデルが学習された特定の環境やツール呼び出しのパターン(バイアス)に過剰適合(オーバーフィッティング)してしまう問題です。
- 例: Playwright MCP サーバーなどのツールで学習した場合、小さなモデルは失敗しがちですが、大きなモデルも学習時の「シリアル実行」のバイアスを抱えていることがあります。
- 対策: プロンプト内で「いいえ、並列を使うべきです」と繰り返し指示を与えることで、学習バイアスと戦います。
2. コンテキスト慣性 (Context Inertia)
モデルが自身のコンテキスト内の仮説やサブタスクに固執し、停止すべきなのに継続してしまう現象です。
- 例: エージェントが一つのソリューションに執着し、同じことを繰り返す。
- 対策: Fork-and-Flush(フォーク&フラッシュ)
- 定期的にコンテキストをクリアします。環境データは保持しつつ、対話履歴はリセットします。
- これにより、新鮮な視点で問題に取り組むことができます。
- 研究知見: 『Scaling Discovery Requires Forgetting』の研究では、「忘却」バージョンの方が定期的なパフォーマンス改善が見られたことが示されています。
3. 将来の課題:2027 年の予言
現在の長文コンテキスト戦略は限界に近づいています。
- スキル蓄積の問題: 6 ヶ月以上の運用において、生成・更新されるスキルに奇妙な修正が蓄積され、解決策が悪化する可能性があります。
- 記憶と忘却のバランス: 過度に精密な記憶は矛盾を生むため、戦略的な忘却(忘却を学習させること)が必要になります。
- 次のステップ:
- 単純な「コンテキストを大きくする」時代は終わりました。
- 「モデルにハネスを駆動させ、自身のコンテキストを管理させるよう教えよ」が新しいスローガンです。
結論:決定論的か、確率的か?
AI アプリケーションの構築において重要な判断は、**「どこまでコード(決定論的)で制御し、どこまでモデルに任せるか(確率的)」**というバランスを取ることです。
- 適切なモデルに適切なコンテキストを与えることは、設計者による離散的な判断と、ソフトウェア(ハネス)による自動化の両方によって行われます。
- より大きなモデルを使うことよりも、コンテキストの質を高めることがコスト対効果の高い解決策になります。