Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Context Engineeringの取り組み

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for nutslove nutslove
February 04, 2026

Context Engineeringの取り組み

限りのあるContext Windowをどういうふうに管理するか(Context Engineering)に関して、AI運用勉強会でLTした時の資料になります。よろしくお願いします。

Avatar for nutslove

nutslove

February 04, 2026
Tweet

More Decks by nutslove

Other Decks in Technology

Transcript

  1. 自己紹介 2026/2/4 2 名前 李 俊起(イ ジュンギ) / Joonki Lee

    所属 KINTOテクノロジーズ株式会社 Platform Group / Platform Engineer 関心分野 Observability Kubernetes 生成AI
  2. Context Engineeringとは 2026/2/4 9 • Agent(LLM)が適切な判断を下すために必要な情報(Context)を 設計・管理するための概念・手法 • Agentの普及により、System Promptの管理(Prompt

    Engineering) だけではなく、Contextの管理が重要になってきた • Agentのステップが長くなったり、ToolからのOutputが大きかったりすると、 Contextが肥大化していく https://www.blog.langchain.com/context-engineering-for-agents/
  3. Context Engineering手法(1) 要約(Summarization) 2026/2/4 11 • Contextが大きくなったらそれまでのContextを要約し、 Context Windowが溢れることを防ぐ System

    Prompt Human Input AI Message Tool Response N回目ステップ System Prompt Human Input AI Message Tool Response N+1回目ステップ AI Message Tool Response Tool実行後、LLMに 返す前にそれまでの 内容を要約し、要約版 をLLMに渡す System Prompt それまでの Tool実行 結果などの 要約 System Prompt それまでの Tool実行 結果などの 要約 AI Message Tool Response N+2回目ステップ
  4. Context Engineering手法(2) Sub Agent 2026/2/4 12 • Sub AgentはSupervisor Agentとは別の、

    自分だけのContext Windowを持つ(Contextの隔離) • Toolの実行はSub Agentに任せて、Supervisor Agentには 結果の要約だけを返すことで、 Supervisor AgentのContextを コンパクトに維持できる • ただ、LLMの呼び出し回数が多くなるので、実行時間が長くなる傾向にある Supervisor Agent Sub Agent Aシステムの WAFログから ブロック動向を調べて 昨日Aシステムにモロッコ から大量の攻撃があったけど 全てブロックされていたよ ・ ・ Toolを使って取得した 巨大な生のログ ・ ・
  5. Context Engineering手法(4) Memory 2026/2/4 14 • System Promptに事前に定義しておくことが難しいユーザごと、 システムごと、部署ごとなどの情報をDBなどに保存しておいて 動的にLLMに渡す

    • LangChain/LangGraphのStoreや AWSのAgentCore Memoryなどを使って実装可能 Memory DB Aユーザのメモリ (好みなど) Bユーザのメモリ (好みなど) Cユーザのメモリ (好みなど) Aユーザ Agent 質問 Aさんからの質問だ! Aさんのユーザメモリ を参考にしてAさんに 合わせた回答をしよ!
  6. A-skillの具体的な指示など Context Engineering手法(5) Skills 2026/2/4 15 • System Promptには必要最低限の情報だけを記載しておいて、 詳細な指示や仕様などはFileに定義しておき、必要な時に必要な

    情報だけを段階的にContextに取り込むことで、Contextの量を 抑える(Progressive disclosure) Before System Prompt ------------------ Aの時は〜を使って、 〜を確認して・・・ Bの時は〜を使って、 〜を確認して・・・ After System Prompt --------------------------- Available skills name: A-skill description: A skillの簡略な説明 name: B-skill description: B skillの簡略な説明 FileSystem A-skill/ ├── SKILL.md ├── scripts/ ├── references/ └── assets/ B-skill/ ├── SKILL.md ├── scripts/ ├── references/ └── assets/ A-skillが 必要な リクエスト Context Window
  7. Context Engineering手法(6) ToolのOutput最適化 2026/2/4 16 • ToolからのOutputをLLMにより最適なフォーマットに変換 した上でLLMに返す • ToolのOutputが一定のサイズを超える場合、Tool側で

    Outputを返さずに「結果が大きすぎます。時間範囲やフィル タ条件を絞り込んでください」のようなガイドメッセージを 返すことで、LLMが自らクエリを修正して再実行できるよう にする
  8. アラート原因分析Agentで試した手法 2026/2/4 17 • Sub Agentパターンは、結局Sub Agent側でも1回の推論で 実行されるToolのOutputが大きすぎると同じ問題が起きる • Skills、Memoryは必要な時に必要な分だけをContextに取り入

    れるための仕組みであって、ToolからのContext管理には適用で きない • FileSystem手法は改修範囲が大きいため、 まずは「要約」と「ToolのOutput最適化」2つを試すことに
  9. LangGraphでの要約 2026/2/4 19 • LangChain v1.0で追加されたSummarization MiddleWare の利用を検討したが、LangGraphではネイティブには使えず、 CustomのSummarization MiddleWareを自作することに

    • LangGraphでは以下のように明示的に次のステップを指定する 形なので、Tool実行後LLMに返す前に必ずSummarization Middlewareを挟むように修正 ➢ Summarization Middlewareで累積Token数を見て、Token数が基 準値未満だったら何もせずそのままLLMに返して、基準を超えていたら 要約してからLLMに返す workflow.add_edge("execute_tool", "custom_message_summarization_middleware") workflow.add_edge("custom_message_summarization_middleware", "call_llm")
  10. 要約処理でハマったポイント(1) 要約しすぎの問題 2026/2/4 20 • 直面した問題 ➢ Contextを要約しすぎて、要約後に重要なポイントが抜け落ち、 Agentが同じToolを再実行したり、次のアクションを正しく判断 できなくなる事象が起きた

    • どう解決したか ➢ Structured Outputを使って、「それまでに実行したこと/その結果」、 「発見したこと」、「まだ確認できてないこと」、「次の推奨アクション」を 必ず残すようにして解決
  11. 要約処理でハマったポイント(2) Token計算 2026/2/4 21 • 直面した問題 ➢ 累積Token数のメタデータはLLM呼び出し後しか存在せず、Tool実行 直後(LLMに返す前)のToolのOutputを含めた累積Token数は自分 で求める必要があった

    ➢ BedrockのCountTokens APIがあったが、同じInput Tokenの上限 が適用され、累積メッセージが大きすぎる場合、エラーになる • どう解決したか ➢ LangChainに内部でToken数計算に使う関数があったため、 それを直接利用することで解決
  12. 要約処理でハマったポイント(3) 要約のためのバッファが残ってない 2026/2/4 22 • 直面した問題 ➢ 要約のタイミングで、すでにContextがLLMのInput Tokenの 上限を超えてしまっていて、要約させることができない

    • どう解決したか ➢ Tokenの上限がより大きいLLM (Gemini)にフォールバック ➢ ToolのOutputが一定の文字数を超えた場合、 超過分を切り捨ててからLLMに返す
  13. TOON(Token-Oriented Object Notation) 2026/2/4 24 • LLM入力用として設計された、JSONからトークンを最小限 に抑え、モデルが構造を追いやすいコンパクトなフォーマッ トに変換してくれるライブラリ •

    メトリクスなど、同じフィールド(timestamp, valueなど) が繰り返されるデータでは、JSONだとキーが毎回重複する のに対して、TOONは(CSVのように)ヘッダーを1回だけ 宣言してデータだけを並べるため、特に効果が大きい • 導入後、約10%のToken数削減の効果が見られた https://toonformat.dev/guide/getting-started
  14. ※補足: Memoryを使ったユーザごとのカスタマイズ 2026/2/4 25 • 先日のUpdateで能動的にAgentを呼び出せるようになった • アラート契機の場合は、そのアラート分析に必要な情報とToolだけ をピンポイントで事前に取得・設定してからAgentを実行するので、 空振りが少ない

    しかし、能動的なAgentは汎用的なので、空振りが多い • LangChain/LangGraphのStore機能を使ってユーザごとに 専用のメモリ(例: 使ってる監視ツール、担当システムなど)を 設定できるようにし、能動的な利用時でもユーザに合った適切な Toolや情報ソースを選択できるようにした
  15. 今後について 2026/2/4 26 • Sub Agentパターンで、Sub Agentは安価なModelを使ったり、 Contextの隔離で分析にかかるLLMのコストを削減できるか検証 • FileSystemを活用するパターンも試して、

    ToolのOutputが大き い場合、切り捨てるのではなく、全文をFileに退避し、LLM が必要に応じてFileから参照できるようにする