找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1531

积分

0

好友

225

主题
发表于 4 天前 | 查看: 14| 回复: 0

传统的多智能体框架(如MetaGPT、AutoGen、CrewAI等)普遍存在一些核心挑战,一篇来自字节跳动的研究论文《AIME》将这些挑战归纳为“规划-执行”框架的三大缺陷。

痛点一:僵化的执行计划

在传统框架中,计划一旦由规划器制定,执行器便会机械地按顺序执行,即使中途遇到新情况或发现更优解,也难以动态调整。

用户请求 → 规划器制定计划 → 执行器逐个执行 → 返回结果
                                          ↓
           (规划器在首次执行后便处于闲置状态)

典型场景:若要研究“2024年AI领域十大突破”,规划器可能分解出5个搜索子任务。若第一个任务就找到了完整的年度报告,其余4个任务已无必要,但传统框架仍会继续执行。

痛点二:静态的智能体能力

多数框架预定义了一组固定角色的智能体(如研究员、程序员)。当任务需要“金融分析师+法律顾问”这类复合能力时,系统便显得僵化,难以灵活应对。

痛点三:低效的信息传递

在多智能体协作中,上下文信息通过消息在智能体间传递,容易像“传话游戏”一样失真或遗漏。每个智能体缺乏全局视野,无法了解整体进度和其他智能体的工作成果。

高效的信息传递机制应满足:

  • 高保真:信息不丢失、不失真。
  • 全局共享:所有智能体都能访问统一状态。
  • 低开销:避免占用大量Token进行信息复制。

AIME多智能体方案解读

其架构核心流程如下:

  1. 分解任务:动态规划器(主智能体)将用户请求分解为层级子任务。
  2. 分发任务:规划器选择下一个可执行的子任务,发送给执行工厂。
  3. 代理实例化:执行工厂根据任务需求创建定制化的动态执行者(子智能体)。
  4. 执行子任务:子智能体通过“推理-行动-观测”(ReAct)循环完成任务。
  5. 进度更新:子智能体通过特定工具向进度管理模块报告进度。
  6. 评估迭代:任务完成后,规划器更新全局状态并循环至步骤2。

该方案的核心特点是动态规划以文件作为协作桥梁

我的Multi-Agent实现:基于共享工作区的ReAct范式

我的实现方案与AIME理念相似,核心思想是:让共享的文件工作区成为多智能体协作的中枢,文件作为高保真、低开销的信息传递载体。

为何选择文件?

  • 天然持久化:上下文不因智能体重启而丢失。
  • 高效压缩:一个文件路径即可索引海量内容,避免提示词爆炸。
  • 异步友好:不同智能体可在不同时间读写同一文件。
  • 人类可读:便于调试和审查。

架构总览

                          Multi-Agent系统
┌─────────────────────────────────────────────────────────────────┐
│                          主智能体 (Planner)                      │
│                   ┌──────────────┐                              │
│                   │  SubAgent池  │                              │
│                   │ - 深度研究员 │                              │
│                   │ - 数据分析师 │◄─►┌──────────────────────┐   │
│                   │ - 代码工程师 │   │    共享沙箱工作区     │   │
│                   │ - ...        │   │ • TODO.md           │   │
│                   └──────────────┘   │ • FILE_INDEX.json   │   │
│                          │           │ • outputs/          │   │
│                          ▼           │ • research/         │   │
│                ┌──────────────────┐  │ • data/             │   │
│                │   基础工具层      │  └──────────────────────┘   │
│                │ - 网络搜索       │                              │
│                │ - 打开链接       │                              │
│                │ - 代码解释器     │                              │
│                └──────────────────┘                              │
└─────────────────────────────────────────────────────────────────┘

核心工作流程(四步法)

Step 1: 初始化工作区

收到任务后,主智能体首先创建标准化的工作区结构。

import os
from datetime import datetime

os.makedirs("outputs", exist_ok=True)
os.makedirs("research", exist_ok=True)
os.makedirs("data", exist_ok=True)
os.makedirs("temp", exist_ok=True)

todo_content = f"""
# 任务进度日志
## 原始任务
分析2024年全球AI投资趋势,生成可视化报告
## 任务计划
待规划...
"""
with open("TODO.md", "w") as f:
    f.write(todo_content)

生成结构:

/
├── TODO.md              # 核心进度跟踪文件
├── FILE_INDEX.json      # 文件索引
├── outputs/             # 最终交付物
├── research/            # 研究文档
├── data/                # 数据文件
└── temp/                # 临时文件
Step 2: 动态规划

主智能体分析需求,将详细计划写入TODO.md

Step 3: 分步执行与委托
  • 简单任务:主智能体直接使用基础工具(搜索、写代码等)完成。这些工具的实现通常依赖于高效的Python脚本。
  • 复杂任务:委托给相应的子智能体。子智能体会:
    1. 读取TODO.md和文件索引了解上下文。
    2. 访问工作区中的相关文件。
    3. 执行任务并将结果保存到工作区。
    4. 更新TODO.md中的进度。
Step 4: 汇总与交付

主智能体从工作区读取所有产出,整合成最终答案交付给用户。

示例:分析“2024年AI领域主要趋势”

  1. 初始化 & 规划:创建计划,委派深度研究员搜索、数据分析师可视化、总结者生成摘要。
  2. 执行
    • 深度研究员生成报告存入research/,更新TODO.md
    • 数据分析师制作图表存入outputs/,更新TODO.md
    • 总结者生成摘要,更新TODO.md
  3. 汇总:主智能体整合所有文件,生成最终报告。

核心组件详解

组件一:全局动态规划器(主智能体)

这是一个持续监控和动态调整的“指挥官”,而非一次性计划制定者。它能根据子任务执行结果的反馈,实时重新评估并调整全局计划。

组件二:SubAgent工厂

通过预定义的角色模板,实现按需实例化。每个子智能体定义包括名称、描述、系统提示词、可用工具集等。

@dataclass
class SubAgentDefinition:
    name: str
    description: str
    system_prompt: str
    available_tools: List[str]
    auto_read_todo: bool = True

子智能体实例化时,会自动注入当前工作区状态(TODO.md摘要、文件列表)和具体任务描述,构成完整的执行上下文。

组件三:共享工作区(中枢神经)

所有智能体共享同一沙箱文件系统,这是实现高效AI协作的关键。其中,TODO.md是系统的“单一事实来源”,其结构示例如下:

# 任务进度日志
## 原始任务
分析2024年AI领域主要趋势...
## 执行进度
| # | 步骤描述 | 执行者 | 状态 | 产出文件 |
|---|----------|--------|------|----------|
| 1 | 搜索AI趋势报告 | 深度研究员 | ✅完成 | research/ai_trends.md |
| 2 | 数据提取与清洗 | 数据分析师 | 🔄进行中 | - |

组件四:工作区管理器

一个封装了所有工作区操作逻辑的Python类,负责生成初始化、更新进度、注册文件等代码片段。

组件五:基础工具集

  1. web_search:基于Tavily API进行网络搜索。
  2. open_link:打开URL并提取页面内容。
  3. code_interpreter:在e2b沙箱中执行Python代码,这是处理数据和生成文件的核心。

关键设计细节

1. 增量写入策略

对于长文档生成,引导模型分多次增量写入文件,避免因单次输出长度限制而截断。

2. 递归文件变化检测与云存储上传

代码解释器执行前后,递归扫描工作区文件变化,自动将新增或修改的文件上传至云存储(如OSS),并返回可访问的URL,实现产出物的持久化和易分享。这种文件管理和持久化机制,与云原生应用中对状态和配置的管理有异曲同工之思。

# 伪代码示例
async def code_interpreter_async(sbx, code):
    original_files = await scan_all_files(sbx) # 执行前扫描
    results = await execute(code) # 执行代码
    new_files = await scan_all_files(sbx) # 执行后扫描
    for changed_file in detect_changes(original_files, new_files):
        url = await upload_to_cloud(changed_file) # 上传到云存储
        results['generated_files_urls'][changed_file] = url
    return results

3. XML格式的工具调用

采用XML而非JSON格式进行工具调用,以更好地处理包含复杂格式(如代码块)的参数。

<tool_call>
<function>code_interpreter</function>
<code>
import pandas as pd
df = pd.read_csv("data/trends.csv")
print(df.head())
</code>
</tool_call>

当前局限与未来方向

  1. 串行执行效率:当前为串行执行。未来可分析任务依赖,对独立子任务实现并行执行,需解决文件锁和冲突问题。
  2. 自动错误恢复:子智能体执行失败时,可引入重试机制,并根据错误信息自动调整任务。
  3. 缺乏跨会话记忆:工作区随会话结束而销毁。未来可持久化关键产出,支持沙箱状态重加载。

案例展示

使用本系统完成了一个端到端的复杂任务:自动编写一整本《RAG课程的教学课件》。详细执行过程与结果展示了从任务分解、多智能体协作到最终产出的完整流程。

参考资料

  1. Aime: Towards Fully-Autonomous Multi-Agent Framework
  2. ReAct: Synergizing Reasoning and Acting in Language Models
  3. MetaGPT: Meta Programming for Multi-Agent Collaborative Framework
  4. Why do multi-agent LLM systems fail?
  5. e2b - Code Interpreter Sandbox



上一篇:SeaTunnel数据同步实战:MySQL与OceanBase的批处理及CDC实时同步
下一篇:WordPress项目导航菜单修改与Windows系统下Neo4j图数据库安装指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 21:11 , Processed in 0.224494 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表