AI 也会“手滑”:当工具调用失败时,如何让大模型学会“自己修 Bug”?
在这篇文章里,我们学会了 ReAct,给 AI 装上了工具(Tools)。
我一学会,就开始“贪心”了。
“我要做一个超级企业助手!我要给它装上:查天气、搜股票、查数据库、发邮件、写代码、画图、订机票……”
于是,我在一个 Prompt 里塞进了 20 个工具的定义(Function Definitions)。
结果呢?
系统崩了。
不是报错,而是 AI 开始乱调。
AI 调用了 send_email,给老板发了封邮件说“天气不错”。或者 AI 反应巨慢,因为每次都要阅读几千字的工具说明书。这就是“单体 Agent”的极限。
当一个人的手里拿着 20 把锤子、扳手、锯子时,他干活一定手忙脚乱。
怎么解决?
像开公司一样解决。你不需要一个“全能员工”,你需要一个前台(Router)和一群专家(Specialists)。
今天,我们来聊聊 Agent 架构中最重要的模式之一:多工具路由(Router Pattern)。
01 什么是 Router(分发员)?
在复杂的 AI 系统中,Router 是一个专门的轻量级 Agent。
它不干活,它只负责指路。
Router(前台): “这是财务类问题。转接 -> 财务专家 Agent。”财务专家 Agent: 接收任务,调用数据库工具,计算,回答。Router 的核心价值在于降噪。
对于“财务专家”来说,它只需要看到 3 个财务工具,不需要知道怎么“画图”或“订票”。
上下文更短,注意力更集中,准确率自然飙升。
02 如何写一个“前台” Prompt?
Router Prompt 的写法,和普通的 Chat Prompt 完全不同。
它本质上是一个多分类任务(Multi-Classification Task)。
一个优秀的 Router Prompt 必须包含三个要素:
目的地清单(Destinations): 有哪些专家可供选择?结构化输出(Structured Output): 别废话,给我 JSON。实战 Prompt 模板:
### Role
你是一个智能意图分发员(Router)。
你**不负责回答问题**,你的唯一任务是判断用户的意图,并将任务分发给最合适的下游负责人。
### Destinations (下游专家清单)
1. **[Finance_Agent]**: 负责处理财务报表、股票查询、汇率计算。
2. **[Coding_Agent]**: 负责编写代码、调试 Bug、解释技术文档。
3. **[General_Chat]**: 负责闲聊、讲笑话、通用问答。
### Instructions
1. 分析用户的输入内容。
2. 根据上面的清单,选择**唯一**一个最匹配的负责人。
3. 如果用户的问题不属于上述任何专业领域,请路由给 [General_Chat]。
### Output Format
请仅输出 JSON 格式,不要输出任何解释性文字:
{
"destination": "选中的专家名称",
"reason": "简短的分发理由"
}
### User Input
{{user_input}}
案例测试:
用户:“帮我写个 Python 脚本。” -> {"destination": "Coding_Agent"}用户:“特斯拉股价多少?” -> {"destination": "Finance_Agent"}用户:“你好呀。” -> {"destination": "General_Chat"}
03 进阶技巧:参数提取与“甚至改写”
单纯的“指路”还不够。
好的前台,在转接电话时,会把客户的需求整理好再递给专家。
这就是 Router 的进阶用法:提取与改写(Extraction & Rewrite)。
假设用户说:“帮我用 Python 画一张特斯拉去年的股价走势图。”
如果不处理,直接把这句话丢给 Finance_Agent,它可能会困惑:“我只管查股价,不会画图啊?”
丢给 Coding_Agent,它可能会困惑:“我没数据,怎么画?”
这时候,Router 需要做一个拆包或者精准传递。
我们修改 Output Format:
### Output Format
{
"destination": "Coding_Agent",
"next_input": "用户需要画特斯拉股价图。请调用 Finance 工具获取数据,然后用 Matplotlib 画图。"
}
Router 在分发的同时,生成了一个针对下游 Agent 的具体指令(next_input)。
这样,下游的专家拿到任务时,就不是一句模糊的用户口语,而是一个清晰的执行工单。
04 语义路由(Semantic Router):更快、更省
如果你的工具非常多(比如 100 个),用 LLM 来做路由会很慢,而且很贵。
这时候,我们可以引入语义路由。
这不是 Prompt Engineering,这是工程架构。
原理很简单:
给每个 Agent 写几句“样板问题”(比如财务 Agent:查股价、看财报、算汇率)。把这些样板问题转化成向量(Embedding)存起来。这种方式不需要调用 GPT-4,只需要跑一次本地向量计算,速度是毫秒级的。
简单场景: 用 Prompt Router(灵活性高)。高并发场景: 用 Semantic Router(速度快、成本低)。
05 产品经理的思考:组织架构决定系统效能
康威定律告诉我们:系统的架构往往反映了组织的沟通结构。
做 Agent 也是一样。
如果你发现你的 Agent 越来越笨,改一个 Prompt 坏三个功能,那说明它太“臃肿”了。
这时候,别再死磕那个几千字的 Prompt 了。
请把你的 Agent 拆分掉。
招聘一个精明的“前台”(Router),雇佣一群专注的“专家”(Sub-Agents)。
让“前台”去处理纷繁复杂的意图,让“专家”在各自的小黑屋里把活干到极致。
分工,才是人类社会(以及 AI 社会)效率提升的根本动力。
写在最后
Router 模式是 AI 应用从 Demo(玩具) 走向 Production(生产环境) 的必经之路。
它虽然增加了一次调用的成本,但它换来的是:
更强的扩展性(想加个画图功能?挂个新 Agent 就行)。别让你的一号员工累死了。给他找几个帮手,再招个前台吧。