分析エージェントの「記憶」はコストに効く:全履歴再送・圧縮・外部記憶・キャッシュをトークン量で比べる

会話が長いAIエージェントほど費用が増える理由を、入力トークンの積み上がりで説明します。Databricks Agent Memory の公表値を起点に、全履歴再送・圧縮・外部記憶・キャッシュの4方式を20ターンの会話で試算し、選び方を整理します。

19分で読めます Tech
左側では会話のたびに縦棒が階段状に高く積み上がり、右側では低い縦棒が一定の高さで並び、必要な記憶カードだけが線でつながっている抽象イラスト
この記事は AI が下書きを補助し、運営者が内容を確認して公開しています。

社内の問い合わせ対応や定例分析のために AI エージェントを作っている方に向けて、会話が長くなるほど費用が増える仕組みと、それを抑える「記憶」の持ち方を説明します。読み終わると、自分のエージェントに合う方式を、トークン量と費用の目安から選べるようになります。

この記事で分かること

  • 会話が長くなると費用が「足し算」ではなく「2乗」で増える理由
  • 全履歴再送・圧縮・外部記憶・キャッシュの4方式で、20ターンの会話の費用がどれくらい違うか(筆者の試算)
  • Databricks が公表した「入力トークン約12倍」などの数字を、どこまで信じてよいか
  • 定例分析エージェントに向く方式の選び方と、つまずきやすい点

ざっくり言うと:AIは会話を覚えていない

ChatGPT や Claude のような LLM(大規模言語モデル。文章を読んで続きを書くAIの本体)は、前の会話を自分では覚えていません。会話が続いているように見えるのは、アプリが毎回それまでのやり取りを丸ごと送り直しているからです。

送った文字の量は トークン(AIが文章を数える単位。文字数とおおむね比例します)で数えられ、料金はトークン数に比例します。そのため「何をどれだけ送り直すか」という 記憶(メモリ)設計 が、そのまま費用を決めます。

会話が長くなると費用が増える理由:入力トークンの累積

1ターン(質問と回答の1往復)ごとに、会話履歴が1,500トークン増える場面を考えます。1ターン目は1,500トークン、2ターン目は3,000トークン、20ターン目は30,000トークンを送ることになります。

1ターン目:  [1]                     → 1,500 を送る
2ターン目:  [1][2]                  → 3,000 を送る
3ターン目:  [1][2][3]               → 4,500 を送る
   ...
20ターン目: [1][2][3]...[20]        → 30,000 を送る
---------------------------------------------
20ターンの合計 = 1,500 ×(1+2+...+20)= 315,000

1回あたりの量はターン数に比例して増えます。だから合計は、ターン数の2乗に近い形で膨らみます。

方式1:全履歴を毎回送る(最も単純で最も高い)

全履歴再送は、何も工夫せずに過去の会話をすべて送る方式です。実装の手間はゼロですが、上の計算どおり20ターンで315,000トークンになります。

費用だけの問題ではありません。Databricks は、最も長い履歴では全履歴方式が無関係なターンに惑わされ、精度も悪くなったと報告しています(Databricks 公式ブログ)。

方式2:圧縮する(古い会話を要約して置き換える)

圧縮は、履歴が一定の長さを超えたら、古い部分を短い要約に置き換える方式です。ターミナル版の Claude Code では、バージョン 2.1.299 で「20万トークン以上の会話が約54分操作されないと、1時間のプロンプトキャッシュが切れる前に自動で圧縮する」機能が加わりました(Claude Code changelog)。

このしきい値は環境変数 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS で変えられ、settings.json の idleCompaction を false にすると止められます(同 changelog)。ただし筆者が計算すると、1ターン1,500トークンの会話が20万トークンに届くのは134ターン目です(200,000 ÷ 1,500 ≒ 133.3)。

つまり20ターン程度の分析会話では、この自動圧縮は一度も動きません。長いコーディング作業向けの仕組みであり、この記事では「しきい値を超えたら要約する」という考え方の例として扱います。

方式3:外部に記憶を持つ(Databricks Agent Memory の3部構成)

外部記憶は、会話の外にデータベースを置き、必要な記憶だけを検索して送る方式です。Databricks が2026年10月20日に発表した Agent Memory は、次の3部構成です(Databricks 公式ブログ)。

外部記憶型エージェントの構造図。利用者の質問がセッション管理を通ってエージェントに届き、エージェントは記憶管理と双方向に記憶を検索・書き込みする。会話ログは後からバックグラウンドの記憶整理パイプラインに渡され、整理された記憶が記憶管理に登録される。すべてLakebaseに保存され、下段にはセッション表・記憶表・夜間整理ジョブという自作時の最小構成が対応づけられている

図3のとおり、3つの部品は役割が分かれています。

部品役割自作するなら(筆者の整理)
セッション管理(Managed sessions)いま進行中の会話の流れを保存するセッション表(会話ID・発言・時刻)
記憶管理(Managed memory)プロフィール・好み・領域知識・業務手順を保持し、キーワードと意味の両方で探す ハイブリッド検索 で取り出す記憶表(利用者ID・種類・内容・更新日)
記憶整理パイプライン(Memory pipelines)会話の裏側で、会話から記憶を抜き出して整理する夜間の整理ジョブ

これらはすべて、Databricks のサーバーレス Postgres である Lakebase(サーバーの管理が不要なデータベース)の上で動きます(同ブログ)。外部記憶なら、毎ターン送るのは「今回の会話分+関係する記憶」だけになるため、この記事の仮定では、送る量がターン数に比例して増えません。

方式4:キャッシュを併用する(Anthropic/OpenAI の価格)

プロンプトキャッシュ(前回送った文章の先頭部分をAI側で一時保存し、2回目以降を安く読む仕組み)を使うと、全履歴再送のままでも費用を下げられます。送るトークン数は変わりませんが、単価が変わります。

項目Claude Sonnet 5.5(Anthropic)OpenAI
通常の入力100万トークンあたり $2GPT-6.1 Sol の例で $2
キャッシュ読み取り$0.10(入力の0.05倍)GPT-6.1 Sol の例で $0.10。割引は最大95%
キャッシュ書き込み5分保持 $2.50、1時間保持 $430分保持(既定)は入力の1.25倍、12時間保持は2.5倍
出力$10GPT-6.1 Sol の例で $10
出典Sonnet 5.5 発表、料金表changelog、キャッシュ解説

OpenAI は2026年10月20日に12時間キャッシュを選べるようにしました(最小キャッシュ長は1,024トークン)。ただし12時間キャッシュの読み取り単価は、筆者は確認できませんでした。そのため次の試算では、金額は Anthropic の価格だけで計算します。

20ターン会話での試算:4方式の累計トークンと費用

ここからが筆者のオリジナル試算です。前提は次のとおりです。

前提値種類
会話の長さ20ターン仮定
1ターンで履歴に増える量1,500トークン(前の回答を含む)仮定
1ターンの出力300トークン仮定
モデルと価格Claude Sonnet 5.5(上の表)公式価格
圧縮のしかた1万トークンを超えそうになったら2,000トークンに要約仮定(公式の圧縮率は確認できなかった)
外部記憶から毎回取り出す量1,000トークン仮定
外部記憶での同じ会話の過去のやり取り送らず、検索した記憶で置き換える(毎回は今回分1,500+記憶1,000)仮定(出典に記載なし)

外部記憶の1,000トークンは、筆者が置いた値です。この値だと20ターン目の1回あたりの送信量が、全履歴(30,000)と外部記憶(2,500)でちょうど12倍になり、Databricks の「約12倍」と同じ桁に並びます。独立に確かめた結果ではない点に注意してください。

折れ線グラフ。20ターンまでの累計入力トークンは、全履歴再送が315,000まで曲線的に増えるのに対し、圧縮は要約のたびに伸びが鈍って147,500、外部記憶は毎ターン2,500ずつ直線的に増えて50,000にとどまる

図1のとおり、全履歴再送だけが曲線を描いて増えます。外部記憶は直線のままなので、20ターンでの差は6.3倍です(筆者計算)。ただしこれは、外部記憶が同じ会話の過去のやり取りを一切送らないという仮定での値で、差の上限に近い数字です。

直近の3ターン分(今回分を含む)の会話を残して送る場合、外部記憶の累計は105,500トークンになり、差は約3.0倍に縮みます(筆者計算。1会話 $0.271、月1,000会話で $271)。

ターン全履歴再送圧縮外部記憶
522,50022,50012,500
1082,50063,50025,000
15180,000105,50037,500
20315,000147,50050,000

圧縮の値には、要約を作るための呼び出し(7・12・17ターン目の3回、入力合計28,000トークン)を含めています。要約にはAIの処理が必要なので、その分の費用も必ずかかるからです。

次に費用です。1会話の差は数十セントですが、月に1,000会話を処理すると差がはっきり見えます。

横棒グラフ。月1,000会話の費用は、5分キャッシュが毎回切れる場合847.5ドル、全履歴再送690ドル、圧縮415ドル、全履歴とキャッシュ1時間208.5ドル、全履歴とキャッシュ5分163.5ドル、外部記憶160ドルの順で、最も安い方式と最も高い方式に約5倍の差がある

方式累計入力トークン1会話の費用月1,000会話
5分キャッシュが毎回切れる315,000(全量を書き込み)$0.8475$847.5
全履歴再送315,000$0.69$690
圧縮147,500$0.415$415
全履歴+キャッシュ1時間315,000(うち読み取り285,000)$0.2085$208.5
全履歴+キャッシュ5分315,000(うち読み取り285,000)$0.1635$163.5
外部記憶50,000$0.16$160

図4と表から、2つのことが分かります。1つ目は、5分キャッシュを有効期間内に使えれば、全履歴再送のままでも入力費が84%下がり、外部記憶とほぼ同じ費用になることです(筆者計算)。1時間キャッシュでは書き込み単価が高いため、入力費の削減は76%(月 $208.5)にとどまります。

2つ目は、5分キャッシュの期限が毎ターン切れると、キャッシュなしより入力費が25%高くなることです。書き込み料金は通常の入力より高いため、読み直されないキャッシュは割増料金を払うだけになります。1時間キャッシュは書き込み単価が $4 なので、毎回切れるとさらに高くなります。

外部記憶の $160 には、記憶整理パイプラインの費用が入っていません。この費用の公式数値は確認できなかったため、実際の差はこれより小さくなると考えられます。

Databricks の数字の読み方:社内ベンチマークと自社検証

Databricks は Agent Memory について、いくつかの改善幅を公表しています(Databricks 公式ブログ)。比べやすいように、筆者が「記憶方式が有利な向きの倍率」にそろえました。

横棒グラフ。Databricksの公表値を倍率にそろえると、質問あたり入力トークンが12倍で最も大きく、回答時間が約8.8倍、ツール呼び出し回数5.5倍、合格率3倍、トークン31%減が約1.45倍。指標ごとに社内ベンチマーク、名称非公表のオープンソースベンチマーク、1件の事例と出どころが異なり、回答時間とツール呼び出しは別の質問どうしの比較

指標公表値倍率(筆者換算)何と比べたか測り方
合格率約3倍3記憶なしのエージェント社内ベンチマーク
トークン使用量31%減約1.45記憶なしのエージェント社内ベンチマーク
質問あたり入力トークン全履歴が約12倍12全履歴再送(同じ精度)名称非公表のオープンソース記憶ベンチマーク
ツール呼び出し11回 → 2回5.5最初の質問(記憶なし)→ 関連する追加の質問(記憶あり)1件の事例(別の質問どうし)
回答時間ほぼ6分 → 41秒約8.8最初の質問(記憶なし)→ 関連する追加の質問(記憶あり)1件の事例(別の質問どうし。6分を360秒とした概算)

図2で大事なのは、棒ごとに「比べた相手」が違うことです。合格率とトークン31%減は 記憶なしのエージェント との比較で、12倍は 全履歴再送 との比較です。ツール呼び出しと回答時間は、同じ質問を2回比べたものではなく、最初の質問と、記憶が保存された後の関連する別の質問を比べた1件の事例です。

社内ベンチマークのタスク数や使用モデルは公表されていません。12倍の根拠になったベンチマークの名前も本文にはありません。そのためこの記事では、具体的な倍率ではなく「方式によって送る量が1桁変わりうる」という桁の違いだけを読み取ります。

自社で判断するときは、自分の会話ログで「1ターンあたりの増加量」と「平均ターン数」を測り、上の試算の前提を置き換えてください。前提が変われば倍率も変わります。

定例分析エージェントに向く方式の選び方

ここまでの試算をもとに、選び方を3つの質問にまとめました。最初の質問の「10ターン」は、試算から導いた値ではなく筆者の目安です。

選び方のフロー図。1会話が10ターン(筆者の目安)を超えないなら全履歴再送のままでよい。超える場合、好みや業務手順を会話をまたいで使い回すなら外部記憶。使い回さない場合、同じ長い前提を短時間に何度も送るなら全履歴とプロンプトキャッシュ、そうでなければ圧縮を選ぶ。外部記憶とキャッシュは併用できる

図5の流れを、業務の例に当てはめると次のようになります。

業務の例会話の特徴向く方式理由
単発の問い合わせ対応数ターンで終わる全履歴再送2乗で増える前に会話が終わる
毎週の定例分析毎回同じ指標の定義・好みを使う外部記憶前提を会話をまたいで再利用できる
1回の長い深掘り分析短時間に何十回も質問する全履歴+キャッシュ有効期間内に読み直すので単価が下がる
長時間ほうっておく作業間があき、履歴が長い圧縮キャッシュが切れても送る量を減らせる

定例分析は「毎週同じ説明をし直す」ことが多い業務です。そのため外部記憶の効果が最も出やすいと考えられます。

つまずきやすい点:記憶の更新忘れ、古い前提の残存、個人情報の保存

1. キャッシュは「読み直さないと損」 キャッシュの書き込みは通常の入力より高い料金です。1日1回だけ動く定例分析で5分キャッシュを使うと、毎回書き込み料金だけを払うことになります。

2. 圧縮で大事な前提が消える 要約は情報を削る処理です。「売上は税抜きで数える」のような細かい約束が要約で落ちると、後のターンで計算がずれます。

3. 外部記憶に古い前提が残る 指標の定義が変わっても、記憶表の古い内容が検索で出てくることがあります。記憶ごとに更新日を持たせ、整理ジョブで古いものを消す設計が必要です。

4. 記憶の更新を忘れる 外部記憶は、書き込む仕組みがなければ育ちません。Agent Memory が整理を裏側のパイプラインに任せているのは、この更新漏れを防ぐためと考えられます。

5. 個人情報を記憶に保存してしまう 会話から自動で記憶を抜き出すと、氏名や連絡先まで保存される恐れがあります。保存してよい情報の種類を先に決め、整理ジョブで個人情報を除く手順を入れてください。

まとめ

  • 全履歴を毎回送ると、費用はターン数の2乗で増えます。筆者の試算では、20ターンで外部記憶の6.3倍のトークンを送ります(外部記憶が過去のやり取りを送らない仮定での上限に近い値)。
  • 5分のプロンプトキャッシュは、有効期間内に読み直せば入力費を84%下げます(1時間キャッシュでは76%)。期限が毎回切れると、逆に25%高くなります。
  • Databricks の数字は社内や非公表のベンチマークによるものです。倍率そのものではなく桁の違いとして受け取り、自社の会話ログで前提を測り直してください。

参考にした一次情報