在 Agent 系统中,意图识别(Intent Recognition)早已从传统的“关键词匹配”进化到了基于大模型(LLM)的语义路由(Semantic Routing)

在你现有的 LangGraph 架构中,parse_intent 节点通常采用以下几种主流方案,按复杂度从低到高排列:


1. 结构化输出方案 (Pydantic / JSON Schema)

这是目前最直接、也是生产环境用得最多的方案。利用 LLM 的 Function CallingStructured Output 能力,强迫模型将用户输入的自然语言转化为预定义的枚举值。(说白了这里结构化的JSON就是预定义的参数,让Agent自己根据输入参数,对号入座写入参数进行意图识别,没有很高大上的东西,都是很简单…)

  • 实现逻辑: 定义一个 Pydantic 类,列出所有可能的意图(如:TRAVEL_PLAN, WEATHER_QUERY, TICKET_BOOKING)。
  • 优势: 结果极其稳定,方便后续通过 if/elseswitch 逻辑进行分发。
class Intent(BaseModel):
    category: Literal["travel_plan", "cancel_order", "general_consult"]
    confidence: float
    reasoning: str # 让模型解释为什么这么选,能有效降低幻觉

2. 向量检索方案 (Semantic Similarity / Embedding)

如果你的意图种类非常多(比如几百个),把所有定义都写在 Prompt 里会非常浪费 Token,且容易让模型糊涂。

  • 实现逻辑:
    1. 提前将每个意图的“示例问题”转为向量(Embedding)存入数据库。
    2. 用户提问时,实时计算提问的向量。
    3. 通过余弦相似度找到最接近的意图。
  • 优势: 毫秒级响应,无需调用 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 + 槽位校验” 的方式:

  1. 初审: 让模型把用户话术转为 IntentState 对象。
  2. 追问机制: 在意图识别节点增加逻辑——如果识别到是“旅游规划”意图,但 city 字段为空,不要往下走
  3. 动态节点: 改变 State 中的一个标记(如 is_incomplete=True),在边(Edge)的条件判断中,直接导向一个 ask_for_info 节点,反馈给用户:“请问您想去哪个城市?”

你现在的 parse_intent 只是简单地从 Payload 拿数据,下一步是不是打算接入一个 ChatModel 来实时解析用户发出的自然语言了?

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐