Dify中基于意图识别的动态工具链选择需四步:先定义意图与工具映射,再为各意图配置专属工具链,接着用条件分支精准路由,最后启用上下文感知提升识别准确率。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用户输入一句“查下上海仓库的库存”,系统要自动调用库存API;输入“生成Q3销售报告”,就要触发Excel生成工具;输入“把订单ID 12345取消”,则走订单取消工作流——这种根据语义自动匹配并执行对应工具的能力,就是Dify中基于意图识别的动态工具链选择。
第一步:定义意图与工具的映射关系
在工作流画布顶部,拖入一个「问题分类器」节点,命名为“意图识别”。【必须提前在节点配置中填写所有候选意图名称,且名称需与后续工具节点的触发条件完全一致】
点击该节点,在「意图标签」区域逐条添加:query_stock、generate_report、cancel_order、other。每条都配上简明描述和至少2个典型关键词,例如query_stock填“库存、仓库”,generate_report填“报告、Q3、销售”,cancel_order填“取消、作废、ID”。
这一步不能跳过关键词,否则规则层无法拦截高频表达,会把所有请求都推给LLM兜底,显著增加延迟和成本。
第二步:为每个意图配置专属工具链
从「意图识别」节点的输出端,拉出多条分支线,分别连接到不同工具节点:
→ query_stock 分支:接「HTTP 请求」节点,URL设为https://api.wms.com/inventory?warehouse=shanghai,方法选GET,Headers里填好认证token;
→ generate_report 分支:接「代码执行」节点,语言选Python,粘贴一段用pandas生成销售汇总表并导出xlsx的脚本;
→ cancel_order 分支:接另一个工作流节点(Workflow Node),指向已预建好的「订单取消子流程」,该子流程内含校验权限→调用ERP接口→发通知邮件三步;
→ other 分支:直接接「大模型回复」节点,提示词写“抱歉,暂时不支持该操作,请描述更具体的需求”。
第三步:用条件分支实现精准路由
在「意图识别」节点之后,插入一个「条件分支」节点(Conditional Branch)。
设置判断逻辑为:category == "query_stock" → 走库存工具链;category == "generate_report" → 走报告生成链;category == "cancel_order" → 走订单取消链;其余全部归入else分支。
注意:这里的category是问题分类器节点的默认输出字段名,【不可手改,否则分支失效】。
每个分支出口只连一个工具节点,不要交叉或复用,避免下游参数污染。
第四步:启用上下文感知增强准确性
回到「问题分类器」节点配置页,勾选「启用对话历史」选项,并将「最大历史轮数」设为3。
这能让模型看到前两轮对话,比如用户先说“我订了货”,再问“能取消吗?”,系统就能结合上下文判别为cancel_order而非other。
如果当前工作流用于客服场景,建议同时开启「记忆变量」,把用户ID存入memory.user_id,后续工具调用时可直接注入请求体,不用重复提取。


















