当前位置: 首页 > news >正文

Dify 高级实验(07):智能审批——如何让机器自动完成流程审批?

Dify 高级实验(07):智能审批——如何让机器自动完成流程审批?

Dify 实验系列 · 高级 07/10 | 实验编号:DIFY-103-07

1. 实验目的

掌握企业流程自动化的规则路由范式:参数提取器(PE)从自然语言中提取结构化字段 → 代码规则引擎判定 → IF/ELSE 三路分支 → 各分支独立收尾。核心能力:

  • 参数提取器:把一段报销申请文本转成金额/类型/部门/事由/员工编号五个字段;
  • 规则引擎代码化:金额四档(无效/小额/中额/大额)+ 特殊费用类型规则,全部确定性判断;
  • 三路互斥分支:自动通过 / 需审批 / 转人工,每个分支独立 End 节点收尾。

适合:报销/请假/采购审批、工单分级、风控拦截等「规则可描述」的流程场景。前置要求:中级实验 01 参数提取器、16 条件分支。

2. 场景设计

员工提交报销申请(一段自然语言),传统流程「提交 → 领导审批 → 财务审核」慢且标准不统一。本实验让机器秒级判定:

  • 金额 < 1000 元 →自动通过
  • 1000-10000 元 →需部门经理审批
  • ≥ 10000 元 →转财务总监(人工)
  • 特殊规则:招待费超 500 元即使小额也需审批

输入expense_request(报销申请文本,如「报销 5000 元差旅费,市场部王五 E1001」)。
输出:三条分支各自的收尾结果(通过通知 / 审批通知 / 审批单 + 推送状态)。

3. 节点拓扑

开始(expense_request) → 参数提取器(amount / expense_type / department / reason / employee_id) → Code 审批规则引擎(action: auto_approve / need_approval / human_review / reject) → IF/ELSE 三路分支 ├─ 自动通过 → LLM 生成通过通知 → 结束(result_auto) ├─ 需审批 → Code 模拟通知审批人 → 结束(result_need) └─ 转人工/驳回 → Code 生成审批单 → Code HTTP 通知(模拟)→ 结束(result_human)

4. 关键配置

4.1 参数提取器(pe_extract)

注意 PE 的查询字段名是query(与知识库/分类器的query_variable_selector相反),reasoning_mode: function_call,五个参数声明:

-data:instruction:|从以下报销申请内容中提取字段信息。注意: - amount 是报销金额(数字,单位元) - expense_type 是费用类型(差旅/办公/招待/设备,如无法归类填"其他") - department 是所属部门 - reason 是报销事由(简要概括) - employee_id 是员工编号(如 E1001) - 如果某个字段没有明确信息,填 null 而不是编造parameters:-description:报销金额(元)name:amountrequired:truetype:number-description:费用类型(差旅/办公/招待/设备)name:expense_typerequired:truetype:string# department / reason / employee_id 同理……query:[start,expense_request]reasoning_mode:function_calltitle:参数提取type:parameter-extractor

4.2 审批规则引擎(cd_rules)

入参先float()防御转换(PE 提取的 number 到代码节点可能是字符串),输出action供分支路由:

defmain(amount,expense_type,department):amount=float(amount)ifamountelse0result={"amount":amount,"action":"","approver":"","reason":""}ifamount<=0:result["action"]="reject";result["reason"]="金额无效"elifamount<1000:result["action"]="auto_approve";result["reason"]="小额自动通过"elifamount<10000:result["action"]="need_approval";result["approver"]="部门经理";result["reason"]="需部门经理审批"else:result["action"]="human_review";result["approver"]="财务总监";result["reason"]="大额需财务总监审批"# 特殊规则:招待费即使小额也需审批ifexpense_type=="招待"andamount>500:result["action"]="need_approval";result["approver"]="部门经理"returnresult

4.3 三路分支(cond_route)

字符串比较用is(不是=/==);case_human是 OR 条件,同时覆盖human_reviewreject所有被边引用的 case_id 必须在 cases 中定义

-data:cases:-case_id:case_autoconditions:-comparison_operator:isvalue:auto_approvevariable_selector:[cd_rules,action]logical_operator:and-case_id:case_needconditions:-comparison_operator:isvalue:need_approvalvariable_selector:[cd_rules,action]logical_operator:and-case_id:case_humanconditions:-comparison_operator:isvalue:human_reviewvariable_selector:[cd_rules,action]-comparison_operator:isvalue:rejectvariable_selector:[cd_rules,action]logical_operator:ortitle:审批路由分支type:if-else

4.4 三个独立结束节点

多 End 的variable必须唯一result_auto/result_need/result_human,各取本分支输出:

-data:outputs:-type:stringvalue_selector:[lm_approve,text]variable:result_autotitle:结束(自动通过)type:end

5. 运行验证

输入(expense_request)期望行为实测
报销 500 元交通费,市场部张三 E1001action=auto_approve,LLM 生成「已自动通过」通知与预期一致
报销 5000 元差旅费,销售部李四 E1002action=need_approval,通知部门经理审批与预期一致
报销 50000 元设备采购,技术部王五 E1003action=human_review,生成审批单并模拟推送,审批人财务总监与预期一致
报销 800 元招待客户,市场部赵六 E1004特殊规则生效:action=need_approval(而非自动通过)与预期一致

6. 采坑点

现象修复
多个 End 节点variable重名三个结束节点全叫result时校验脚本查不出(双脚本全绿),运行结果互相覆盖每个 End 用唯一 variable(result_auto/result_need/result_human),validate_dsl.py 已加跨节点检查(dify103_07 实测教训)
IF/ELSE 字符串比较用=/==Pydantic 校验报错(字符串只支持is/contains等),旧 DSL 迁移后运行才炸字符串一律is;cases 必须定义所有被边引用的 case_id,否则该分支 UI 无连线(dify02_02 迁移实测)
下游引用 PE 输出用错字段引用pe_extract.text取不到值——校验器对 PE 只认parameters里声明的 name;PE 的text输出也不能作为 end/selector 来源只引用parameters里声明的 name(amount/expense_type/employee_id);要全量 JSON 用代码节点json.dumps打包(dify08_01 实证)
代码节点入参类型不符PE 提取的 number 传进代码是字符串,"12000" > 10000TypeError: '>' not supported between instances of 'str' and 'int'代码内float(amount) if amount else 0防御转换;同时 main() 参数名必须与 variables 的 variable 名一致(按名传参)

7. 实验文档及源码获取

  • 实验文档(完整操作步骤):DIFY-103-07:智能审批工作流.md
  • 源码(可直接导入):dify103_07_智能审批工作流.yml

文章聚焦核心配置与采坑点;实验的完整分步操作(节点搭建/参数表/调试指引)见实验文档原文。


下一篇:Dify 高级实验(08):智能告警——如何用 AI 替代固定阈值监控?

💬 你在这个实验的场景里踩过什么坑?欢迎评论区分享你的实战经验。

http://www.jsqmd.com/news/1380052/

相关文章:

  • 营业执照翻译怎么办理?线上办理翻译的流程是什么,一文详解! - 指上通
  • 浙江靠谱合金钢镀镍厂家有哪些?2026靠谱厂家整理推荐 - 商业新知
  • ESP-SR语音识别框架终极指南:为嵌入式设备打造智能语音交互系统
  • 2026深圳员工宿舍租赁签约注意事项 合同避坑条款核对指南 - 滚动商讯
  • 【厦门工学院主办 | 厦门举办】第四届综合艺术与文化传播国际学术会议 (CACC 2026)
  • V5企业数智化中台的五层架构怎么落到企业实际
  • 2026 达州牛肉干行业参考,深挖宣汉牛肉干源头生产企业 - 市场沸点
  • 水壶密封胶厂家怎么挑?看懂这几点避坑又省心
  • 虚拟电厂核心术语表·进阶篇 2026.8
  • MISRA-C:2004嵌入式编码规范解析:从C语言陷阱到安全关键系统开发实践
  • 会议记录总是“记不全、理不清、找不着”?2026年的职场人,都开始用AI工具解放双手了 - AI派
  • 润才网站建设:如何通过专业定制帮助企业实现数字化转型与品牌溢价最大化
  • 无犯罪证明公证书办理需要什么材料?**清单,3天快速出证! - 指上通
  • 本地四轴转台实力厂家推荐,为您提供优质选型参考 - GrowthUME
  • 2026GLS局放在线监测系统厂家推荐:高性价比厂商梳理 - 商业新知
  • 数据开发|浅谈ai在数据研发中的应用场景与边界
  • 2026成都装修公司哪家靠谱?全品类服务商合规资质盘点+高性价比选择攻略+签约避坑FAQ - 行业观察网
  • 一键保存完整网页:Chrome全屏截图插件高效使用指南
  • Token钱包下载最新版本开放行业发展迎来全新契机
  • 基于SpringBoot与Elasticsearch的诗词大数据系统设计
  • 实测横评|2026王者荣耀cos服六大品牌对比!正版怎么挑?三分妄想资质、面料、版型全面解析 - 互联网科技品牌测评
  • 【AVDTP】规范精讲[8-3]: 流配置核心三步:从参数下发到动态重配置全拆解
  • 2026年陕西塑料托盘实力厂家观察:从产能规模到场景适配的选型参考 - 品研笔录
  • 液压泵测试台厂家,如何撑起军工与高端制造的“可靠性防线”?蔚烁液压的答案是“自研” - GrowthUME
  • 白平衡算法中如何保留原始光源色的方法之二
  • 2026深圳国际物流服务商差异化测评|2026工厂跨境卖家精准选型指南 - 互联网科技品牌测评
  • 30N10DF-ASEMI锂电储能与电源管理30N10DF
  • Upscayl深度探秘:开源AI图像超分辨率工具的7大核心技术解析
  • LSM模型在可转债定价与套利策略中的Python实现指南
  • 2026 亲测 8 款主流配音软件推荐 | 电脑手机精准选型,靠谱好用! - AI工具助手