记忆
长期记忆
智能体上下文的重要组成部分
使用方法
VeADK 的长期记忆通常存储在数据库中,通过如下方式定义一个长期记忆:
from veadk.memory.long_term_memory import LongTermMemory
long_term_memory = LongTermMemory(backend=...) # 默认的数据库为`opensearch`
# 装配到Agent中,同时会自动挂载`load_memory_tool`工具
agent = Agent(long_term_memory=long_term_memory)
# 运行时可选将某个session存储到长期记忆中
session = await session_service.get_session(
app_name=app_name,
user_id=user_id,
session_id=session_id,
) # 获取当前session
await self.long_term_memory.add_session_to_memory(session) # 添加
长期记忆中的 backend 字段定义如下:
backend | 说明 |
---|---|
local | GIGO 模式的内存存储,不具备向量检索功能,仅用于测试 |
viking | 火山引擎 Viking 记忆库服务 |
opensearch | OpenSearch 数据库 |
redis | Redis 数据库,但不具备向量搜索功能 |
mysql | MySQL 数据库,但不具备向量搜索功能 |
以下示例展示了如何在 VeADK 中使用长期记忆实现跨会话的信息保留与调用。开发者可以通过 save_session_to_long_term_memory
方法,将某一会话中的知识性信息存入长期记忆存储后端。在新的会话中,即使上下文为空,Agent 依然能够基于长期记忆准确回忆并回答相关问题。
from veadk import Agent, Runner
from veadk.memory.long_term_memory import LongTermMemory
from veadk.memory.short_term_memory import ShortTermMemory
session_id = "..."
new_session_id = "..."
long_term_memory = LongTermMemory(backend=...) # default backend is `opensearch`
agent = Agent(long_term_memory=long_term_memory) # agent with long term memort backend
runner = Runner(
agent=agent,
app_name="...",
user_id="...",
short_term_memory=ShortTermMemory(),
)
teaching_prompt = "..."
await runner.run(messages=teaching_prompt, session_id=session_id)
# save the teaching prompt and answer in long term memory
await runner.save_session_to_long_term_memory(session_id=session_id)
# now, let's validate this in a new session
student_prompt = "..."
response = await runner.run(messages=student_prompt, session_id=new_session_id)
print(response)