智能体框架
智能体框架
相关源文件
本章引用的主要源码文件:
docs/components/vectordbs/dbs/baidu.mdxdocs/cookbooks/companions/travel-assistant.mdxdocs/cookbooks/integrations/aws-bedrock.mdxdocs/images/memory-agent-stack.pngdocs/images/stateless-vs-stateful-agent-2.pngdocs/images/stateless-vs-stateful-agent.pngdocs/integrations/agentops.mdxdocs/integrations/agno.mdxdocs/integrations/autogen.mdxdocs/integrations/aws-bedrock.mdxdocs/integrations/crewai.mdxdocs/integrations/elevenlabs.mdxdocs/integrations/google-ai-adk.mdxdocs/integrations/keywords.mdxdocs/integrations/langchain-tools.mdxdocs/integrations/langchain.mdxdocs/integrations/langgraph.mdxdocs/integrations/livekit.mdxdocs/integrations/llama-index.mdxdocs/integrations/mastra.mdxdocs/integrations/openai-agents-sdk.mdxdocs/integrations/pipecat.mdxdocs/integrations/raycast.mdxdocs/open-source/features/custom-instructions.mdxdocs/open-source/features/metadata-filtering.mdxdocs/open-source/features/reranker-search.mdxdocs/open-source/node-quickstart.mdxexamples/misc/diet_assistant_voice_cartesia.pyexamples/misc/test.pymem0/vector_stores/baidu.pytests/vector_stores/test_baidu.py
概述
智能体框架与 Mem0 集成,可在智能体执行过程中提供持久化记忆,从而实现有状态的对话和上下文保留。本文档记录了 Agno、LlamaIndex、LangChain、CrewAI、OpenAI Agents SDK、Google ADK 和 LiveKit 等框架如何使用 Memory 类 mem0/memory/main.py:172-259 和 MemoryClient mem0/memory/main.py:172-385 来实现具有记忆能力的智能体。
Mem0 作为一个自我改进的记忆层,可以实现个性化的 AI 体验,通过高效检索节省成本,并在多模态交互(文本和图像)中保持连续性。
来源: docs/integrations/agno.mdx:6-15, docs/integrations/langchain.mdx:6-14, mem0/memory/main.py:172-385
核心记忆 API
智能体框架通过调用核心记忆操作与 Mem0 集成。所有框架都遵循相同的基本模式:在智能体执行过程中保存对话上下文并检索相关记忆。
框架使用的 Memory 类操作
会话作用域参数:
所有记忆操作都接受在 mem0/memory/main.py:87-165 中定义的作用域参数:
| 参数 | 类型 | 用途 | 框架使用场景 |
|---|---|---|---|
user_id | str | 最终用户标识符 | 主要隔离(LlamaIndex、Agno、OpenAI) |
agent_id | str | 智能体标识符 | 多智能体框架(CrewAI、Google ADK) |
run_id | str | 执行会话 | 基于状态的框架(LangGraph、LlamaIndex) |
metadata | dict | 自定义标签 | 类别/类型标记(Keywords AI、Agno) |
来源: mem0/memory/main.py:172-943, mem0/memory/main.py:87-165, docs/integrations/llama-index.mdx:51-56
Agno 集成
与 Agno 的集成为智能体提供了持久化的多模态记忆。它支持存储和检索文本和图像,以保持跨会话的连续性 docs/integrations/agno.mdx:6-15。
快速集成(使用 Mem0Tools) 最简单的集成方式是使用内置的 Mem0Tools,它在底层使用 MemoryClient.add() 和 MemoryClient.search() 提供即插即用的基于工具的记忆功能 docs/integrations/agno.mdx:31-52。
from agno.agent import Agent
from agno.tools.mem0 import Mem0Tools
agent = Agent(
name="记忆智能体",
tools=[Mem0Tools()],
description="一个使用 Mem0 记忆进行个性化记忆的助手。"
)
多模态支持: Agno 智能体可以处理 base64 编码的图像。该集成允许将这些交互存储在 Mem0 中,以将视觉上下文与语义文本检索相结合 docs/integrations/agno.mdx:99-156。
来源: docs/integrations/agno.mdx:31-52, docs/integrations/agno.mdx:99-156
LlamaIndex 集成
LlamaIndex 将 Mem0 作为 memory store 支持,专门用于 ReAct 和 FunctionCalling 智能体 docs/integrations/llama-index.mdx:6-10。
记忆存储架构
配置:
search_msg_limit:用于从 Mem0 检索的聊天历史消息数量(默认值:5)docs/integrations/llama-index.mdx:58-62。context:用于在 Mem0 中标识用户、智能体或运行docs/integrations/llama-index.mdx:48-56。
来源: docs/integrations/llama-index.mdx:41-62, docs/integrations/llama-index.mdx:101-107
OpenAI 智能体 SDK 集成
该集成使智能体能够通过基于工具的记忆功能,在多智能体工作流中访问持久化记忆 docs/integrations/openai-agents-sdk.mdx:6-13。
工作流实现: 智能体配备了 @function_tool 装饰器,用于封装 Mem0 操作。智能体根据其指令自主决定何时 search_memory 或 save_memory docs/integrations/openai-agents-sdk.mdx:45-68。
@function_tool
def search_memory(query: str, user_id: str) -> str:
memories = mem0.search(query, filters={"user_id": user_id}, top_k=3)
return "\n".join([f"- {mem['memory']}" for mem in memories['results']])
多智能体交接: 当在专门的智能体(例如,旅行规划器到健康顾问)之间使用 handoffs 时,MemoryClient 通过在不同智能体实例之间使用一致的 user_id 过滤来确保共享上下文的维护 docs/integrations/openai-agents-sdk.mdx:104-167。
来源: docs/integrations/openai-agents-sdk.mdx:45-68, docs/integrations/openai-agents-sdk.mdx:104-167
CrewAI 集成
CrewAI 将其基于智能体的架构与 Mem0 的记忆功能相结合,以实现跨智能体交互的持久化记忆 docs/integrations/crewai.mdx:6-7。
关键组件:
- 初始存储:在任务执行之前,使用
client.add()存储偏好设置docs/integrations/crewai.mdx:47-70。 - Crew 配置:
Crew对象配置了memory=True和一个指向 Mem0 提供程序和特定user_id的memory_configdocs/integrations/crewai.mdx:110-122。
来源: docs/integrations/crewai.mdx:47-70, docs/integrations/crewai.mdx:110-122
Google ADK 集成
Google Agent Development Kit (ADK) 使用 Mem0 实现跨层级结构的共享记忆 docs/integrations/google-ai-adk.mdx:6-13。
专业智能体: 专门的智能体(例如,travel_specialist、health_advisor)使用 search_memory 和 save_memory 函数工具。一个 coordinator 智能体将请求委托给这些专业智能体,同时通过相同的 user_id 维护统一的记忆视图 docs/integrations/google-ai-adk.mdx:133-167。
来源: docs/integrations/google-ai-adk.mdx:51-81, docs/integrations/google-ai-adk.mdx:133-167
框架比较与可观测性
集成通常包括可观测性和监控,以跟踪性能和成本。
| 框架 | 关键特性 | 监控集成 |
|---|---|---|
| Agno | 多模态(文本/图像) | - |
| LlamaIndex | ReAct 智能体支持 | - |
| Keywords AI | 成本优化 | 完整的大语言模型可观测性 |
| AgentOps | 性能指标 | 实时跟踪/分析 |
| LiveKit | 语音助手记忆 | 基于回合的持久化 |
使用 Keywords AI 实现可观测性
Keywords AI 通过在 OpenAI SDK 调用中跟踪 mem0_params 来提供可观测性,使开发人员能够监控记忆使用情况和检索模式,同时监控大语言模型性能 docs/integrations/keywords.mdx:103-119。
来源: docs/integrations/keywords.mdx:103-119, docs/integrations/livekit.mdx:176-182
实现最佳实践
- 异步操作:对于低延迟应用(如语音助手 LiveKit),使用
AsyncMemoryClient以防止阻塞音频流docs/integrations/livekit.mdx:51,docs/integrations/livekit.mdx:101-140。 - 重排序:在配置中启用
reranker,通过使用 Cohere 或基于大语言模型的重排序器对向量命中结果进行重新排序,以提高相关性docs/open-source/features/reranker-search.mdx:7-14。 - 元数据过滤:在
search()和get_all()中使用filters参数,以确保用户或类别之间的严格隔离docs/open-source/node-quickstart.mdx:46,docs/open-source/features/metadata-filtering.mdx:1-10。 - 自定义指令:在初始化期间使用
custom_instructions来指导如何从对话中提取事实docs/open-source/node-quickstart.mdx:223。
来源: docs/open-source/features/reranker-search.mdx:7-14, docs/integrations/livekit.mdx:101-140, docs/open-source/node-quickstart.mdx:223