你有多个 Skill 提供相似功能时,Agent 如何根据用户意图进行自动路由和选择?

面试官:“当系统里有多个 Skill 提供相似功能时,Agent 怎么根据用户意图自动选择最合适的那个?”

候选人:

“这是个很实际的问题。功能相似的 Skill 一多,Agent 最怕的就是‘选择恐惧症’——用户说‘帮我订个票’,它不知道该订机票、火车票还是电影票。解决这个问题的核心,我把它抽象成一套多级漏斗路由机制:先看意图能不能区分,再看参数槽位能不能补全,最后结合上下文和置信度做决策,实在分不清就主动澄清。

我按路由流程的顺序来说。

第一级:意图语义分类 —— 粗筛

Agent 拿到用户输入后,第一步不是去挨个问 Skill,而是先用一个轻量的意图分类模型或嵌入匹配,把用户意图分到某个领域,比如 travelentertainmentwork

  • 用户说“帮我订明天去上海的票”,意图分类器判断属于 travel 领域。

  • 这样系统中即便有三个叫 book_ticket 的 Skill(机票、火车票、电影票),也能通过 Skill 元信息里的 category 字段筛掉电影票,只剩机票和火车票两个候选。

第二级:参数槽位匹配 —— 细筛

到了这一步,Agent 尝试从用户输入中提取参数,把参数和候选 Skill 的参数 schema 做比对,计算槽位填充度。

比如:

  • 机票 Skill 的参数有 departure, destination, date, cabin_class

  • 火车票 Skill 的参数有 departure, destination, date, seat_type

用户说“明天去上海”,Agent 提取出 date=明天, destination=上海,缺 departure。两个 Skill 都缺这个参数,槽位填充度相仿,无法直接决策,就进入下一步。

第三级:上下文与偏好建模 —— 个性化决策

这是路由变智能的关键。Agent 会查看:

  1. 对话历史:上一轮用户刚问过“北京飞上海要多久”,那机票 Skill 置信度 +20%。

  2. 用户画像:该用户历史上 90% 的出行都选高铁,火车票 Skill 置信度 +30%。

  3. 环境上下文:当前时间是 23:00,明天最早的航班已截载,火车票还有票,这个信息可以来自实时查询,也可能作为 Skill 推荐时的附加解释。

综合评分后,Agent 可能会直接选火车票,或者在两个置信度接近时进入下一级。

第四级:置信度阈值与主动澄清 —— 兜底策略

Agent 会预设一个最低决策阈值(比如 0.75)。如果最匹配的 Skill 评分超过阈值,就直接执行;否则,把 Top-2 或 Top-3 以自然语言方式反问用户确认:

  • “您是想订机票还是火车票去上海?”

  • 或者更智能一点:“目前查到明天去上海的航班已截载,但高铁还有余票,需要帮您预订高铁票吗?”

这个澄清本身也会把用户的回答作为强信号,重新触发匹配,并同时更新用户偏好模型。