Multi-Agent 设计问答
Q:为什么用多 Agent 而不是单 Agent?
单 Agent 在复杂场景下会遇到三个问题:
- 上下文过长:所有任务信息塞进一个 Prompt,超出模型处理能力
- 职责不清:一个 Agent 既要分析数据又要调用工具又要审查风险,容易混乱
- 难以调试:出问题不知道是哪个环节出的
多 Agent 通过职责分离解决这些问题,让每个 Agent 专注于自己的任务。
Q:如何设计 Agent 间的通信?
我通过 LangGraph 的状态对象实现 Agent 间通信。每个 Agent 读取全局状态,完成任务后将结果写回状态。
这样做的好处:
- Agent 之间不需要直接调用
- 状态可以持久化和回溯
- 调试时可以直接查看状态内容
Q:如何处理 Agent 失败?
我设计了三层处理:
- 重试:工具调用失败时自动重试
- 降级:某个 Agent 失败后走备选路径
- 终止:关键步骤失败时终止流程并报告错误
通过 Evaluator 检查执行结果,判断应该重试、降级还是终止。
Q:多 Agent 的调度策略是什么?
我采用 Supervisor 模式,由 Supervisor Agent 根据任务类型和当前状态决定调用哪个 Agent。
调度逻辑包括:
- 根据意图选择首个执行 Agent
- 根据上一步结果决定下一步
- 并行执行无依赖的任务
- 串行执行有依赖的任务