AI 智能体集成模式(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/getzep/graphiti/11.2-ai-agent-integration-patterns
翻译时间:2026-05-27T08:44:58.849Z
翻译模型:deepseek-chat
原文字符数:11936
项目:Graphiti (graphiti)
--- 好的,作为一名资深技术文档翻译专家,我将严格遵循您的要求,对这份 DeepWiki 技术文档进行全文翻译和润色。
---
AI 智能体集成模式
相关源文件
生成此维基页面时参考了以下文件:
CODE_OF_CONDUCT.mdZep-CLA.mdexamples/langgraph-agent/agent.ipynbgraphiti_core/driver/kuzu_driver.pygraphiti_core/driver/neptune_driver.pymcp_server/.env.examplemcp_server/README.mdmcp_server/src/graphiti_mcp_server.pymcp_server/src/models/response_types.pytests/test_graphiti_mock.py
目的与范围
本文档记录了将 AI 智能体连接到 Graphiti 知识图谱的各种集成模式。它涵盖了两种主要方法:
- 直接库集成 — 将
graphiti-core直接嵌入到智能体循环中(以 LangGraph ShoeBot 示例说明)。 - MCP 服务器集成 — 通过模型上下文协议(MCP)服务器连接 AI 智能体客户端,支持 HTTP 传输、标准输入输出(stdio)传输以及为 Cursor 和 Claude Desktop 等客户端提供的网关桥接。
有关 MCP 服务器部署的详细信息,请参见第 8.1 页。有关核心 Graphiti API 参考,请参见第 4.1 页。
集成架构总览
Graphiti 可以通过两种方式集成到智能体工作流中:作为 Python 库直接集成在智能体进程内,或者作为外部 MCP 服务器供任何兼容 MCP 的客户端连接。
集成模式示意图:
graph TB
subgraph Pattern1DirectLibrary["模式 1:直接库集成"]
LANGGRAPH["LangGraph StateGraph"]
GRAPHITI_LIB["graphiti_core.Graphiti"]
LANGGRAPH -->|"add_episode()<br/>search()"| GRAPHITI_LIB
end
subgraph Pattern2MCPServer["模式 2:MCP 服务器"]
subgraph AIAgentClients["AI 智能体客户端"]
CURSOR["Cursor IDE"]
VSCODE["VS Code + Copilot"]
CLAUDE["Claude Desktop"]
CUSTOM["自定义 MCP 客户端"]
end
subgraph TransportLayer["传输层"]
HTTP["HTTP 传输<br/>localhost:8000/mcp/"]
STDIO["标准输入输出(stdio)传输"]
GATEWAY["mcp-remote 网关"]
end
MCP_SERVER["mcp_server/src/graphiti_mcp_server.py<br/>FastMCP(Graphiti Agent Memory)"]
CURSOR -->|"HTTP"| HTTP
VSCODE -->|"HTTP"| HTTP
CUSTOM -->|"stdio"| STDIO
CLAUDE -->|"stdio"| GATEWAY
GATEWAY -->|"HTTP"| HTTP
HTTP --> MCP_SERVER
STDIO --> MCP_SERVER
end
subgraph SharedBackend["共享后端"]
GRAPHITI_CORE["graphiti_core.Graphiti"]
DB["Neo4jDriver<br/>FalkorDriver<br/>KuzuDriver<br/>NeptuneDriver"]
LLM["LLMClient<br/>OpenAI/Anthropic/Gemini/Azure"]
end
GRAPHITI_LIB --> GRAPHITI_CORE
MCP_SERVER --> GRAPHITI_CORE
GRAPHITI_CORE --> DB
GRAPHITI_CORE --> LLM
来源: mcp_server/README.md:10-28, mcp_server/README.md:163-172, mcp_server/src/graphiti_mcp_server.py:147-150
模式 1:直接库集成(LangGraph ShoeBot)
examples/langgraph-agent/agent.ipynb 笔记本演示了如何将 graphiti-core 直接嵌入到 LangGraph 智能体中。该智能体是一个鞋类销售聊天机器人(“ShoeBot”),它使用 Graphiti 实现持久化记忆和产品知识。
智能体架构
LangGraph + Graphiti 数据流图:
graph LR
subgraph LangGraphStateGraph["LangGraph StateGraph"]
START["START"] --> agent["chatbot()"]
agent -->|"tool_calls 存在"| tools["ToolNode<br/>get_shoe_data"]
tools --> agent
agent -->|"无 tool_calls"| END["END"]
end
subgraph GraphitiOperations["Graphiti 操作"]
SEARCH["client.search()<br/>center_node_uuid=user_node_uuid<br/>返回 EntityEdge[]"]
ADD["client.add_episode()<br/>source=EpisodeType.message<br/>asyncio.create_task()"]
TOOL_SEARCH["client.search()<br/>center_node_uuid=manybirds_node_uuid"]
end
subgraph PersistenceLayer["持久化层"]
MEM["MemorySaver<br/>内存检查点器"]
GRAPH_DB["Neo4jDriver<br/>持久化图谱事实"]
end
agent -->|"检索上下文"| SEARCH
agent -->|"持久化对话"| ADD
tools -->|"产品查找"| TOOL_SEARCH
SEARCH --> GRAPH_DB
ADD --> GRAPH_DB
TOOL_SEARCH --> GRAPH_DB
agent <--> MEM
来源: examples/langgraph-agent/agent.ipynb:1-10, examples/langgraph-agent/agent.ipynb:111-127
分步设置
- 初始化 Graphiti:实例化
Graphiti客户端。在 MCP 服务器中,这由GraphitiService.initialize()处理,它使用LLMClientFactory和DatabaseDriverFactory根据GraphitiConfig组装客户端:mcp_server/src/graphiti_mcp_server.py:171-185,mcp_server/src/services/factories.py:1-50。 - 导入产品数据:将产品记录作为
EpisodeType.json类型的片段加载到图谱中。示例中的ingest_products_data函数演示了这一点。MCP 服务器为此提供了add_memory工具:examples/langgraph-agent/agent.ipynb:169-187,mcp_server/README.md:18-18。 - 定位关键实体节点:智能体使用
search_nodes按名称定位实体节点。返回的uuid通过center_node_uuid参数锚定后续搜索:examples/langgraph-agent/agent.ipynb:217-217,mcp_server/README.md:19-19。 - 定义智能体工具:工具封装了
client.search(),通常通过center_node_uuid将结果固定到特定实体节点,以将检索偏向特定领域:examples/langgraph-agent/agent.ipynb:300-317。 - 上下文检索与持久化:智能体循环执行两个操作:
- 检索:
search_facts获取实体之间的相关关系。 - 持久化:
add_memory将新的交互轮次存储为片段:mcp_server/README.md:18-18。
关键代码实体
| 代码实体 | 模块 | 角色 |
|---|---|---|
Graphiti | graphiti_core | 知识图谱客户端 examples/langgraph-agent/agent.ipynb:113-113 |
add_episode() | graphiti_core.Graphiti | 持久化片段数据 examples/langgraph-agent/agent.ipynb:177-183 |
_search() | graphiti_core.Graphiti | 检索相关节点/边 examples/langgraph-agent/agent.ipynb:217-217 |
LLMClientFactory | mcp_server.services.factories | 创建特定提供商的 LLM 客户端 mcp_server/src/graphiti_mcp_server.py:179-180 |
EpisodeType | graphiti_core.nodes | 枚举类型:json、text 或 message examples/langgraph-agent/agent.ipynb:114-114 |
QueueService | mcp_server.services.queue_service | 管理异步片段处理 mcp_server/src/graphiti_mcp_server.py:154-154 |
来源: examples/langgraph-agent/agent.ipynb:113-114, examples/langgraph-agent/agent.ipynb:177-183, examples/langgraph-agent/agent.ipynb:217-217, mcp_server/src/graphiti_mcp_server.py:154-154, mcp_server/src/graphiti_mcp_server.py:179-180
---
模式 2:MCP 服务器集成
MCP 服务器将 Graphiti 的操作暴露为 MCP 工具。任何兼容 MCP 的客户端都可以连接,而无需编写 Python 代码。该服务器支持 HTTP 传输(默认)和标准输入输出(stdio)传输。
MCP 工具与 Graphiti 映射
MCP 工具到 Graphiti 方法的映射图:
graph LR
subgraph MCPTools["mcp_server 工具"]
T1["add_memory"]
T2["search_nodes"]
T3["search_facts"]
T4["get_entity_edge"]
T5["delete_entity_edge"]
T8["clear_graph"]
end
subgraph GraphitiCore["graphiti_core.Graphiti"]
G1["add_episode()"]
G2["_search()"]
G3["search()"]
G4["EntityEdge.get_by_uuid()"]
G5["delete_entity_edge()"]
G8["clear_data()"]
end
T1 --> G1
T2 --> G2
T3 --> G3
T4 --> G4
T5 --> G5
T8 --> G8
来源: mcp_server/README.md:18-28, mcp_server/src/graphiti_mcp_server.py:129-135, mcp_server/src/graphiti_mcp_server.py:19-19
HTTP 传输模式
HTTP 传输模式通过 /mcp/ 的 REST 端点暴露 MCP 服务器,使其可以被任何支持基于 HTTP 的 MCP 通信的客户端(如 Cursor)访问。
架构
sequenceDiagram
participant Client as "AI 智能体客户端<br/>(Cursor/VS Code)"
participant HTTP as "HTTP 端点<br/>localhost:8000/mcp/"
participant MCP as "mcp_server/src/graphiti_mcp_server.py<br/>FastMCP(Graphiti)"
participant Graphiti as "graphiti_core.Graphiti"
participant Driver as "Neo4jDriver /<br/>FalkorDriver /<br/>KuzuDriver /<br/>NeptuneDriver"
Client->>HTTP: "POST /mcp/call_tool<br/>{tool: 'add_memory'}"
HTTP->>MCP: "路由到工具处理器"
MCP->>Graphiti: "add_episode()"
Graphiti->>Driver: "提取与持久化"
Driver-->>Graphiti: "OK"
Graphiti-->>MCP: "SuccessResponse"
MCP-->>HTTP: "JSON 响应"
HTTP-->>Client: "成功"
来源: mcp_server/README.md:56-76, mcp_server/src/graphiti_mcp_server.py:163-163, graphiti_core/driver/neptune_driver.py:139-142, graphiti_core/driver/kuzu_driver.py:136-137
Cursor IDE 集成
Cursor IDE 使用简化的 HTTP 配置格式。将 URL http://localhost:8000/mcp/ 添加到 Cursor 的 MCP 设置中,即可使智能体使用 Graphiti 工具:mcp_server/README.md:56-76。
标准输入输出(stdio)传输模式
标准输入输出(stdio)传输模式使用标准输入/输出流进行通信,适用于像 Claude Desktop 这样将服务器作为子进程启动的 MCP 客户端。
Claude 桌面的配置
Claude Desktop 需要在其 config.json 中添加一个配置条目,指定命令和环境变量。服务器必须使用 --transport stdio 参数启动:
{
"mcpServers": {
"graphiti": {
"command": "uv",
"args": ["--directory", "/path/to/graphiti/mcp_server", "run", "src/graphiti_mcp_server.py", "--transport", "stdio"],
"env": {
"OPENAI_API_KEY": "your_key",
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_PASSWORD": "your_password"
}
}
}
}
来源: mcp_server/README.md:44-54, mcp_server/src/graphiti_mcp_server.py:163-163, mcp_server/.env.example:1-12
并发与速率限制
SEMAPHORE_LIMIT 环境变量控制并发片段处理的数量。每个片段会触发多次 LLM 调用(提取、解析),因此应根据 LLM 提供商的层级调整信号量限制,以避免 429 错误:
| 提供商 | 层级 | 建议的 SEMAPHORE_LIMIT |
|---|---|---|
| OpenAI | 层级 1(免费) | 1–2 |
| OpenAI | 层级 3 | 10–15 |
| Anthropic | 默认 | 5–8 |
| Ollama | 本地 | 1–5 |
来源: mcp_server/src/graphiti_mcp_server.py:48-75, mcp_server/.env.example:20-32
实体类型配置
内置实体类型在 config.yaml 中配置,LLM 在提取过程中使用这些类型对知识进行分类。这些类型在配置的 graphiti.entity_types 部分中定义:
- 偏好(Preference):用户的偏好、选择或意见(优先处理)。
- 需求(Requirement):需要满足的特定需求或功能。
- 流程(Procedure):标准操作流程和顺序指令。
- 位置(Location):物理或虚拟场所。
- 事件(Event):有时间限制的活动或事件。
- 组织(Organization):公司、机构或正式团体。
- 文档(Document):各种形式的信息内容。
- 主题/对象(Topic/Object):通用主题或项目的后备类别。
来源: mcp_server/README.md:193-207