跳转到主要内容

Swarm 多智能体工作流

本教程演示如何使用 Shannon 的 SwarmWorkflow 部署由 LLM 驱动的 Lead Agent 协调的持久化协作智能体。智能体并行工作,支持智能体间消息传递、共享工作区和动态任务重新分配。

你将学到

  • 如何通过 API 和 Python SDK 提交 Swarm 任务
  • Lead Agent 如何通过事件协调智能体
  • 如何通过 SSE 流式传输监控智能体进度
  • 如何配置 Swarm 参数和预算控制
  • 实际用例与最佳实践

前置条件

  • 已运行的 Shannon 堆栈(Docker Compose)
  • Gateway 可通过 http://localhost:8080 访问
  • config/features.yaml 中已启用 Swarm(默认启用)
  • 鉴权默认:
    • Docker Compose:默认关闭鉴权(GATEWAY_SKIP_AUTH=1)。
    • 本地构建:默认开启鉴权。可设置 GATEWAY_SKIP_AUTH=1 关闭;或在请求中加入 API key 头 -H "X-API-Key: $API_KEY"

快速开始

一步提交 + 流式传输

对于前端应用,使用合并的提交+流式传输端点:
响应:
然后连接流式传输 URL 获取实时事件:

Python SDK

基本用法

带流式传输

自定义上下文

智能体协作方式

Lead Agent 协调

Lead Agent 作为事件驱动的协调者。它不执行任务本身,而是基于事件进行规划、分配和重新分配工作:
  • 当智能体变为 idle 时,Lead 检查是否有依赖已满足的待处理任务并分配下一个
  • 当智能体 完成 时,Lead 评估是否重新分配它、关闭它或修订计划
  • 在定期 检查点(每 120 秒)时,Lead 审查整体进度并可调整计划
  • 当没有空闲智能体且没有可操作的待处理任务时,Lead 跳过不必要的 LLM 调用

团队名册

每个智能体都会收到团队名册,显示所有智能体及其任务分配。这使智能体知道就特定信息联系谁:

发布发现

智能体通过共享工作区分享发现。这些内容会出现在每个智能体的提示上下文中:

发送直接消息

智能体可以向特定队友发送直接消息:

请求帮助

当智能体需要额外支持时,可以向 Lead Agent 请求帮助:
Lead Agent 评估请求后,可能生成新智能体、重新分配现有空闲智能体,或将子任务添加到待处理任务队列。

配置

features.yaml

配置参数

实际用例

协作编码

智能体协作审查、实现和测试代码,支持沙箱化执行。

金融分析

多空分析师、情绪智能体和投资组合经理协作综合投资洞察。

数据处理

并行数据流水线,支持沙箱化 Python 执行、JSON 查询和统计分析。

竞争情报

同时监控竞争对手网站、定价和社交媒体,发现自动交叉共享。

示例:协作代码审查

Lead Agent 为每个关注点(安全审计、代码质量、测试覆盖)创建任务,分配 developer 角色的智能体,并创建依赖于所有审查完成的最终综合任务。

示例:多站点价格监控

理解响应元数据

Swarm 工作流返回包含模型执行明细和 Token 用量的元数据:

提示与最佳实践

  • 设置 context.force_swarm: true 路由到 SwarmWorkflow
  • 从默认配置开始,根据结果进行调整
  • 通过 SSE 事件监控 Lead Agent 决策和智能体行为
  • 使用会话(session_id)进行多轮 Swarm 对话
  • 关注 LEAD_DECISION 事件以理解协调逻辑

故障排除

常见问题
  • Swarm 未触发:确保 force_swarm: truecontext 对象中,且 features.yaml 中已启用 Swarm
  • 智能体超时:对复杂任务增加 agent_timeout_seconds(默认 1800 秒 / 30 分钟)
  • 智能体过多:简化查询以减少子任务数量,或降低 max_agents
  • Token 消耗过高:降低 max_iterations_per_agent、使用 model_tier: "small",或降低 max_total_tokens
  • 智能体陷入循环:收敛检测(连续 3 次非工具迭代)应自动捕获此情况
  • 预算超限:检查 max_total_llm_callsmax_total_tokens 设置;Lead 会在预算紧张时尝试优雅关闭
  • 重复搜索:知识去重应自动处理;如持续出现,检查智能体是否可访问共享工作区

回退行为

如果 Swarm 工作流失败(规划错误、所有智能体失败等),Shannon 会自动回退到标准 DAG/Supervisor 工作流路由。force_swarm 标志会从上下文中移除以防止递归失败。

下一步

Swarm 概念

深入了解 Swarm 架构

深度研究

带引用的多阶段研究

API 参考

完整 API 文档