シンプルなメモリストア(Key-Value)
ユーザーが述べた事実(名前や好み)をKey-Valueストアに保存し、各ターンでsystem promptに組み込みます。
「シンプルなメモリストア(Key-Value)」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
最も安価な長期メモリ
ベクトルDBやembeddingの前に、素朴なキーバリューストアがあります。ユーザー固有の事実(名前、好み、設定)を保存するだけなら、これで十分です。
保存するもの
KVメモリに適した候補は次のとおりです。
- ユーザー名と言語
- 好み(単位、タイムゾーン、トーン)
- 継続的なコンテキスト(現在のプロジェクト、現在のトピック)
- 最近使用したツールの認証情報 / APIトークン
小さなインメモリストア
単一プロセスのプロトタイプでは、次のようにします。
memory = {
'user_name': 'Alice',
'units': 'celsius',
'language': 'tr'
}
def remember(key, value):
memory[key] = value
def recall(key, default=None):
return memory.get(key, default)
remember('city', 'Istanbul')
print("Recalled user_name:", recall('user_name'))
print("Recalled city:", recall('city'))
print("Recalled missing key:", recall('country', 'unknown'))
システムプロンプトに注入する
各ターンで、KVストアの内容をシステムプロンプトに展開します。
def build_system_prompt(user_id):
facts = load_facts(user_id)
rendered = '\n'.join(f'- {k}: {v}' for k, v in facts.items())
return f'''
You are AssistantBot.
Known facts about this user:
{rendered}
Use these to personalise replies.
'''複数ユーザーにはRedisを使う
本番環境のエージェントでは、Redisを使用します。
import redis
r = redis.Redis()
def remember(user_id, key, value):
r.hset(f'mem:{user_id}', key, json.dumps(value))
def recall_all(user_id):
raw = r.hgetall(f'mem:{user_id}')
return {k.decode(): json.loads(v) for k, v in raw.items()}またはPostgresだけを使う
Postgresでも構いません。ユーザーごとにJSONカラムを用意します。
CREATE TABLE user_memory (
user_id TEXT PRIMARY KEY,
facts JSONB NOT NULL DEFAULT '{}'
);
-- Update one field:
UPDATE user_memory SET facts = facts || '{"units": "celsius"}' WHERE user_id = $1;ツールとしてのメモリ
エージェント自身がメモリに書き込めるよう、メモリ操作をツールとして公開します。
tools = [
{'name': 'remember', 'description': 'Save a fact about the user', 'parameters': {...}},
{'name': 'forget', 'description': 'Remove a stored fact', 'parameters': {...}}
]
# The agent can call remember('user_name', 'Alice') itself.
for t in tools:
print(f"{t['name']}: {t['description']}")
メモリの肥大化を防ぐ
ユーザーごとに保存できるキーの数に上限(50または100)を設定してください。そうしないと、システムプロンプトが際限なく大きくなります。
TTLと減衰
一部のメモリは短期間しか有効ではありません。Redisの有効期限を使用します。
r.hset(f'mem:{user_id}', 'last_topic', 'pricing')
r.expire(f'mem:{user_id}', 3600) # 1 hourユーザーが編集できるメモリ
エージェントがユーザーについて覚えている内容を、ユーザーが確認および編集できるようにしてください。ChatGPTのメモリはこのように動作します。信頼を築き、不気味な間違いを避けられます。
プライバシー:PIIへの配慮
保存された事実には、PIIが含まれることがよくあります。機密フィールドは保存時に暗号化し、ユーザーごとの暗号化キーを使用し、アカウントの閉鎖時に削除してください。
KVからベクトルへ
KVは構造化された事実に適しています。非構造化の事実(「ユーザーはカジュアルなトーンを好み、アニメのネタが好きで、絵文字が嫌い」など)には、ベクトルストアのほうが適しています。これについては次のコースで扱います。
KVメモリを使うタイミング
プレーンなキーバリューストアが最も適しているのは、どのような種類のメモリでしょうか。
まとめ
パーソナルアシスタントのユースケースの90%では、RedisまたはPostgresのKVストアと、その内容をシステムプロンプトに展開する仕組みがあれば、十分なメモリになります。
よくある質問
「シンプルなメモリストア(Key-Value)」レッスンは無料ですか?
はい。「シンプルなメモリストア(Key-Value)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「シンプルなメモリストア(Key-Value)」で何を学びますか?
ユーザーが述べた事実(名前や好み)をKey-Valueストアに保存し、各ターンでsystem promptに組み込みます。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「シンプルなメモリストア(Key-Value)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- コンテキストウィンドウにおける短期記憶
- 長いコンテキストがスケールしない理由
- 圧縮としての要約
- シンプルなメモリストア(Key-Value)