外观
第七课:多 Agent 协作
目标
理解调度者如何选择专家,以及专家为什么可以表现成上级 Agent 的普通工具。
运行:
bash
npm run lesson:07结构
正在绘制流程图…
专家包装函数返回一个 Tool:
typescript
function specialistTool(
name: string,
description: string,
tools: Tool[],
): Tool {
return {
name,
description,
async execute(arguments_) {
const result = await runAgent(
new DemoModel(),
[{ role: "user", content: String(arguments_.question) }],
tools,
);
return result.finalOutput;
},
};
}从上级看,它是一个工具;进入 execute() 后,它运行的是完整 Agent 循环。
专家隔离
typescript
const mathAgent = specialistTool(
"math_agent",
"处理数学问题",
[calculatorTool],
);
const weatherAgent = specialistTool(
"weather_agent",
"处理天气问题",
[weatherTool],
);数学专家看不到天气工具,天气专家也看不到计算器。
这样可以减少选错工具、缩小权限范围,并让每个专家独立测试。
当前调度方式
typescript
const chosenAgent =
question.includes("计算") ? mathAgent : weatherAgent;当前调度者是普通规则,不是 LLM。以后可以换成模型选择专家,但协作结构不变。
两种常见模式
- 专家作为工具:主管保持控制,调用专家完成子任务,再统一回答。
- Handoff:接待者把整个对话移交给专家,之后由专家直接服务用户。
本课结论
多 Agent 是职责拆分。专家内部仍是普通 Agent;对上级而言,专家可以被包装成一个工具。