Skip to content

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.118requirements.txt
  • 在每一轮对话结束后显式调用runner.save_session_to_long_term_memory,将对话结果保存到长期记忆库

最终,您的代码文件应该如下:

python
'''
**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

Released under the Apache-2.0 License.