05Bread Multi-Agent · 第 4 章
总进度 31 / 33把问题交给合适的助手
计算需要算术工具,写代码需要代码说明,普通问候则可以直接回应。本章先让 Router 做分类,再由对应助手处理。
2026-09-28约 45 分钟290 行代码难度 ★★
如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。
1. 先分清用户在问什么
假设一个助手同时处理计算、写代码和闲聊,可以先把任务按职责分开:
计算需要算术工具,写代码需要代码说明,普通问候则可以直接回应。本章先让 Router 做分类,再由对应助手处理。
这种分法也可以用来讨论不同业务的交接,例如:
- 客服系统:售后 / 物流 / 退款 / 投诉 / 闲聊 / ...
- 内部助手:HR / 财务 / IT / 行政 / 技术 / ...
分组后,每位助手可以只接收自己需要的说明和工具。不过 Router 也可能分错,因此分类结果同样要留下来检查。
先用三个类别做一个小例子:
用户:"1+2+3=?" ──→ Router 看一眼 ──→ MathAgent
用户:"写 Python" ──→ Router 看一眼 ──→ CodeAgent
用户:"你好" ──→ Router 看一眼 ──→ GeneralAgent
各助手的配置如下:
- MathAgent:1 个工具 calc,prompt 强制"必须调"
- CodeAgent:0 工具,专攻 Python
- GeneralAgent:兜底闲聊
拆开后,可以分别检查这些部分:
- Router 是否把问题分到了正确类别。
- 专家是否拿到了所需工具和上下文。
- 增加新业务时,类别说明、校验和工具注册是否一起更新。
分类会多一次模型调用,是否改善效果和耗时,要通过实际问题比较。
<!-- bread-visual:start -->
<!-- bread-visual:end -->图解: Router 先分类,专家只处理自己的领域。 一次问题通常分配给一个专家;各专家拥有自己的提示词和工具集。
2. 跑起来
cd ch03_router
python main.py
试 3 类输入:
你 > 1+2+3 等于几?
[Router → math] 原因:包含算术运算
🧮 math: 这是简单加法:1+2+3 = 6。
(调了 calc("1+2+3") = 6)
你 > 写一个 Python 函数反转字符串
[Router → code] 原因:Python 编程问题
🐍 code: ```python
def reverse(s: str) -> str:
return s[::-1]
```
切片 [::-1] 是反转字符串最 pythonic 的方式。
你 > 今天天气真不错
[Router → general] 原因:闲聊
💬 general: 是啊,希望你今天心情也不错!☀️
<!-- bread-practice:start -->
实操画面对照

实操运行记录: 实际执行课程副本的
main.py;展示原始输出第 7–18 行。算术交给 math,代码交给 code。这是实测日志的排版图,并非 Windows 原生终端截图;模型回复可能随运行变化。

<!-- bread-practice:end -->实操运行记录: 实际执行课程副本的
main.py;展示原始输出第 25–29 行。问候交给 general 专家。这是实测日志的排版图,并非 Windows 原生终端截图;模型回复可能随运行变化。
3. 对照代码看实现
SpecialistAgent 基类
class SpecialistAgent:
SYSTEM = "..."
TOOLS: list[dict] = []
试读到这里 · 后续内容已封存
关注公众号,继续把这章学完
在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。