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

エージェントに記憶を与える -コンテキスト管理の設計と実践

Avatar for autotaker autotaker
June 21, 2025
200

エージェントに記憶を与える -コンテキスト管理の設計と実践

本プレゼンテーションはAlmondo社主催のAI Agent 勉強会Vol4.での登壇資料です。

AIエージェントに記憶を与えるためのコンテキスト管理の設計と実践について解説しています。コンテキスト管理は、AIエージェントのパフォーマンス向上とAPIコスト削減に貢献します。主要な手法として中間削除、記憶圧縮、外部記憶の3つが紹介され、それぞれの利点と課題が述べられています。さらに、LangGraph、OpenHands、Clineといった既存のツールにおけるコンテキスト管理の実装例を解説し、エージェント開発者と利用者の双方に最適なコンテキスト管理方法を提案しています。

Avatar for autotaker

autotaker

June 21, 2025
Tweet

Transcript

  1. AIエージェントのコンテキストウィンドウ 0 システム プロンプト (10K-20K) 入力 (1K) ReACT (5-10K) ReACT

    (5-10K) ReACT (5-10K) ステップごとにコンテキストウィンドウを消費 コンテキストが増えすぎるとタスクが失敗しやすい。 ツール実行結果、ドキュメント
  2. APIコストの増大 モデル 入力 100K キャッシュ 100K 出力 100K Agent 10

    Steps Agent 20 Steps OpenAI GPT-4.1/o3 $0.20 $0.05 $0.80 $0.46 $1.17 OpenAI o4-mini $0.11 $0.0275 $0.44 $0.25 $0.64 Google Gemini 2.5 Pro (≤ 200 K ctx) $0.125 $0.031 $1.00 $0.39 $0.93 Google Gemini 2.5 Flash $0.015 $0.00375 $0.06 $0.03 $0.09 Anthropic Claude 4 Sonnet $0.30 $0.03 $1.50 $0.66 $1.47 10 Steps シナリオ: In 100K, Out 20K, Cache 200K 20 Steps シナリオ: In 200K, Out 40K, Cache 900K エージェントのステップ数に対してAPIコストが2次的増加 出典:OpenAI, Google, Anthropic社のAPI価格表 (2025/06/12時点)より作成
  3. 手法1:中間を削除する 0 システム プロンプト (10K-20K) 入力 (1K) ReACT1 (5-10K) ReACT3

    (5-10K) ReACT4 (5-10K) リミット 良い点:実装が簡単、キャッシュも効きやすい 悪い点:重要なステップを忘れると精度に影響
  4. 手法2:記憶を圧縮する 0 システム プロンプト (10K-20K) 入力 (1K) ReACT1 (5-10K) ReACT2

    (5-10K) ReACT3 (5-10K) ReACT4 (5-10K) リミット ReACT1-4の要約 (10K) 「ここまでの流れを要約して」
  5. 手法2:記憶を圧縮する 0 システム プロンプト (10K-20K) 入力 (1K) ReACT1-4の要約 (10K) リミット

    良い点:精度が下がりにくい、ノイズが除去される 悪い点:要約の追加時間、正確な出典の明示が難しい
  6. 手法3:外部記憶に格納する 0 システム プロンプト (10K-20K) 入力 (1K) ReACT1 (5-10K) ReACT2

    (5-10K) ReACT3 (5-10K) ReACT4 (5-10K) リミット ID: Mem-1 要約: ドキュメント XXによると〇〇が わかりました。 ID: Mem-2 要約: △△について 検索しましたが、ヒッ トしません ID: Mem-3 要約: Pythonで分析を 行い、結果は□□でし た。 各ステップを要約を作成
  7. 手法3:外部記憶に格納する 0 システム プロンプト (10K-20K) 入力 (1K) ReACT4 (5-10K) Mem-1

    要約1 Mem-2 要約2 Mem-3 要約3 ReACT1 (5-10K) ReACT2 (5-10K) ReACT3 (5-10K) 外部記憶 外部記憶にステップを退避し、コンテキストには要約を残す
  8. 手法3:外部記憶に格納する 0 システム プロンプト (10K-20K) 入力 (1K) ReACT4 (5-10K) Mem-1

    要約1 Mem-2 要約2 Mem-3 要約3 ReACT1 (5-10K) ReACT2 (5-10K) ReACT3 (5-10K) 外部記憶 Tool call Recall[“Me m-2”] LLMが必要に応じて、外部記憶を思い出す
  9. 手法3:外部記憶に格納する 0 システム プロンプト (10K-20K) 入力 (1K) ReACT4 (5-10K) Mem-1

    要約1 Mem-2 要約2 Mem-3 要約3 ReACT1 (5-10K) ReACT2 (5-10K) ReACT3 (5-10K) 外部記憶 Tool call Recall[“Me m-2”] ReACT2 (5-10K) ツールが外部記憶を検索し、コンテキストに追加
  10. 手法3:外部記憶に格納する 良い点: • 精度が下がりにくい • ノイズが除去される • トレーサビリティが高い 悪い点: •

    実装が複雑 • 「思い出す」ための追加推論コスト • うまく使いこなすためのLLMチューニングが必要
  11. 手法まとめ 中間削除 記憶圧縮 外部記憶 実装コスト ⭐ 🔶 ⚠ ノイズ除去 ⚠

    ⭐ ⭐ ハルシネーション ⚠ 🔶 ⭐ 追加推論ステップ ⭐ 🔶 ⚠ ユースケース まずはここから始める 小規模なタスク 検索ノイズが多い場合 ステップ数が多い場合
  12. OpenHandsでの実装 • Context Condensationと呼ばれる独自技術を採用 • 様々なCondenserが実装されており、設定ファイルで差し替え可能 ◦ 中間削除系 ▪ Recent

    Events Condenser ▪ Amortized Forgetting Condenser ◦ 取捨選択系 ▪ Observation Masking Condenser • ツール呼び出しの結果のみ最近 N件以前をマスク ▪ LLM Attention Condenser ◦ 記憶圧縮系 ▪ LLM Summarizing Condenser 出典:OpenHandsのソースコードより