← 文章 / AI技术
掘金-AI 3天前 · 2026-07-22 20:44:24 · 54 阅读

面试官:Agent意图识别怎么做?95%的人一句话就把自己送走了

面试官:Agent意图识别怎么做?95%的人一句话就把自己送走了

神奇小汤圆 2026-07-22 0 阅读13分钟

面试官:Agent 的意图识别怎么做?

如果是你。

面试官突然问一句:

“Agent 的意图识别怎么做?”

你的第一反应是不是这样?

“就是把所有 Intent(意图) 和 Intent Description(意图描述) 放进 Prompt,让大模型返回一个 Intent。”

说完。

你以为回答完了。

面试官点点头。

然后继续问:

“线上几十上百个 Agent 怎么办?”
“Intent 很多怎么办?”
“两个 Intent 都很像怎么办?”
“识别错了怎么办?”

......

如果这些问题你一个都回答不上来。

基本上这轮 Agent 面试已经结束了。

很多同学觉得这是自己不会。

其实不是。

而是你的答案停留在 Demo 阶段,而面试官想听的是生产级方案。

今天,我们就来复盘一下,这道题到底应该怎么回答。


第一层答案(95%的人都这么回答)

很多人都会说:

Agent 的意图识别其实很简单。

例如系统里面有几个 Intent。

查询天气
查询股票
聊天
知识问答
生成代码

然后给每个 Intent 写一个描述。

例如:

Intent1:
查询天气

描述:
用户想查询天气、温度、空气质量。

Intent2:
股票查询

描述:
用户想查询股票、基金、证券信息。

然后把所有 Intent 一起放到 Prompt 里面。

例如:

System Prompt

你现在负责意图识别。

下面是所有Intent。

......

用户输入:

上海今天天气怎么样?

请返回Intent名称。

LLM 返回:

Weather

然后系统进入 Weather Agent。

整个流程结束。

很多 Demo 都是这么做的。

实际上,对于只有几个 Intent 的 Agent,这个方案完全没有问题。

很多开源项目也是这么实现的。

但是。

如果你在面试里回答到这里。

基本已经结束了。

因为真正的线上系统,几乎没人这么干。


面试官真正想听的是什么?

真正的 Agent,并不是几个 Intent。

而是几十个。

甚至几百个。

例如企业 Copilot

可能有:

HR Agent

财务 Agent

合同 Agent

OA Agent

审批 Agent

CRM Agent

研发 Agent

运维 Agent

......

每个 Agent 又有几十个 Intent。

如果全部放进 Prompt。

马上出现几个问题。


第一个问题:Token 爆炸

假设:

一个 Intent 描述 300 Token。

100 个 Intent。

就是:

300 × 100

=30000 Token

用户只问一句:

今天上海天气怎么样?

结果先发送三万 Token。

成本直接炸了。

不仅贵。

速度也慢。

很多工程团队都会先做路由,把请求送到更小的能力集合,而不是把所有能力一次性交给 LLM。

所以。

第一件事情。

一定要减少参与分类的 Intent 数量。


第二个问题:Intent 越多,准确率越低

例如:

查询天气

天气预报

空气质量

生活指数

未来天气

LLM 很容易分不清。

尤其 Intent 边界不清晰的时候。

准确率会越来越低。

因此生产环境一般都会要求:

Intent 之间必须互斥。

描述必须清楚。

不能存在大量重叠。

这是很多企业做 Intent Design 时最强调的一点。


第三个问题:误识别以后怎么办?

很多人到这里就不会了。

其实真正线上系统。

不会相信一次分类。

因为:

LLM 永远可能判断错。

所以一定有:

Confidence(置信度)

例如:

Intent:

Weather

Confidence:

98%

如果:

98%

直接进入 Agent。

如果:

55%

怎么办?

不是继续执行。

而是:

反问用户。

例如:

请问你是想查询今天的天气,

还是未来七天的天气?

或者:

你说的苹果,

是苹果公司,

还是水果?

不要猜。

让用户确认。

这是线上 Agent 非常重要的一步。


真正让我满意的答案,是这一套分层架构

如果我是面试者。

我会这样回答。

最简单的方案,确实是把所有 Intent 和 Intent Description 一起交给 LLM 分类。
但是这种方案更适合 Demo。
如果是生产环境,我一般会采用多阶段 Intent Routing

整个流程如下:

整个流程其实可以分成三层。

首先,用户输入一句话,比如这里说的是:

“苹果多少钱?”

注意,这句话其实是有歧义的。

它既可能是在问苹果水果的价格,也可能是在问苹果公司的股价,甚至还有可能是在问 iPhone 的价格。

所以,如果一上来就把所有 Intent 丢给大模型去判断,不仅成本高,而且还容易误判。

因此,生产环境一般不会这么做。


第一层叫规则匹配(Rule Matching)。

这一层的目标只有一个:快速过滤那些确定性的请求。

比如 Regex、关键词匹配、黑白名单等等。

如果一句话能够通过规则直接确定意图,例如用户输入”天气预报”、”帮助中心”这种固定表达,那么系统就直接返回结果或者进入对应 Agent,根本不需要调用大模型。

这样做最大的好处就是速度快、成本低

如果规则没有命中,再进入下一层。


第二层是 Embedding 语义召回

这一层非常关键。

假设你的系统里有 100 个 Intent,如果全部交给 LLM 去比较,不仅 Prompt 很长,而且 Token 消耗也会非常高。

所以这里会先利用 Embedding 计算用户输入和所有 Intent 的语义相似度。

比如从 100 个 Intent 中,只召回最相关的 Top 5

这一层并不是最终做决策,而是负责缩小搜索范围

你可以把它理解成搜索引擎里的”初筛”,把明显不相关的 Intent 全部过滤掉。


第三层才是真正交给 LLM 做分类。

不过这个时候,大模型已经不用面对 100 个 Intent 了,而是只需要在刚刚召回的 5 个候选 Intent 中做选择。

因此,它可以输出三个结果:

第一个是最终识别出来的 Intent

第二个是 Confidence(置信度)

第三个是为什么这么判断,也就是 Reason

这样不仅准确率更高,而且 Prompt 更短,推理速度也更快。


最后,系统会根据置信度做不同处理。

如果置信度很高,比如超过 80%,那么就直接进入对应的 Agent 执行业务逻辑

但是,如果置信度比较低,就千万不要猜。

而是进入 Clarify(澄清)  阶段,主动向用户确认真实意图。

比如这里的例子:

“你说的苹果,是苹果公司,还是水果?”

等用户回答之后,再重新进行一次意图识别。

虽然多了一轮对话,但是可以大幅降低误判带来的业务风险,这也是很多企业级 Agent 都会采用的设计。


所以,这张图最核心的思想其实就一句话:

不是一开始就让 LLM 判断所有 Intent,而是通过”规则过滤 + Embedding 召回 + LLM 精排 + Clarify 兜底”的多阶段路由架构,在准确率、Token 成本和响应速度之间取得最佳平衡。

这也是为什么很多人做出来的是 Demo,而真正上线的 Agent,几乎都会采用这种分层的 Intent Routing 架构。


为什么要加 Embedding?

很多人会问:

既然最后还是 LLM 分类。

为什么还要加 Embedding?

答案只有两个字:

降本。

例如:

线上:

500 个 Intent

Embedding 一次召回:

Top10

LLM 只需要比较:

10个

Prompt 大幅缩小。

Token 大幅下降。

速度更快。

成本更低。

很多生产系统都会采用”Embedding 初筛 + LLM 精排”或者”轻量分类器 + LLM 兜底”的两阶段、三阶段路由,而不是让 LLM 每次面对完整的意图集合。


如果面试官继续追问:”还能继续优化吗?”

如果回答到这里,很多候选人已经不知道该说什么了。

但真正的企业级 Agent,远远不是把 Intent 识别出来就结束了。

在生产环境中,一个优秀的 Intent Routing 系统,还必须具备持续观测、持续评测和持续迭代的能力。

如果是我,我会继续这样回答。


① 建立完整的 Trace,能够完整回放每一次决策过程

首先,我会为每一次请求建立完整的 Trace。

记录的不仅仅是最终识别出的 Intent,而是整个 Routing 的决策链路。

例如一次请求会记录:

用户输入
        │
        ▼
Embedding Top-K 召回结果
        │
        ▼
LLM Prompt
        │
        ▼
LLM 输出
(Intent、Confidence、Reason)
        │
        ▼
进入哪个 Agent
        │
        ▼
调用了哪些 Tool
        │
        ▼
最终回复结果

这样做最大的价值是**可回溯(Traceability)** 。

例如某一天用户反馈:

“这个 Agent 怎么总是理解错我的问题?”

这时候,我们可以直接回放这条 Trace。

到底是 Embedding 没有召回正确的 Intent?

还是 Prompt 导致 LLM 分类错误?

又或者是 Confidence 阈值设置得太低?

有了完整的 Trace,整个决策过程都能够被还原,排查问题的效率会高很多。这也是目前很多 Agent 平台首先建设 Tracing 能力的原因,因为后续的评测、调试和优化都依赖于完整的运行轨迹。


② 建立线上可观测体系(

评论 (0)