1311 字
约 4 分钟
15
意图路由
2026-10-13
无标签
意图路由:Agent 的大脑与决策中枢
系列:ToyAgent 智能体知识库 06/26
一句话核心:不是所有问题都需要同一个处理流程。先识别意图,再分流——从单车道升级为立交桥。
为什么需要
把天气、计算、闲聊全塞进一个 ReAct 循环,会遇到三个问题:
- 延迟高:闲聊一句"你好"也要跑完思考-行动-观察的循环,每步都过一次模型;
- 成本贵:简单问题白白消耗多轮 Token;
- 不可控:闲聊场景也可能意外触发工具,行为难以预期。
解法:入口先做一次轻量分类,再按意图走专属通道。每条通道可以是完全不同的处理策略——工具链、计算器、纯对话——互不干扰,各自可优化。这与微服务网关的路由是同构思想:先分流,再处理。
核心机制
两段式:LLM 意图识别 + 决策中枢分发。
// 1. 意图识别:让模型输出分类 JSON
String ROUTER_PROMPT = """
你是意图识别路由器。只输出 JSON:
{"intent": "weather|math|chat", "reason": "一句话理由"}
""";
String intent = Json.str(model.chat(...), "intent");
// 2. 决策中枢:按意图路由
return switch (intent) {
case "weather" -> handleWeather(input); // 走工具链
case "math" -> handleMath(input); // 走计算器
default -> handleChat(input); // 走纯对话
};
路由器的三重身份
- 意图分类器:识别"用户到底想要什么";
- 任务规划器:复杂请求拆成子任务序列(本场景简化为单跳);
- Agent Loop 的节拍器:每轮循环先经过路由,决定继续、转向还是终止。
graph TD
A["用户输入"] --> B["意图识别 LLM 分类"]
B --> I1{"intent 是什么"}
I1 -->|weather| W["handleWeather 工具链"]
I1 -->|math| M["handleMath 计算器"]
I1 -->|chat| C["handleChat 纯对话"]
W --> O["专属通道回答"]
M --> O
C --> O
图示:意图路由分流图——入口一次轻量分类后走三条互不干扰的专属通道,等同微服务网关的先分流再处理。
LLM 路由 vs 规则路由
| 维度 | 关键词规则 | LLM 分类 | 混合(生产推荐) |
|---|---|---|---|
| 延迟 | 0 | 1 次模型调用 | 规则快筛 + LLM 兜底 |
| 准确率 | 表面词匹配,易误判 | 语义级理解 | 双保险 |
| 成本 | 免费 | 按 Token 计费 | 可控 |
举例:一次分流决策的轨迹
入口 Agent 收到三条输入,同一套路由器,三条不同通道:
输入①:"广州现在多少度,要带伞吗?"
→ 意图识别:{"intent": "weather", "reason": "询问实时天气"}
→ handleWeather:调 get_weather 工具 → "26°C 多云" → 组织回答
输入②:"3.7 * 1.06 + 12 是多少?"
→ 意图识别:{"intent": "math", "reason": "数值四则运算"}
→ handleMath:直接调 calculator,不进 ReAct 循环 → 精确计算
输入③:"帮我看看这段代码哪里有 bug:public static int add(int a, b) ..."
→ 意图识别:{"intent": "chat", "reason": "代码咨询,无对应工具"}
→ handleChat:纯对话,按系统提示词风格回答
注意输入②的价值:不经路由的话,这个算式会进 ReAct 循环,模型可能"心算"出错还不调计算器;路由后强制走计算器通道,精度有保证。规则路由在这里会失效——输入里若没有"计算"字样("3.7 乘 1.06 加 12"),关键词匹配就漏了,LLM 语义分类才能兜住。
生产视角——路由器本身也可以先用规则快筛省钱:
// 混合路由:高频明确意图走规则(0 延迟),其余交给 LLM
String intent = input.matches(".*(多少度|天气|下雨).*") ? "weather"
: llmClassify(input); // 兜底:语义级分类
面试考点
- "多 Agent 系统怎么分工?"——第一步就是路由:一个入口 Agent 识别意图后,把任务分给领域 Agent(天气 Agent / 客服 Agent / 代码 Agent)。路由是多智能体协作的前置能力,后续多智能体场景会复用。
- "路由模型用大模型还是小模型?"——分类是轻任务,用小而快的模型(甚至规则)足够;把大模型的预算留给真正的领域处理。
生产化路径
- 意图集合可配置:意图 → 通道的映射放配置中心,新增意图不改主干代码;JSON 输出枚举做严格校验,模型输出未知意图时落到 default 通道而不是抛异常。
- 混合路由降本:先用关键词/正则快筛高频明确意图(0 延迟免费),LLM 只兜语义模糊的尾巴。
- 路由即观测点:在路由层埋"意图分布 + 置信度"日志,意图误判率上升时能第一时间发现——路由错,后面通道再好也白搭。
- 与记忆联动:路由决策本身也可作为上下文注入("本轮已判定为天气意图"),避免 ReAct 循环内重复犹豫。
评论
0 条
还没有评论,先写一条吧。