必须启用会话状态(Context State)承接预算信息,新建Number类型会话变量budget_range,通过LLM结构化输出或模板节点提取数值并写入,再用IF_ELSE节点判断session.budget_range>0,动态分流至推荐或提问路径,最后赋值guide_step闭环引导。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify工作流中实现用户说“我预算5000以内”后,后续自动跳过价格确认、直接推荐匹配商品,必须用会话状态(Context State)承接并流转关键决策依据,否则每轮都得重新问——这不是引导,是反复拷问。
启用会话状态并绑定用户上下文
进入应用编辑页 → 左侧菜单点「变量」→ 切换到「会话变量」标签页 → 点击「+ 新建会话变量」。
填写变量名 budget_range、类型选 Number、默认值留空 → 保存。
【budget_range 必须设为 Number 类型,否则后续数值比较(如 {{session.budget_range
在LLM节点中提取并写入会话状态
方法一:用结构化输出强制解析
在LLM节点配置中,勾选「启用对话记忆」→ System Prompt末尾追加:“你只做一件事:从用户输入中提取预算数字,严格输出 JSON 格式:{"budget": 5000}。不要解释,不要额外字符。”
在「输出变量」中填入 parsed_budget → 后续接「变量赋值」节点,设置:session.budget_range = {{parsed_budget.budget | default(0)}}。
方法二:用模板节点轻量提取(适合含“五千”“五千元”等中文表述)
插入「模板」节点,内容写:{% set num = (query | regex_find(r"[一二三四五六七八九十零百千万亿]+|[0-9]+(?:\.?[0-9]+)?")) | first %}{% set val = (num | chinese_to_arabic) if num and '万' in num else (num | int) if num else 0 %}{{ val }} → 输出变量设为 extracted_budget_num → 接变量赋值节点:session.budget_range = {{extracted_budget_num}}。
基于会话状态动态调整引导路径
第一步:添加条件判断节点
拖入「IF_ELSE」节点 → 判断依据选「会话变量」→ 变量路径填 session.budget_range → 条件设为「大于 0」。
第二步:配置两个分支走向
「真」分支走「已知预算流程」:在此分支内插入「知识库检索」节点,检索参数中 price_max 设为 {{session.budget_range}};
「假」分支走「预算收集流程」:接一个Answer节点,固定提示:“请问您的预算是多少?比如‘3000左右’或‘不超过8000’。”
第三步:关键收口——让引导真正闭环
在「已知预算流程」末端,接一个「变量赋值」节点,写:session.guide_step = "recommended";在「预算收集流程」的Answer节点响应后,接同名赋值:session.guide_step = "awaiting_budget"。这两个值将决定下一轮触发哪套提示词模板。


















