1311 字
约 4 分钟
15
意图路由
无标签

意图路由:Agent 的大脑与决策中枢

系列:ToyAgent 智能体知识库 06/26

一句话核心:不是所有问题都需要同一个处理流程。先识别意图,再分流——从单车道升级为立交桥。

为什么需要

把天气、计算、闲聊全塞进一个 ReAct 循环,会遇到三个问题:

  1. 延迟高:闲聊一句"你好"也要跑完思考-行动-观察的循环,每步都过一次模型;
  2. 成本贵:简单问题白白消耗多轮 Token;
  3. 不可控:闲聊场景也可能意外触发工具,行为难以预期。

解法:入口先做一次轻量分类,再按意图走专属通道。每条通道可以是完全不同的处理策略——工具链、计算器、纯对话——互不干扰,各自可优化。这与微服务网关的路由是同构思想:先分流,再处理。

核心机制

两段式: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 循环内重复犹豫。
意图路由
https://clxhxhhr.top/posts/4706/
作者
clxstart
发布于
2026-10-13
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。