一般Agent系统怎么做意图识别啊
·
文章目录
在 Agent 系统中,意图识别(Intent Recognition)早已从传统的“关键词匹配”进化到了基于大模型(LLM)的语义路由(Semantic Routing)。
在你现有的 LangGraph 架构中,parse_intent 节点通常采用以下几种主流方案,按复杂度从低到高排列:
1. 结构化输出方案 (Pydantic / JSON Schema)
这是目前最直接、也是生产环境用得最多的方案。利用 LLM 的 Function Calling 或 Structured Output 能力,强迫模型将用户输入的自然语言转化为预定义的枚举值。(说白了这里结构化的JSON就是预定义的参数,让Agent自己根据输入参数,对号入座写入参数进行意图识别,没有很高大上的东西,都是很简单…)
- 实现逻辑: 定义一个 Pydantic 类,列出所有可能的意图(如:
TRAVEL_PLAN,WEATHER_QUERY,TICKET_BOOKING)。 - 优势: 结果极其稳定,方便后续通过
if/else或switch逻辑进行分发。
class Intent(BaseModel):
category: Literal["travel_plan", "cancel_order", "general_consult"]
confidence: float
reasoning: str # 让模型解释为什么这么选,能有效降低幻觉
2. 向量检索方案 (Semantic Similarity / Embedding)
如果你的意图种类非常多(比如几百个),把所有定义都写在 Prompt 里会非常浪费 Token,且容易让模型糊涂。
- 实现逻辑:
- 提前将每个意图的“示例问题”转为向量(Embedding)存入数据库。
- 用户提问时,实时计算提问的向量。
- 通过余弦相似度找到最接近的意图。
- 优势: 毫秒级响应,无需调用 LLM 即可完成预分类,节省成本。
3. 语义路由模式 (Semantic Router)
这是一种混合方案,通常位于 Agent 的最前端(Gateway)。
- 工具推荐:
semantic-router(开源库)。 - 做法: 它结合了向量检索的快和 LLM 的准。先通过向量快速过滤出 2-3 个候选意图,再交给一个小参数模型(如 Llama 3 8B)做最后的“判决”。
- 场景: 适合高并发场景,作为过滤层防止非法或无关请求进入核心工作流。
4. 层次化意图识别 (Hierarchical Intent)
对于像你正在做的“旅游规划”这种复杂任务,意图往往是分层的。
- 一级分类(Domain): 确定是“旅游”还是“闲聊”。
- 二级分类(Task): 确定是“单目的地规划”、“多城环线”还是“预算咨询”。
- 槽位填充(Slot Filling): 在识别意图的同时,提取出
city,date,budget等关键参数。
5. 各方案对比与选型
| 方案 | 核心技术 | 适用场景 | 优缺点 |
|---|---|---|---|
| Prompt 判别 | Few-shot Prompting | 意图少(< 5 个) | 简单快捷,但 Token 消耗随意图数增加。 |
| 结构化输出 | Pydantic / Json Mode | 生产环境首选 | 类型安全,逻辑清晰,适合与 LangGraph 深度集成。 |
| 向量路由 | Embedding + Vector DB | 意图极多(> 20 个) | 速度极快,成本极低,但在模糊意图上表现稍弱。 |
| 混合模型 | Embedding + Small LLM | 企业级网关 | 性能与准确率的平衡点,架构较复杂。 |
给你的工程建议:如何在 parse_intent 里写代码?
既然你已经用了 LangGraph 和 AgentState,我建议你在节点内部采用 “LLM + 槽位校验” 的方式:
- 初审: 让模型把用户话术转为
IntentState对象。 - 追问机制: 在意图识别节点增加逻辑——如果识别到是“旅游规划”意图,但
city字段为空,不要往下走。 - 动态节点: 改变 State 中的一个标记(如
is_incomplete=True),在边(Edge)的条件判断中,直接导向一个ask_for_info节点,反馈给用户:“请问您想去哪个城市?”
你现在的 parse_intent 只是简单地从 Payload 拿数据,下一步是不是打算接入一个 ChatModel 来实时解析用户发出的自然语言了?
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)