记忆

长期记忆

智能体上下文的重要组成部分

使用方法

VeADK 的长期记忆通常存储在数据库中,通过如下方式定义一个长期记忆:

from veadk.memory.long_term_memory import LongTermMemory

long_term_memory = LongTermMemory()

通过如下例子说明长期记忆:

以下示例展示了如何在 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)

后端适配

通过设置初始化 LongTermMemory 时的 backend 参数来指定不同的长期记忆存储后端:

类别说明
local内存跨 Session 记忆,程序结束后即清空
opensearch使用 OpenSearch 作为长期记忆存储,可实现持久化和检索
redis使用 Redis 作为长期记忆存储,Redis 需要支持 Redisearch 功能
viking使用 VikingDB 记忆库产品作为长期记忆存储
viking_mem已废弃,设置后将会自动转为 viking
后端选项 database 已废弃。

详细参数

backend
Literal['local','opensearch','redis','viking','viking_mem'] | BaseLongTermMemoryBackend
默认为opensearch - 长期记忆后端类型
backend_config
dict
长期记忆后端配置,默认空字典。
top_k
int
默认 5 - 检索时返回最相似的文档数量。
app_name
string
Agent 应用名称,用于多应用区分。默认空字符串。
user_id
string
Agent 用户 ID,用于区分不同用户的长期记忆。默认空字符串。