| title | 长期记忆 | ||
|---|---|---|---|
| description | 智能体上下文的重要组成部分 | ||
| navigation |
|
VeADK 的长期记忆通常存储在数据库中,通过如下方式定义一个长期记忆:
from veadk.memory.long_term_memory import LongTermMemory
# 由于长期记忆需要构建索引,因此你必须在初始化长期记忆时定义 `app_name` 以及 `user_id`
long_term_memory = LongTermMemory(app_name="my_app_name", user_id="user_id")通过如下例子说明长期记忆:
以下示例展示了如何在 VeADK 中使用长期记忆实现跨会话的信息保留与调用。开发者可以通过 save_session_to_long_term_memory 方法,将某一会话中的知识性信息存入长期记忆存储后端。在新的会话中,即使上下文为空,Agent 依然能够基于长期记忆准确回忆并回答相关问题。
import asyncio
from veadk import Agent, Runner
from veadk.memory.long_term_memory import LongTermMemory
app_name = "ltm_demo"
user_id = "temp_user"
teaching_session_id = "teaching_session"
student_session_id = "student_session"
long_term_memory = LongTermMemory(backend="local", app_name=app_name, user_id=user_id)
agent = Agent(long_term_memory=long_term_memory)
runner = Runner(
agent=agent,
app_name=app_name,
user_id=user_id,
)
teaching_prompt = "My secret is 0xabcd"
asyncio.run(runner.run(messages=teaching_prompt, session_id=teaching_session_id))
# save the teaching prompt and answer in long term memory
asyncio.run(runner.save_session_to_long_term_memory(session_id=teaching_session_id))
# now, let's validate this in a new session
student_prompt = "What is my secret?"
response = asyncio.run(
runner.run(messages=student_prompt, session_id=student_session_id)
)
print(response)通过设置初始化 LongTermMemory 时的 backend 参数来指定不同的长期记忆存储后端:
| 类别 | 说明 |
|---|---|
local |
内存跨 Session 记忆,程序结束后即清空 |
opensearch |
使用 OpenSearch 作为长期记忆存储,可实现持久化和检索 |
redis |
使用 Redis 作为长期记忆存储,Redis 需要支持 Redisearch 功能 |
viking |
使用 VikingDB 记忆库产品作为长期记忆存储 |
viking_mem |
已废弃,设置后将会自动转为 viking |
::warning
后端选项 database 已废弃。
::
::field-group
::field{name="backend" type="Literal['local','opensearch','redis','viking','viking_mem'] | BaseLongTermMemoryBackend"}
默认为opensearch - 长期记忆后端类型
::
::field{name="backend_config" type="dict"} 长期记忆后端配置,默认空字典。 ::
::field{name="top_k" type="int"} 默认 5 - 检索时返回最相似的文档数量。 ::
::field{name="app_name" type="string"} Agent 应用名称,用于多应用区分。默认空字符串。 ::
::field{name="user_id" type="string"} Agent 用户 ID,用于区分不同用户的长期记忆。默认空字符串。 :: ::