AgentKit Memory 快速开始指南
AI Agent 运行过程中面临多轮任务日益复杂、上下文窗口不足的问题,需要有记忆能力来进行上下文保持与个性化定制。Agentkit Memory 提供统一的记忆库使用接口并与主流框架进行对接,为 Agent 运行记忆库支持提供跨会话、上下文感知和个性化交互,实现 Agent 的持续学习与演进。本章节将指导您安装依赖项并实现长期记忆功能。
使用示例
以下示例展示了如何使用 Agentkit Memory 实现长期记忆功能。
步骤如下
- 创建包含语义策略的记忆资源
- 将事件(对话历史)写入记忆资源
- 从长期记忆中检索记忆记录
创建记忆库
通过火山引擎控制台,为智能体创建记忆库Agentkit-Memory
获取记忆资源的连接信息
在记忆详情-集成代码页面,获取连接信息。
- 对于 Mem0 类型的记忆资源,您可以看到类似如下的环境变量:
DATABASE_MEM0_BASE_URL="https://mem0-your-mem-url.mem0.volces.com:8000"
DATABASE_MEM0_API_KEY="xxxxxx-xxxxxxx"- 对于 VikingDB 类型的记忆资源,您可以看到类似如下的环境变量:
DATABASE_VIKINGMEM_COLLECTION=<collection_name of your vikingdb memory> #index
DATABASE_VIKINGMEM_MEMORY_TYPE=memory_summary_04uyfx # memory type, separate multiple by comma, e.g. event_v1,event_v2构建一个带长期记忆能力的智能体
VeADK是一个开源的智能体开发框架,提供了智能体的开发、运行、调试等功能,由火山引擎团队维护。 以下示例展示了如何使用 VeADK 构建一个带长期记忆能力的智能体,记忆库后端采用 mem0。智能体可以根据用户输入的问题,使用长期记忆来存储用户偏好、会话摘要等个性化交互信息。
您无需从 0-1 构建 veadk 项目,我们推荐您使用 agentkit-cli,从 Basic Agent App 模版来创建项目(模板使用 VeADK 框架)。在模版创建完成后,你需要做以下修改:
- 为 Agent 添加
LongTermMemory - 配置上个章节获取的环境变量到
agentkit.yaml - 增加
mem0ai==0.1.118到requirements.txt - 在每一轮对话结束后显式调用
runner.save_session_to_long_term_memory,将对话结果保存到长期记忆库
最终,您的代码文件应该如下:
'''
**simple agent demo app**
Before running, the user must set the following environment variables; otherwise, runtime exceptions will inevitably occur:
- MODEL_AGENT_NAME # model id in Volcano Engine Ark platform
- MODEL_AGENT_API_KEY # model api key in Volcano Engine Ark platform
MODEL_AGENT_NAME and MODEL_AGENT_API_KEY are used to access the model service of the Volcano Engine Ark platform.
'''
import logging
import os
from veadk import Agent, Runner
from veadk.memory.long_term_memory import LongTermMemory
from agentkit.apps import AgentkitSimpleApp
logger = logging.getLogger(__name__)
index = "simple_app" # required for viking backend, arbitrary for mem0 backend
backend = "mem0" # one of "mem0", "viking_mem"
if backend == "viking_mem":
collection_name = os.getenv("DATABASE_VIKINGMEM_COLLECTION")
if not collection_name:
raise ValueError("DATABASE_VIKINGMEM_COLLECTION environment variable is not set")
index = collection_name
app = AgentkitSimpleApp()
long_term_memory = LongTermMemory(
backend=backend,
index=index
)
agent = Agent(
name="simple_app_agent",
instruction="You are a helpful assistant.",
long_term_memory=long_term_memory
)
runner = Runner(agent=agent)
@app.entrypoint
async def run(payload: dict, headers: dict) -> str:
prompt = payload["prompt"]
user_id = headers["user_id"]
session_id = headers["session_id"]
logger.info(
f"Running agent with prompt: {prompt}, user_id: {user_id}, session_id: {session_id}"
)
response = await runner.run(messages=prompt, user_id=user_id, session_id=session_id)
logger.info(f"Run response: {response}")
# save the teaching prompt and answer in long term memory
await runner.save_session_to_long_term_memory(session_id=session_id, user_id=user_id)
return response
@app.ping
def ping() -> str:
return "pong!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)环境配置
请为您的 agentkit.yaml 文件添加如下配置
# 当长期记忆后端为 mem0 时,添加如下配置
launch_types:
cloud:
runtime_envs:
DATABASE_MEM0_BASE_URL: <your mem0 url>
DATABASE_MEM0_API_KEY: <your mem0 api key>
# 当长期记忆后端为 VikingDB 时,添加如下配置
launch_types:
cloud:
runtime_envs:
DATABASE_VIKINGMEM_COLLECTION: <your vikingdb collection name>
DATABASE_VIKINGMEM_MEMORY_TYPE: <your vikingdb memory type, defaults to "event_v1", separate multiple by comma, e.g. event_v1,event_v2>启动服务
运行 agentkit launch。构建好 Runtime 链接信息将被自动保存在 agentkit.yaml 文件中。
如何发起调用
执行如下发起调用
agentkit invoke "My secret is 0xabcd"将自动使用 user_id="agentkit_user", session_id="agentkit_sample_session"来发起调用。
校验记忆库是否生效
在首轮调用中,您保存了密码。我们需要更换session_id,来验证 Agent 是否能正确读取到记忆库中的信息。建议您等待约 1 分钟,待长期记忆抽取完成后,再发起调用。
agentkit invoke \
--payload '{"prompt": "What is my secret?"}' \
--headers '{"user_id": "agentkit_user", "session_id": "s123"}'您将看到 Agent 成功读取到记忆库中的信息,并告诉你密码是 0xabcd。
