简单记忆存储(键值)
将用户提到的事实(姓名、偏好)持久化到键值存储中,并在每轮对话时注入系统提示词。
简单记忆存储(键值) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
最便宜的长期记忆
在向量数据库和嵌入出现之前,还有一种朴素的键值存储。对于存储用户特定的事实(姓名、偏好、设置),它已经足够了。
存储什么
适合存入 KV 记忆的内容:
- 用户姓名和语言
- 偏好(单位、时区、语气)
- 固定上下文(当前项目、当前主题)
- 最近使用的工具凭据 / 接口令牌
一个微型内存存储
对于单进程原型:
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 个)。否则系统提示词会无限增长。
生存时间与衰减
有些记忆的有效期很短。请使用 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 存储加上将内容渲染到系统提示词中,就足以提供所需的记忆能力。
常见问题解答
「简单记忆存储(键值)」课时是免费的吗?
是的 — 「简单记忆存储(键值)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「简单记忆存储(键值)」这节课中我会学到什么?
将用户提到的事实(姓名、偏好)持久化到键值存储中,并在每轮对话时注入系统提示词。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「简单记忆存储(键值)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 上下文窗口中的短期记忆
- 长上下文为何无法扩展
- 将摘要作为压缩方式
- 简单记忆存储(键值)