会話が終われば履歴は消えます。ですから前回決めたことを次も覚えていてほしければ、外に保存して次の会話で読み直させる仕組みが要ります。
実際に500件の記録を作って測ったところ、毎回まるごと渡すと32,114トークン、関係する分だけ渡すと3,210トークンでした。10.0倍の差です。
500件の記録を実際に作って測りました。全部渡すと32,114トークン、関係する50件なら3,210トークンで10.0倍の差です。
長期記憶を持たせたときに何がどれだけかかるのかを、実際に記録を作って測りました。用意したのは10分野にまたがる500件の取り決めです。
記録は実際に生成しており、バイト数と絞り込みにかかった時間は実測値です。ただしトークン換算は日本語1文字あたり約1.5トークンという係数を置いた概算になります。
const bytes = (s) => Buffer.byteLength(s, 'utf8');
// 実測に近づけるため、日本語は1文字あたり約1.5トークンとして換算する
const toTok = (b) => Math.round((b / 3) * 1.5);
// 絞り込み: 問いに含まれる語で記録を選ぶ
function pick(query) {
const t0 = process.hrtime.bigint();
const hit = RECORDS.filter((r) => query.includes(r.topic));
const t1 = process.hrtime.bigint();
return { hit, us: Number(t1 - t0) / 1000 }; // ナノ秒をマイクロ秒に直す
}
記録 500件(10分野)に対して「請求の締め日を教えて」と聞いたとき 渡し方 件数 バイト数 換算トークン 全部渡す 500件 64227 32114 tok 絞って渡す 50件 6420 3210 tok 比: 10.0倍 絞り込みにかかった時間: 26.2 マイクロ秒(0.026 ミリ秒) 記録が増えたときの、全部渡す場合のトークン量 件数 バイト数 換算トークン 50件 6371 3186 tok 100件 12753 6377 tok 500件 64227 32114 tok 2000件 256908 128454 tok
件数と送信量が素直に比例しました。2,000件になると128,454トークンで、これを毎回の問い合わせごとに送ることになります。
絞り込みにかかった時間は26.2マイクロ秒、つまり0.03ミリ秒未満でした。実行のたびに多少ぶれますが、桁は変わりません。500件を走査してこの速さですから、処理時間は判断の材料になりません。
効いてくるのは送信量のほうです。10倍の差は、そのまま毎回の費用と応答時間に乗ります。
絞り込みには弱点があります。関係する記録を取り逃がしても、そのまま答えてしまうことです。
「記録が見つかりませんでした」とは返りません。手元にある分だけで、いつもどおりの調子で答えます。ですから外したことに気づけません。
件数に比例して伸びる。絞ると10分の1だが、外すと気づけない。
The memory tool lets Claude store and retrieve information across conversations in a directory of memory files.原文Claude Platform Docs「Memory tool」 この内容の有効期限2027-02-17
件数が少ないうちは全部渡すほうが確実です。増えてきたら絞りますが、外した場合の扱いを先に決めてください。
長期記憶の渡し方は、件数と、取り逃がしたときの困り方で決まります。前の節の数字がその材料になります。
50件なら3,186トークンです。この程度なら絞る意味がありません。絞れば取り逃がす可能性が生まれるので、渡せるなら渡したほうが確実です。
分岐点は使い方によりますが、数百件を超えたあたりから送信量が無視できなくなります。
絞る方式に移るときは、先にここを決めてください。関係する記録が見つからなかった場合に、答えさせるのか止めるのかです。
3番目が既定の動作になりがちです。何も決めないと、これになります。
実装されている仕組みの動きも押さえておいてください。Anthropicの説明では、記憶の機能が有効な場合、仕事を始める前に記憶の置き場所を自動で確認するとされています。
つまり読み直しは毎回の仕事の入口で起きます。ですから置き場所が大きいほど、毎回の入口が重くなります。
取り逃がしても普通に答えてしまう。そこを決めずに絞らない。
When the memory tool is enabled, Claude automatically checks its memory directory before starting a task.原文Claude Platform Docs「Memory tool」 この内容の有効期限2027-02-17
会話の外にファイルとして保存し、次の会話で読み直させます。保存も読み出しも呼び出し側が実行します。
長期記憶は、会話が終わっても残る場所に情報を保存し、別の会話から読み直す仕組みです。会話の履歴とは別のものになります。
Anthropicの実装では、会話をまたいで情報を保存し取り出せるようにするため、記憶用のファイルを置いた場所が使われます。特別なデータベースではありません。
ファイルなので、中身を人が読めます。何を覚えているかを確認したり、間違って覚えたものを消したりできるのは、この構造の利点です。
動きの分担も押さえておいてください。同じ文書では、この仕組みは呼び出し側で動くもので、モデルはファイル操作を要求し、実際に実行するのは自分のプログラムだと説明されています。
つまり保存先も、書き込んでよい範囲も、こちらが決めます。要求されたとおりに実行するかどうかも、こちらの実装次第です。
会話の中だけで保たれる仕組みは別にあります。そちらは上限に当たると古い順に削られ、会話が終われば消えます。詳しくは短期記憶の記事で扱っています。
運用していて厄介だったのは、誤った内容を保存してしまうと、その後ずっと参照されることでした。履歴と違って自然には消えません。編集部では、保存した記録に日付を残し、古いものを定期的に見直すようにしています。
The memory tool operates client-side: Claude requests file operations, and your application executes them.原文Claude Platform Docs「Memory tool」 この内容の有効期限2027-02-17
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る