Dify 中级实验(13):多 Agent 协作——如何编排多个智能体分工干活?

Dify 中级实验(13):多 Agent 协作------如何编排多个智能体分工干活?

Dify 实验系列 · 中级 13/20 | 实验编号:DIFY-102-14

上一篇:Dify 中级实验(12):Agent 深度配置------如何让智能体自主调用工具?

1. 实验目的

一个 Agent 干所有事,结果往往是「样样通、样样松」。本实验用 Workflow 编排多个专业 Agent 协同:任务分发 → 并行执行 → 汇总裁决。核心是掌握「Dify 里怎么把多个 Agent 串起来」的可行方案(HTTP 调 API / 代码模拟)与输出一致性设计。适合已经会配单个 Agent、想上多角色协作架构的同学。

2. 场景设计

「企业全面分析报告」需要市场、财务、技术三个专业视角,每个维度都需要专业知识,一个 Agent 做不好所有事。本实验的「多 Agent 报告生成器」:输入产品名 + 公司名 → 任务分发节点生成三个任务文本 → 三个专业分析师并行产出分析 → 首席分析师 LLM 汇总成 Markdown 报告(标注来源、裁决冲突、给出行动建议)。

关键约束:Dify Workflow 原生不支持直接调用另一个 Agent 应用,两条路:

  • 方案 A :HTTP 节点调用各 Agent 的 /v1/chat-messages API(真实部署,每个 Agent 独立发布并配独立 API Key);
  • 方案 B:代码节点模拟各 Agent 输出(本 DSL 采用,导入即跑通,适合学编排逻辑)。

3. 节点拓扑

text 复制代码
开始(product_name / company_name)
  ↓
任务分发(Code:生成 market_task / finance_task / tech_task)
  ├─→ 市场分析师(Code 模拟,sleep 0.5s)
  ├─→ 财务分析师(Code 模拟,sleep 0.5s)
  └─→ 技术分析师(Code 模拟,sleep 0.5s)
        ↓(并行汇合)
首席分析师汇总(LLM:三源引用 + 冲突裁决 + Markdown)
  ↓
结束(final_report)

4. 关键配置

4.1 任务分发(Code)

python 复制代码
def main(product_name: str, company_name: str) -> dict:
    product = product_name or "目标产品"
    company = company_name or "该公司"
    return {
        "market_task": "请对 {} 的 {} 产品进行市场分析(行业动态、竞品对比、市场趋势),输出 JSON 格式结果".format(company, product),
        "finance_task": "请分析 {} 的财务数据(模拟数据:营收、成本、盈利、风险),输出 JSON 格式结果".format(company),
        "tech_task": "请分析 {} 的 {} 产品的技术架构和成熟度(技术栈、优势、不足),输出 JSON 格式结果".format(company, product)
    }

4.2 专业分析师(Code 模拟,三节点同构)

每个节点只吃自己的任务文本,输出「报告文本 + JSON 串」双份,汇总与调试都有结构化数据可用:

python 复制代码
def main(market_task: str) -> dict:
    import json, time
    time.sleep(0.5)          # 模拟 Agent 推理耗时,便于观察并行
    conclusion = {
        "market_position": "行业跟随者(模拟结论)",
        "competitors": ["竞品A", "竞品B"],
        "trend": "上升",
        "key_findings": ["目标市场年增速约15%", "竞品A 主打性价比", "本产品差异化空间在于服务"],
        "market_report": "市场分析(模拟):任务「{}」→ 行业跟随者地位,主要竞品竞品A/B,趋势上升,建议聚焦差异化服务切入。".format(market_task[:20])
    }
    return {"market_report": conclusion["market_report"],
            "market_json": json.dumps(conclusion, ensure_ascii=False)}

财务、技术节点同理(finance_report/finance_jsontech_report/tech_json)。三个节点输出变量名必须不同,否则并行分支汇合时互相覆盖。

4.3 首席分析师汇总(LLM)

jinja2 复制代码
你是一个首席分析师。请综合以下三位专家的分析结果,生成一份完整的企业分析报告。

━━━ 市场分析 ━━━
{{market_report}}

━━━ 财务分析 ━━━
{{finance_report}}

━━━ 技术分析 ━━━
{{tech_report}}

要求:
1. 每个部分标注来源专家(市场分析师/财务分析师/技术分析师)
2. 如果专家之间有冲突观点,明确指出并给出你的判断
3. 最后给出综合结论和行动建议
4. 格式:Markdown 格式,包含标题、小节、要点
5. 直接输出报告正文,不要输出任何解释性文字

4.4 方案 A:HTTP 节点调 Agent API(真实部署)

yaml 复制代码
方法: POST
URL: https://your-dify/v1/chat-messages
Headers:
  Authorization: Bearer {{#env.DIFY_AGENT_API_KEY#}}   # API Key 放环境变量,别硬编码
  Content-Type: application/json
Body:
  inputs: {}
  query: "{{#cd_dispatch.market_task#}}"
  response_mode: streaming     # agent-chat 应用只支持 streaming
  user: workflow-system

5. 运行验证

输入 预期 实测
product_name=智能客服系统,company_name=XX科技有限公司 三个分析师并行产出,总耗时 ≈ 最慢节点 三节点并行,约 0.5s 级完成
汇总报告含三节 市场/财务/技术各一小节并标注来源专家 Markdown 三节齐全,来源标注明确
检查各分析师 JSON market_json / finance_json / tech_json 可 json.loads 全部可解析
换产品名再跑 三路任务文本同步更新 分发节点拼接正确,结论随之变化

6. 采坑点

现象 修复
调 agent-chat 的 API 用 blocking 调用失败/取不回结果 response_mode 必须 streaming,HTTP 节点需解析 SSE 流;本地实验用方案 B 代码模拟(实测)
并行分支输出变量同名 汇合后结果互相覆盖,汇总错乱 三个分析师节点输出不同名变量(market_/finance_/tech_ 前缀)(实验文档设计约束)
各 Agent 输出格式不统一 汇总 LLM 拿到散文 + JSON 混合,解析失败 每个专业 Agent 的提示词里强制定义输出 JSON Schema(实验文档设计约束)
API Key 硬编码在 HTTP 节点 泄露风险 + 换 Key 要改流程 放环境变量,节点里 {``{#env.xxx#}} 引用(实验文档设计约束)
模拟节点不 sleep 看不出并行效果,误以为串行 time.sleep(0.5) 让并行可见(实验文档设计约束)

7. 实验文档及源码获取

文章聚焦核心配置与采坑点;实验的完整分步操作(节点搭建/参数表/调试指引)见实验文档原文。


下一篇:Dify 中级实验(14):对话变量与状态管理------如何让工作流记住多轮对话的状态?

💬 你在这个实验的场景里踩过什么坑?欢迎评论区分享你的实战经验。

相关推荐
鬼手点金4 小时前
Hermes Agent vs OpenCode 异同
ai·ai agent·vibecoding·codingagent·opencode·hermes
鱼日先生9 小时前
Dify 中级实验(14):对话变量与状态管理——如何让工作流记住多轮对话的状态?
工作流·dify·ai agent·大模型应用·ai 训练
OmniGoAI9 小时前
用账户分组做内容矩阵:同平台多账号如何发
ai agent·多账号管理·内容分发·内容矩阵
deepseek2310 小时前
Meta Muse Code 拆解:不拼跑分拼恢复,事件日志如何让编程智能体 24 小时不翻车
meta·ai agent·编程智能体
minhuan11 小时前
大模型应用CI/CD全流程解析:打通模型训练、评估、部署自动化,应用持续迭代实践23.7
ci/cd·自动化·大模型应用·大模型应用ci/cd全流程解析·大模型应用工程体系
鬼手点金11 小时前
Hermes‑Agent 使用教程
python·ubuntu·powershell·cmd·ai agent·opencode·hermes
中间件XL1 天前
ai-agent框架spring ai/alibaba 原理源码分析(十)沙箱
沙箱·ai agent·智能体·spring ai·spring ai graph
doiito1 天前
【Agent Harness】Gliding Horse 最新升级:把“智能闭环”真正跑通的一次深度优化
rust·架构设计·系统设计·ai agent
minhuan1 天前
向量数据库选型、向量化与检索调优,结合大模型搭建私有文档检索增强完整应用实践23.6
大模型应用·向量数据库介绍·rag系统调优·rag应用实践