当前位置: 首页 > news >正文

【多智能体cooragent】CoorAgent 系统中 5 个核心系统组件分析

一、介绍

本文是基于cooragent 的一个说明文章。

原项目的github链接:

https://github.com/LeapLabTHU/cooragenthttps://github.com/LeapLabTHU/cooragent

本文分析 CoorAgent 系统中的 5 个核心系统组件,判断它们是否符合"智能体"的定义标准,并详细说明其实现机制和功能特点。

二、智能体判定标准

基于代码分析,我们将"智能体"定义为具备以下特征的组件:

  1. 独立的LLM支持 - 拥有专属的大语言模型实例
  2. 专门的prompt模板 - 具有定义其行为的专用提示词
  3. 自主思考决策能力 - 能够基于输入进行推理和决策
  4. 结构化的工作流程 - 有明确的执行步骤和输出格式

三、详细分析结果

1、智能体组件 (4个)

(1)coordinator - 协调者智能体

智能体特征确认:

  • LLM配置AGENT_LLM_MAP["coordinator"] = "basic"
  • 专用promptsrc/prompts/coordinator.md
  • 核心职责: 分析用户请求,决定处理路径

实现机制:

messages = apply_prompt_template("coordinator", state)
response = await get_llm_by_type(AGENT_LLM_MAP["coordinator"]).ainvoke(messages)

智能决策能力:

  • 分类用户请求类型(直接回复 vs 任务移交)
  • 输出 handover_to_planner() 或直接答案
  • 支持多语言一致性处理

工作流程:

用户输入 → 请求分析 → 分类判断 → 路由决策 → 输出结果

(2)planner - 规划者智能体

智能体特征确认:

  • LLM配置AGENT_LLM_MAP["planner"] = "reasoning" (推理模型)
  • 专用 promptsrc/prompts/planner.md
  • 核心职责: 复杂任务分解和执行规划

实现机制:

messages = apply_prompt_template("planner", state)
llm = get_llm_by_type(AGENT_LLM_MAP["planner"])
if state.get("deep_thinking_mode"):llm = get_llm_by_type("reasoning")

智能决策能力:

  • 分析复杂任务需求
  • 选择合适的执行代理组合
  • 决定是否需要创建新代理
  • 生成详细的分步执行计划

特殊功能:

  • 支持搜索增强规划 (search_before_planning)
  • 深度思考模式 (deep_thinking_mode)

(3)publisher - 发布者智能体

智能体特征确认:

  • LLM配置AGENT_LLM_MAP["publisher"] = "basic"
  • 专用promptsrc/prompts/publisher.md
  • 核心职责: 基于计划决定下一个执行代理

实现机制:

messages = apply_prompt_template("publisher", state)
response = await (get_llm_by_type(AGENT_LLM_MAP["publisher"]).with_structured_output(Router)  # 结构化输出.ainvoke(messages)
)

智能决策能力:

  • 解析执行计划中的步骤序列
  • 跟踪当前执行进度
  • 决定下一个执行代理或结束流程
  • 输出标准化的路由格式 {"next": "agent_name"} 或 {"next": "FINISH"}

决策逻辑:

检查步骤列表 → 定位当前位置 → 判断是否最后步骤 → 返回下一代理/结束

(4)agent_factory - 代理工厂智能体 ⭐

智能体特征确认:

  • LLM配置AGENT_LLM_MAP["agent_factory"] = "basic"
  • 专用promptsrc/prompts/agent_factory.md (146行详细规范)
  • 核心职责: 动态创建专用智能体

实现机制:

messages = apply_prompt_template("agent_factory", state)
agent_spec = await (get_llm_by_type(AGENT_LLM_MAP["agent_factory"]).with_structured_output(AgentBuilder).ainvoke(messages)
)

高级智能能力:

  • 元认知能力: 设计其他AI代理的AI
  • 架构思维: 创建通用、可复用的代理
  • 工具选择专家: 基于"最小权限原则"精确选择工具
  • prompt工程师: 为新代理编写完整的行为指导

创建流程:

需求分析 → LLM类型选择 → 工具筛选 → prompt构建 → 代理实例化

输出标准AgentBuilder 接口

interface AgentBuilder {agent_name: string;agent_description: string;thought: string;llm_type: string;selected_tools: Tool[];prompt: string;
}

2、非智能体组件 (1个)

(5)agent_proxy - 代理调用器

非智能体特征:

  • 无独立LLM: 不使用自己的语言模型
  • 无专用prompt: 没有独立的思考逻辑
  • 功能定位: 代理执行的"中介"或"调用器"

实际功能:

_agent = agent_manager.available_agents[state["next"]]
agent = create_react_agent(get_llm_by_type(_agent.llm_type),  # 使用目标代理的LLMtools=[agent_manager.available_tools[tool.name] for tool in _agent.selected_tools],prompt=apply_prompt(state, _agent.prompt),  # 使用目标代理的prompt
)
response = await agent.ainvoke(state, config=config)

角色定位:

  • 根据 state["next"] 获取真正的执行代理
  • 创建 ReAct 代理实例
  • 调用实际的执行代理(如 researcher, coder, browser)
  • 相当于"代理的代理"或"执行代理器"

四、系统架构总结

1、组件分类

CoorAgent 系统组件分类:
├── 🧠 系统智能体 (4个)
│   ├── coordinator     [基础LLM + 协调prompt]     - 请求路由
│   ├── planner        [推理LLM + 规划prompt]     - 任务规划  
│   ├── publisher      [基础LLM + 发布prompt]     - 执行调度
│   └── agent_factory  [基础LLM + 构建prompt]     - 代理创建 ⭐
└── 🔧 调用器组件 (1个)└── agent_proxy    [无LLM,调用执行代理]       - 代理调用

2、智能体层次结构

  1. 系统智能体: 负责工作流控制和决策

    • 具备独立思考能力
    • 有专门的AI模型和提示词
    • 承担系统级的协调、规划、调度任务
  2. 执行智能体: 负责具体任务执行

    • researcher, coder, browser, reporter 等
    • 通过 agent_proxy 调用
  3. 元智能体:

    • agent_factory 是特殊的"元智能体"
    • 具备创造其他智能体的能力
    • 体现了AI系统的自我扩展特性

3、工作流程

用户请求 → coordinator → planner → publisher → [agent_factory] → agent_proxy → 执行代理

五、结论

在 CoorAgent 的5个核心系统组件中:

  • 4个是智能体: coordinator, planner, publisher, agent_factory
  • 1个是调用器: agent_proxy

其中,agent_factory 是最特殊的"元智能体",它不仅具备完整的AI能力,还能创造其他智能体,体现了系统的动态扩展和自我进化能力。

这种设计体现了 CoorAgent 系统的核心理念:通过多个专业化的智能体协作,实现复杂任务的自动化分解、规划和执行。

http://www.dtcms.com/a/315125.html

相关文章:

  • 【笔记】ROS1|3 Turtlebot3汉堡Burger建SLAM地图并导航【旧文转载】
  • 数学 理论
  • 基于FAISS和Ollama的法律智能对话系统开发实录-【大模型应用班-第5课 RAG技术与应用学习笔记】
  • Fastapi文件上传那些事?
  • 浅谈 Python 中的 next() 函数 —— 迭代器的驱动引擎
  • MCP进阶:工业协议与AI智能体的融合革命
  • Neat Converter电子书格式转换工具,支持ePub、Azw3、Mobi、Doc、PDF、TXT相互转换,完全免费
  • 龙虎榜——20250804
  • numpy数组拼接 - np.concatenate
  • VPS云服务器Linux性能分析与瓶颈解决方案设计
  • java获取文件编码格式,然后读取此文件,适用于任何格式的文件。
  • 面试题:怎么理解3 次握手与 4 次挥手:TCP 连接的建立与终止
  • 【Unity3D】Shader圆形弧度裁剪
  • 思途Spring学习 0804
  • Unity 实现手机端和电脑项目在局域网内通信
  • 【推荐100个unity插件】Unity 的 Hot Reload 热重载实现,加快unity程序编译速度——FastScriptReload插件
  • MySQL InnoDB 表数据结构存储方式详解
  • pathspec ‘with_def_layout‘ did not match any file(s) known to git`
  • Vue 详情header组件
  • Go语言Context
  • ISO(感光度)的工作原理
  • 接口权限(@SaCheckPermission)
  • ebaz4205矿板以太网连接不稳定问题解决方案
  • SQL基础语法(四个分类、库和表的增删改)
  • 【笔记】ROS1|6 中间人攻击移动过程【旧文转载】
  • 私有化部署即时通讯,企业专属通讯系统BeeWorks
  • 计算机网络:网络号和网络位是不是同一个意思
  • 4.5 点云表达方式——图
  • 纯前端使用ExcelJS插件导出Excel
  • 并发编程常用工具类(上):CountDownLatch 与 Semaphore 的协作应用