环境准备
作者使用本地个人PC(Win11系统),基于火山AgentKit提供的记忆库Demo,使用Python代码进行测试。
步骤一:安装python依赖
按照官方集成指导文档,需要先使用 pip install veadk-python mem0ai==0.1.118命令安装依赖,没想到的是第一步就出现了问题。
官方指导如下:
碰到的问题一:无法安装veadk-pyton 报错如下:
根据报错信息可以看到是编译安装psycopg2-binary报错,这里项目依赖并没有选择binary的方式进行安装,而是使用了直接编译依赖代码的方式,容易出现报错。
最终使用ClaudeCode进行分析,选择了先跳过psycopg2-binary,安装完成其他的依赖之后,手动使用pip命令安装psycopg2依赖。这里要吐槽一下火山的文档,虽然mem0是免费的记忆库,但是依赖的veadk是火山自己发布的,此处对于安装的成功率有待提升。
步骤二:运行测试Demo
以下这段代码是火山提供的最新mem0记忆库的接入示例:
# 参考如下 memory 示例集成代码,修改 agent 代码
import asyncio
import os
from veadk import Agent, Runner
from veadk.memory.long_term_memory import LongTermMemory
from dotenv import load_dotenv
load_dotenv()
if os.getenv("DATABASE_MEM0_API_KEY") is None:
raise ValueError("MEM0_API_KEY is not set")
if os.getenv("DATABASE_MEM0_BASE_URL") is None:
raise ValueError("DATABASE_MEM0_BASE_URL is not set")
# Replace the following from your own user & session management system
app_name = "ltm_demo"
user_id = "temp_user"
teaching_session_id = "teaching_session"
student_session_id = "student_session"
long_term_memory = LongTermMemory(backend="mem0", app_name=app_name)
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, user_id=user_id))
# now, let's validate this in a new session, with the same user_id configured in the Runner
student_prompt = "What is my secret?"
response = asyncio.run(
runner.run(messages=student_prompt, session_id=student_session_id)
)
print(response)
在完成环境变量DATABASE_MEM0_API_KEY和DATABASE_MEM0_BASE_URL的配置后,发现无法直接运行,报错如下:
分析可以看到是 碰到的问题二:缺少了 MODEL_AGENT_API_KEY 的配置,因为在记忆库使用过程中会依赖到火山引擎的模型服务,因此需要额外对该变量进行配置,提供模型服务进行调用。这里得再吐槽一下火山的文档,可以在注释或者代码示例中把需要依赖的所有配置都展示出来。
测试结果
碰到的问题三:示例代码第一次调用,系统输出有问题,显示没有找到相关的记忆内容,输出内容如下:
第二次执行改代码则不会有对应的问题,初步分析因为示例代码中提交长期记忆、teaching_session和student_session都是异步执行的,后端响应需要一定的实践,在并发提交的时候第一次测试的结果可能出现无法获取到正确的结果的问题。此处火山的文档也有一个改进点,可简单粗暴可以直接增加Sleep,或者同步等待设置长期记忆结束之后再调用student_session进行查询。
最终测试结果如下:
Python代码中已经可以看到记忆库长期记忆设置成功,同时可以在界面上查询到对应的长期记忆条目:
同时可以看到在测试数据量较小的情况下记忆召回的时延一般为100ms级别,详情如下
未来计划
后续有空作者会尝试对火山的记忆库进行压测,同时测试火山自研的Viking记忆库。