掘金 人工智能 09月17日
Chat2Graph智能体架构解析
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Chat2Graph采用图原生理念,构建了包含Leader和多个Expert智能体的多智能体架构。用户请求由Leader分配给图组织的Expert智能体,每个智能体通过有向无环图(DAG)的工作流执行算子任务。算子与推理机协同,推理机依赖大模型选择工具,工具结果反馈给推理机,直至任务完成。这种分层架构通过丰富的工具集,涵盖图谱建模、数据提取、查询分析和问答等功能,支持本地工具和MCP工具,实现了复杂任务的有序执行和完整的工具生态。

💡 **多智能体与图原生理念:** Chat2Graph的核心是“Leader”与“Expert”组成的智能体架构,整个系统运行流程都遵循图原生的理念。Leader智能体负责任务分配,Expert智能体则以图的形式组织,协同完成任务。这种设计使得复杂任务能够被分解并有序执行。

⚙️ **工作流与算子执行:** 每个Expert智能体由一个有向无环图(DAG)的工作流驱动,工作流包含一系列算子。算子与推理机协同工作,推理机通过大模型判断下一步动作和工具选择,工具的执行结果又会反馈给推理机,直至算子定义的任务目标达成。这确保了任务执行的精确性和可控性。

🛠️ **丰富的工具集与专家分工:** Chat2Graph内置了包括Design Expert(图谱建模)、Extraction Expert(数据提取)、Query Expert(图查询)、Analysis Expert(图分析)、Q&A Expert(问答)以及WebSurferExpert(网络浏览)和DeveloperExpert(本地开发)在内的七个专家智能体。每个专家都配备了针对其专业领域的高度定制化工具,如GDS库支持的各种图算法、浏览器自动化工具等,共同构建了一个强大的工具生态系统。

🔗 **本地与MCP工具集成:** Chat2Graph支持两种类型的工具:本地工具(直接在Python环境中执行)和MCP(Model Context Protocol)工具(用于与外部服务或独立进程交互,如浏览器自动化)。MCP工具通过多种传输协议(STDIO, SSE等)与外部服务通信,极大地扩展了系统的能力范围,使其能够集成更广泛的外部功能。

至此,我们完成了 Chat2Graph 中从用户会话到工具执行的完整链路的学习。让我们先通过一个流程图来回顾 Chat2Graph 的整体运行流程:

这个流程处处都体现着图原生的理念,里包含了三个循环:

    Chat2Graph 实现了一主动多被动多智能体架构,当用户的问题到来时,Leader 智能体会将任务分配给多个 Expert 智能体执行,这些 Expert 智能体是以图的形式组织的;每个智能体由一个工作流实现,也是一个有向无环图,工作流包含多个算子,它们按序执行,等到所有算子都执行完成,整个工作流才算完成;算子和推理机相互协作,推理机通过大模型判断下一步的动作和该执行的工具,工具的结果又会返回给推理机判断下一步的动作,直到完成了算子所定义的任务目标为止;

最后,所有智能体全部运行结束,才算完成了一次用户的会话过程。

今天,我们将从专家和工具的角度,详细盘点 Chat2Graph 中都有哪些专家智能体,每个专家都包含哪些算子,每个算子又配置了哪些动作,以及每个动作关联了哪些工具。根据 chat2graph.yml 配置文件,我们可以看出,Chat2Graph 一共内置了 7 个专家,除了我们之前介绍过的 5 大核心专家,还专门为 GAIA 基准测试新增了两个专家。

Design Expert - 建模专家

Design Expert 是知识图谱建模(Schema)专家,专注于根据特定的数据需求设计图的 Schema,清晰定义顶点(Vertices)和边(Edges)的类型、属性及关系。

它的核心工具包括:

    DocumentReader:从指定路径读取并返回文档内容,支持多种文档格式解析,为后续的图建模提供原始数据输入;SchemaGetter:连接到图数据库并获取其当前的 Schema 信息,用于了解现有的图结构;VertexLabelAdder:在图数据库中创建新的顶点标签,定义新的实体类型;EdgeLabelAdder:在图数据库中创建新的边标签,定义新的关系类型;GraphReachabilityGetter:查询图数据库以获取图的可达性信息,验证图结构的连通性;

Extraction Expert - 导数专家

Extraction Expert 是原始数据提取和数据导入图数据专家,负责根据已定义的 Schema 从原始数据中提取结构化信息,并将其导入到目标图数据库中。

它的核心工具包括:

    DataStatusCheck:检查图数据库中当前数据的状态,了解现有数据情况,确保后续数据导入的一致性;DataImport:将提取的三元组数据导入到图数据库中,支持批量导入和增量更新;

Query Expert - 查询专家

Query Expert 专注于图数据查询,能够理解用户的查询意图,编写精确的图查询语句,并在目标图数据库上执行查询。

它的核心工具包括:

    CypherExecutor:执行 Cypher 查询语句,支持复杂的图遍历和数据检索操作;

Analysis Expert - 分析专家

Analysis Expert 专注于图数据分析和算法应用,能够基于分析目标选择、配置并执行相应的图算法。

这个专家包含大量图分析的工具:

    AlgorithmsGetter:获取图数据库支持的算法列表和相关信息;PageRankExecutor:执行 PageRank 算法,计算图中节点的重要性得分;BetweennessCentralityExecutor:执行介数中心性算法,识别图中的关键连接节点;LouvainExecutor:执行 Louvain 社区发现算法,识别图中的社区结构;LabelPropagationExecutor:执行标签传播算法,进行社区检测;ShortestPathExecutor:计算图中两点间的最短路径;NodeSimilarityExecutor:计算节点间的相似性得分;CommonNeighborsExecutor:分析节点间的共同邻居关系;KMeansExecutor:执行 K-means 聚类算法;

值得注意的是,这些算法都是基于 Neo4j 的 GDS(Graph Data Science) 库实现的,这是 Neo4j 推出的一套 图数据科学库,专为在 Neo4j 图数据库上执行高效、可扩展的图算法而设计。它允许开发者、数据科学家和分析师通过图结构挖掘隐藏的关系模式(如社区、路径、影响力),广泛应用于推荐系统、欺诈检测、社交网络分析、供应链优化等场景。

因此在部署 Neo4j 时,需要开启 graph-data-science 插件:

$ docker run -d \  -p 7474:7474 \  -p 7687:7687 \  --name neo4j-server \  --env NEO4J_AUTH=none \  --env NEO4J_PLUGINS='["apoc", "graph-data-science"]' \  neo4j:2025.04

Neo4j GDS 内置算法覆盖图分析的主流场景,以下是核心分类及典型应用:

以社交网络为例,通过 PageRank 算法识别最具影响力的用户:

// 1. 先投影社交网络图(节点:User,关系:FOLLOWS)CALL gds.graph.project('socialGraph', 'User', 'FOLLOWS');// 2. 运行 PageRank 算法CALL gds.pageRank.stream('socialGraph')YIELD nodeId, scoreMATCH (user:User) WHERE id(user) = nodeIdRETURN user.name AS userName, scoreORDER BY score DESC LIMIT 10;

Q&A Expert - 问答专家

Q&A Expert 是通用问答和信息检索专家,具备优先级多源研究能力,优先使用知识库检索作为主要信息源,必要时进行网络研究作为补充。

它的核心工具包括:

    KnowledgeBaseRetriever:从外部知识库中检索相关文档和信息;BrowserUsing:使用浏览器进行网络搜索和内容抓取,基于 MCP 协议实现;FileTool:文件系统操作工具,用于读写本地文件;

其中 BrowserUsing 是一个 MCP 工具,能基于 Playwright 操作浏览器,运行程序时通过 start_mcp_server.sh 脚本启动:

$ npx @playwright/mcp@latest --port 8931

WebSurferExpert - 网络浏览专家

WebSurferExpert 负责所有在线信息获取任务,具备多模态分析能力,可以处理网页中的图像、音频和 PDF 文件。

它的核心工具包括:

    BrowserTool:基于 browser-use 的浏览器自动化工具,支持网页导航和交互;UrlDownloaderTool:从 URL 下载文件的工具;GeminiMultiModalTool:基于 Gemini 的多模态分析工具,支持图像、音频等内容分析;PageVisionTool:页面视觉分析工具,能够理解网页的视觉布局和内容,它首先通过 browser-use 将网页保存成 PDF,然后调用 Gemini 多模态大模型对其进行分析;YouTubeTool:YouTube 视频内容分析工具;

DeveloperExpert - 本地开发专家

DeveloperExpert 负责所有本地环境中的操作,包括文件读写、数据处理、代码执行等任务。

它的核心工具包括:

    CodeExecutorTool:执行 Python 代码的工具,支持动态代码执行;ShellExecutorTool:执行 Shell 命令的工具;SpreadsheetTool:处理电子表格文件的工具,比如 Excel、CSV 等;ZipTool:处理 ZIP 压缩文件的工具,支持压缩和解压操作;

Leader 智能体

除了 Expert 智能体的特定工具之外,Chat2Graph 还有一个 Leader 智能体。

它提供了一个系统级的工具:

    SystemStatusChecker:查询系统状态的工具,帮助智能体了解当前系统的运行状态,用于更好的推理和决策;

工具的实现

Chat2Graph 中的工具主要分为两种类型:本地工具(LOCAL_TOOLMCP 工具(MCP_TOOL

本地工具是直接在 Agent 运行的 Python 环境中通过函数调用执行的工具。这些工具通过 module_path 指向包含工具实现的 Python 模块。比如下面是文档读取工具的定义:

tools:  - &document_reader_tool    name: "DocumentReader"    module_path: "app.plugin.neo4j.resource.graph_modeling"

其实现位于 app/plugin/neo4j/resource/graph_modeling.py 文件中的 DocumentReader 类:

class DocumentReader(Tool):  """Tool for analyzing document content."""  async def read_document(self, file_service: FileService, file_id: str) -> str:    """Read the document content given the document name and chapter name.    Args:      file_id (str): The ID of the file to be used to fetch the doc content.    Returns:      The content of the document.    """    return file_service.read_file(file_id=file_id)

Chat2Graph 同时支持同步或异步函数,它会自动检测函数类型,并适配调用方式(基于 inspect 库的 iscoroutinefunction() 函数实现):

# execute function callif inspect.iscoroutinefunction(func):  result = await func(**func_args)else:  result = func(**func_args)

MCP 工具基于 Model Context Protocol 协议,用于与独立的外部进程或服务进行交互。这对于集成非 Python 实现的或需要隔离环境的复杂工具(如 Playwright 浏览器自动化)至关重要。下面是两个 MCP 工具的示例:

  - &browser_tool    name: "BrowserUsing"    type: "MCP"    mcp_transport_config:      transport_type: "SSE"      url: "http://localhost:8931/sse"  - &file_tool    name: "FileTool"    type: "MCP"    mcp_transport_config:      transport_type: "STDIO"      command: "npx"      args: ["@modelcontextprotocol/server-filesystem", "."]

MCP 工具的配置包括:

MCP 工具的实现位于 app/core/toolkit/mcp/mcp_connection.py 文件:

class McpConnection(ToolConnection):  # 调用 MCP 工具  async def call(self, tool_name: str, **kwargs) -> List[ContentBlock]:    with self._lock:      result = await self._session.call_tool(tool_name, kwargs or {})      return result.content  # 根据通信协议创建 MCP 连接  async def connect(self) -> None:    with self._lock:      # 建立连接      if transport_config.transport_type == McpTransportType.STDIO:        await self._connect_stdio()      elif transport_config.transport_type == McpTransportType.SSE:        await self._connect_sse()      elif transport_config.transport_type == McpTransportType.WEBSOCKET:        await self._connect_websocket()      elif transport_config.transport_type == McpTransportType.STREAMABLE_HTTP:        await self._connect_streamable_http()      else:        raise ValueError(f"Unsupported transport type: {transport_config.transport_type}")      # 初始化会话      session: ClientSession = cast(ClientSession, self._session)      await session.initialize()

这段代码基于 MCP 官方的 Python SDK 实现,其用法可参考文档:

小结

今天我们详细盘点了 Chat2Graph 中的所有专家和工具,通过清晰的职责划分,不同专家可完成从图谱建模、数据提取、查询分析、知识问答等不同的任务。此外,还简单讲解了工具的实现原理,支持本地工具和 MCP 工具两种类型,满足不同场景的需求。

Chat2Graph 通过这种分层的 专家-算子-动作-工具 架构,不仅实现了复杂任务的有序执行,还为图原生智能体系统提供了一个完整的工具生态。每个专家都在自己的专业领域内发挥最大价值,通过丰富的工具集合来完成具体的任务执行。

欢迎关注

如果这篇文章对您有所帮助,欢迎关注我的同名公众号:日习一技,每天学一点新技术

我会每天花一个小时,记录下我学习的点点滴滴。内容包括但不限于:

目标是让大家用5分钟读完就能有所收获,不需要太费劲,但却可以轻松获取一些干货。不管你是技术新手还是老鸟,欢迎给我提建议,如果有想学习的技术,也欢迎交流!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Chat2Graph 智能体 图数据库 多智能体架构 Graph Data Science Agent Knowledge Graph Multi-Agent System
相关文章