构建一个多Agent系统(Multi-Agent System, MAS)方法论

构建一个多Agent系统(Multi-Agent System, MAS)是当前AI工程化落地的重要方向,尤其适用于任务复杂、需专业分工、强调可维护性和扩展性的场景。以下是构建多Agent系统的完整方法论,结合主流框架(如 LangGraph、CrewAI、smolagents 等)和最佳实践,分步骤说明:


一、明确系统目标与架构模式

1.1 典型应用场景

  • 智能客服(意图识别 + 知识检索 + 回答生成)
  • 自动化报告(数据收集 → 分析 → 撰写)
  • 工业运维助手(设备状态查询 → 故障诊断 → 工单创建)
  • 医疗问诊(症状收集 → 知识库匹配 → 诊疗建议)

1.2 选择协作架构(关键!)

架构类型 特点 适用场景
Supervisor(主管模式) 中央协调者决定任务路由 大多数企业级应用,可控性强
Handoffs(交接模式) Agent 主动移交控制权 需灵活跳转、支持人工干预
Team(团队模式) 类似人类团队分工协作 内容创作、研究分析等流程化任务
Network(全互联) 任意Agent可调用其他 小规模实验,生产慎用

推荐生产使用 Supervisor 或 Team 模式,避免失控。


二、选择技术栈与框架

框架 特点 适合人群
LangGraph 基于状态图,支持条件边、Human-in-the-loop、可观测性 企业级开发,需精细控制流
CrewAI 面向"角色-任务-团队"抽象,代码简洁 快速原型、内容生成类任务
smolagents / Dify 轻量、支持 CodeAgent(可生成并执行代码) 需要动态编程能力的场景
AutoGen(微软) 支持多Agent对话、GroupChat 学术研究、对话模拟

📌 示例:若需构建可审计、可回滚、支持人工审批 的系统 → 选 LangGraph

若只需快速搭建研究员+撰稿人 流水线 → 选 CrewAI


三、核心组件设计(以 LangGraph 为例)

3.1 定义共享状态(State)

python 复制代码
from typing import TypedDict, Annotated, List
from langgraph.graph.message import add_messages
from langchain_core.messages import AnyMessage

class AgentState(TypedDict):
    messages: Annotated[List[AnyMessage], add_messages]  # 对话历史
    task_type: str      # 任务类型(如 "diagnosis", "report")
    device_id: str      # 当前操作对象(可选)
    remaining_steps: int  # 防止无限循环

3.2 创建专业化 Agent 节点

python 复制代码
def knowledge_agent(state: AgentState):
    query = state["messages"][-1].content
    # 调用RAG或API
    result = rag_retriever.invoke(query)
    return {"messages": [AIMessage(content=result)]}

def reasoning_agent(state: AgentState):
    context = "\n".join([m.content for m in state["messages"]])
    response = llm.invoke(f"基于以下信息推理:{context}")
    return {"messages": [AIMessage(content=response)]}

3.3 设计主管(Supervisor)决策逻辑

python 复制代码
def supervisor(state: AgentState):
    prompt = f"""
    用户问题:{state['messages'][-1].content}
    请选择下一步执行的Agent:
    - 若需查资料 → 返回 'knowledge'
    - 若需推理总结 → 返回 'reasoning'
    - 若已完成 → 返回 'END'
    """
    decision = llm.with_structured_output(SupervisorSchema).invoke(prompt)
    return {"next": decision.agent_name}

3.4 编排图结构

python 复制代码
from langgraph.graph import StateGraph, START, END

builder = StateGraph(AgentState)
builder.add_node("supervisor", supervisor)
builder.add_node("knowledge", knowledge_agent)
builder.add_node("reasoning", reasoning_agent)

builder.add_edge(START, "supervisor")
builder.add_conditional_edges(
    "supervisor",
    lambda s: s["next"],
    {"knowledge": "knowledge", "reasoning": "reasoning", "END": END}
)
builder.add_edge("knowledge", "supervisor")
builder.add_edge("reasoning", "supervisor")

graph = builder.compile()

四、增强系统可靠性(高级技巧)

✅ 加入 Human-in-the-Loop

python 复制代码
# 在关键节点插入人工审批
def human_review(state):
    print("请审核以下内容:", state["messages"][-1].content)
    approval = input("是否通过?(y/n): ")
    return {"approved": approval == "y"}

✅ 支持任务回滚与修正(如腾讯云方案)

  • 使用 全局监控Agent 监听用户中途修改(如"我改时间了")
  • 触发 状态重置跳转到指定节点

✅ 引入长期记忆

python 复制代码
from langgraph.store.memory import PostgresStore
long_term_store = PostgresStore(conn_string="postgresql://...")
# 在Agent中读写用户偏好、历史记录

五、部署与可观测性

  1. 日志追踪:集成 LangFuse / LangSmith,记录每步Agent决策
  2. 性能监控:统计各Agent调用频次、耗时、失败率
  3. 容器化部署:用 Docker + FastAPI 封装为微服务
  4. 安全控制 :限制 CodeAgent 的 import 权限(如只允许 datetime, json

六、快速上手示例(CrewAI 版)

python 复制代码
from crewai import Agent, Task, Crew

researcher = Agent(role="数据研究员", goal="收集2025年AI趋势", verbose=True)
writer = Agent(role="技术作家", goal="撰写清晰报告", verbose=True)

task1 = Task(description="调研多Agent框架进展", agent=researcher)
task2 = Task(description="基于调研写一篇综述", agent=writer)

crew = Crew(agents=[researcher, writer], tasks=[task1, task2])
result = crew.kickoff()
print(result)

总结:构建多Agent系统的 Checklist

  • 明确任务是否需要多Agent(工具 >3 个?任务 >2 步?)
  • 选择合适架构(Supervisor / Team / Handoffs)
  • 定义清晰的 State 和消息协议
  • 每个 Agent 保持单一职责
  • 加入错误处理与防循环机制
  • 集成可观测性工具(LangFuse 等)
  • 考虑 Human-in-the-Loop 场景

💡 记住 :多Agent不是越多越好,而是"恰到好处的专业分工"。一个设计良好的双Agent系统(如分析+生成),往往比混乱的五Agent系统更可靠。

相关推荐
ManageEngineITSM18 小时前
IT服务台为什么越忙越低效?
人工智能·自动化·excel·itsm·工单系统
程砚成18 小时前
小微美业的数字化突围:一款轻量工具,如何让小店告别经营焦虑?
人工智能
IT_陈寒18 小时前
为什么我的Vite热更新老是重新加载整个页面?
前端·人工智能·后端
zhaoshuzhaoshu18 小时前
人工智能(AI)发展史:详细里程碑
人工智能·职场和发展
Luke~18 小时前
阿里云计算巢已上架!3分钟部署 Loki AI 事故分析引擎,SRE 复盘时间直接砍掉 80%
人工智能·阿里云·云计算·loki·devops·aiops·sre
weixin_1562415757618 小时前
基于YOLOv8深度学习花卉识别系统摄像头实时图片文件夹多图片等另有其他的识别系统可二开
大数据·人工智能·python·深度学习·yolo
QQ6765800818 小时前
AI赋能轨道交通智能巡检 轨道交通故障检测 轨道缺陷断裂检测 轨道裂纹识别 鱼尾板故障识别 轨道巡检缺陷数据集深度学习yolo第10303期
人工智能·深度学习·yolo·智能巡检·轨道交通故障检测·鱼尾板故障识别·轨道缺陷断裂检测
小陈工18 小时前
2026年4月7日技术资讯洞察:下一代数据库融合、AI基础设施竞赛与异步编程实战
开发语言·前端·数据库·人工智能·python
tq108618 小时前
组织的本质:从科层制到伴星系统的决断理论
人工智能
科技与数码18 小时前
互联网保险迎来新篇章,元保方锐分享行业发展前沿洞察
大数据·人工智能