0Pricing
AI Agents · レッスン

シンプルなメモリストア(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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. コンテキストウィンドウにおける短期記憶
  2. 長いコンテキストがスケールしない理由
  3. 圧縮としての要約
  4. シンプルなメモリストア(Key-Value)
← AI Agentsに戻る