文章目录1. 结构化输出方案 (Pydantic / JSON Schema)2. 向量检索方案 (Semantic Similarity / Embedding)3. 语义路由模式 (Semantic Router)4. 层次化意图识别 (Hierarchical Intent)5. 各方案对比与选型给你的工程建议如何在 parse_intent 里写代码在 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逻辑进行分发。classIntent(BaseModel):category:Literal[travel_plan,cancel_order,general_consult]confidence:floatreasoning: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_incompleteTrue在边Edge的条件判断中直接导向一个ask_for_info节点反馈给用户“请问您想去哪个城市”你现在的parse_intent只是简单地从 Payload 拿数据下一步是不是打算接入一个ChatModel来实时解析用户发出的自然语言了