Dify 1.15 人工介入功能详解:构建可控AI工作流

📅 2026/7/2 11:04:32
Dify 1.15 人工介入功能详解:构建可控AI工作流
在构建复杂的AI工作流时我们常常面临一个困境如何确保AI的自主决策始终符合业务规则和人类意图当AI在处理敏感审批、内容审核或关键决策时完全自动化可能带来风险。Dify 1.15版本引入的“人工介入”功能正是为了解决这一核心痛点它让人类智慧在关键时刻能够介入并引导AI工作流实现人机协同的闭环。本文将深入解析Dify 1.15中“人工介入”功能的完整实现方案。无论你是正在评估Dify的团队负责人还是需要将AI工作流落地到具体业务场景的开发者都能通过本文掌握从概念理解、环境配置、节点使用到实战集成的全流程。我们将通过一个完整的“内容审核与发布”工作流案例手把手演示如何配置审批节点、设置触发条件并最终实现一个可控、可审计的自动化流程。1. 理解Dify人工介入为何它是智能工作流的关键一环在深入配置之前我们首先要厘清“人工介入”在AI工作流中的定位和价值。它并非一个简单的“暂停”按钮而是一个战略性的流程控制点。1.1 人工介入的核心价值与业务场景人工介入功能允许你在一个自动化的工作流中预设一个或多个需要人类审核、确认或输入的关键节点。当工作流执行到该节点时会自动暂停等待指定人员或角色在Dify应用界面进行操作如批准、驳回、修改文本、提供额外信息之后工作流再根据人工输入的结果决定后续分支。其核心价值体现在以下几个典型业务场景内容安全与合规审核AI生成的营销文案、新闻稿、客服回复在最终发布前必须由合规专员或主管进行内容审查。关键决策审批例如一个AI驱动的费用报销分析工作流在判断为“高额异常报销”时自动暂停并提交给财务经理审批。复杂问题升级当AI客服助手遇到无法解决的复杂技术问题时将对话上下文和AI分析结论转交给人类专家处理。数据标注与质量校验在数据预处理流水线中对AI自动分类或标注的结果进行人工抽样校验确保数据质量。创造性工作的最终把关AI辅助生成的方案、设计图、代码片段在定稿前需要人类专家做最后的创意和质量把控。没有人工介入的工作流就像一辆没有刹车的汽车速度虽快但风险不可控。该功能将AI的“效率”与人类的“判断力”和“责任感”相结合是AI应用走向企业级、生产级的关键特性。1.2 Dify 1.15 中人工介入的技术实现原理Dify通过一个名为“人工干预”的节点来实现此功能。从技术架构上看该节点充当了工作流状态机中的一个“等待状态”。执行暂停与状态持久化当工作流引擎执行到“人工干预”节点时会立即暂停当前实例的执行。引擎会将当前工作流的所有上下文变量、执行状态持久化到数据库如PostgreSQL并生成一个唯一的任务标识Task ID。任务通知与分配Dify可以根据预设的配置通过界面待办列表、或集成外部系统未来可能通过Webhook通知相关处理人。处理人通常是拥有Dify应用相应权限的用户或用户组。人工操作界面处理人登录Dify在应用的“工作流任务”或类似界面中看到待处理的任务。界面会清晰展示工作流暂停时的上下文并提供预设的操作按钮如“通过”、“拒绝”或输入框。结果注入与流程重启处理人提交操作后其选择的结果如approvedtrue或输入的内容会被作为新的变量注入到原工作流上下文中。工作流引擎接收到信号加载持久化的状态并根据人工输入的结果沿着对应的分支如“通过”分支或“拒绝”分支继续执行后续节点。这个过程实现了异步、可追踪的人机交互确保了工作流在中断后能够无损恢复。2. 环境准备与Dify工作流基础在开始配置人工介入之前你需要一个正在运行的Dify环境。考虑到网络热词中大量关于部署的问题这里简要说明核心要点。2.1 Dify部署方式选择与快速启动Dify支持多种部署方式对于学习和功能验证我们推荐使用Docker Compose进行本地部署这是最快捷、依赖最少的方式。基础环境要求操作系统Linux (Ubuntu 20.04 CentOS 7) macOS 或 Windows 10/11 (通过WSL2)。Docker20.10Docker Compose2.0硬件建议至少4核CPU8GB内存20GB磁盘空间。使用Docker Compose一键部署获取最新部署脚本git clone https://github.com/langgenius/dify.git cd dify/docker启动所有服务docker-compose up -d这个命令会拉取并启动Dify API服务、前端界面、数据库PostgreSQL、向量数据库Weaviate/Qdrant等所有必要组件。等待启动完成后在浏览器中访问http://localhost:3000。首次访问会进入初始化页面按照指引完成管理员账号创建和基础配置。注意生产环境部署涉及域名、HTTPS、数据持久化、备份、高可用等复杂配置请务必参考官方文档进行规划。对于Windows用户确保已安装并启用WSL2然后在WSL2的Linux发行版中执行上述命令而非Windows原生CMD。2.2 创建你的第一个工作流登录Dify后我们首先熟悉一下工作流创建的基本流程这是使用人工介入功能的前提。进入工作流设计器在Dify控制台点击顶部导航栏的“工作流”然后点击“创建新工作流”。认识核心界面画布区域中间空白区域用于拖放和连接节点。节点工具箱左侧列表包含“开始”、“结束”、“LLM”、“知识库检索”、“代码执行”、“人工干预”等各类节点。变量面板右侧区域用于查看和管理工作流中的变量。配置面板点击节点后右侧会显示该节点的详细配置项。构建一个简单链从工具箱拖拽一个“开始”节点到画布再拖拽一个“LLM”节点将开始节点的输出端口连接到LLM节点的输入端口。在LLM节点中选择一个模型如GPT-3.5并输入一个简单的提示词如“请生成一句关于春天的问候语”。测试运行点击画布右上角的“运行”按钮。你会在下方看到运行日志和LLM节点的输出结果。至此你的Dify工作流环境已经就绪。接下来我们将把焦点放到“人工干预”这个核心节点上。3. “人工干预”节点深度解析与配置“人工干预”节点是实现人工介入的载体。它的配置决定了何时介入、由谁介入、如何介入以及介入后流程如何继续。3.1 节点参数详解将“人工干预”节点拖入画布并选中右侧配置面板包含以下关键部分1. 节点名称与描述节点名称用于在画布和日志中标识此节点建议使用明确的业务名称如“内容主管审核”、“财务审批点”。节点描述可选用于说明此干预点的目的和操作指南处理人可以在任务界面看到此描述。2. 处理人配置核心这是决定“由谁介入”的关键设置。Dify提供了灵活的配置方式指定用户直接输入Dify系统内的用户邮箱。适用于固定人员处理的场景如部门主管。指定用户组输入用户组名称。任务会分配给该组所有成员通常由第一个认领的人处理。适用于团队协作场景如“客服专家组”。变量指定这是一个高级且强大的功能。你可以通过一个变量如{{reviewer_email}}来动态指定处理人。该变量可以在工作流前序节点中生成例如通过一个“代码执行”节点从公司HR系统API查询当前单据的部门负责人。所有应用用户任何可以访问此Dify应用的用户都可以处理。适用于众包或轻量级反馈场景。3. 指令与表单配置核心这是决定“如何介入”的部分即向处理人展示什么信息和提供什么操作。指令一段文本说明用于告知处理人当前任务背景、需要关注的点以及操作指引。例如“请审核以下AI生成的新闻稿检查是否存在事实性错误或不合规表述。”表单你可以为处理人创建输入项。这是收集人工输入的主要方式。类型支持单行文本、多行文本、数字、选择器单选/多选。变量名处理人填写的内容将保存到此变量中供后续节点引用。例如创建一个选择器变量名为review_result选项为通过和驳回。标签表单字段的显示名称如“审核结论”。必填可强制处理人必须填写该项才能提交。4. 超时设置超时时间设置任务等待人工处理的超时时间如24小时。超时后任务将自动按预设的超时后策略执行。超时后策略可选“继续执行后续节点”或“结束工作流”。如果选择“继续”通常需要配合一个默认变量值例如将review_result的默认值设为timeout以便后续逻辑处理超时情况。3.2 连接与上下文变量“人工干预”节点像其他节点一样有输入和输出端口。输入它可以接收上游节点传递的任何变量。你可以在节点的“指令”或“表单描述”中通过{{variable_name}}的模板语法引用这些变量将工作流上下文展示给处理人。例如指令中写入“请审核文案{{generated_content}}”。输出处理人提交表单后表单中每个字段的变量如review_result,feedback会成为该节点的输出变量流入下游连接的节点。理解并熟练运用这些配置项是设计出高效、清晰的人工介入流程的基础。一个常见的误区是指令信息不明确或表单设计不合理导致处理人困惑反而降低了效率。4. 实战案例构建一个带人工审核的AI内容发布工作流现在我们将理论付诸实践构建一个完整的“AI生成文章 - 人工审核 - 分支处理”的工作流。这个案例模拟了一个内容运营团队的日常场景。4.1 案例需求与流程设计业务场景运营人员输入一个主题AI自动生成一篇短文草稿然后提交给内容审核员进行审核。审核员可以“通过”、“驳回”或“建议修改”。根据审核结果若“通过”工作流自动将文章发布到模拟的CMS系统。若“驳回”工作流结束并通知申请人。若“建议修改”工作流将审核员的修改意见连同原文返回给一个“文章优化”节点让AI根据意见重写然后再次进入审核环节简化起见本例不展示循环。工作流节点规划开始接收用户输入的主题。LLM文章生成根据主题生成文章草稿。人工干预内容审核等待审核员决策。条件判断根据审核结果 (review_result) 判断分支。分支1发布代码执行节点模拟调用发布API。分支2优化LLM节点根据反馈优化文章。分支3通知驳回LLM节点生成驳回通知。结束结束流程。4.2 分步配置与代码实现步骤1创建工作流并配置开始节点新建一个工作流命名为“AI文章审核发布流程”。选中“开始”节点在配置面板的“变量”部分添加一个用户输入变量。变量名article_topic类型字符串标签文章主题必填是表单单行输入步骤2配置文章生成LLM节点从工具箱拖拽“LLM”节点到画布连接在开始节点之后。配置该节点模型选择你已配置的模型如gpt-3.5-turbo。提示词你是一位专业的自媒体编辑。请根据用户提供的主题撰写一篇结构清晰、语言流畅的短文字数在300字左右。 主题{{article_topic}}上下文保留默认。输出变量名设置为draft_article。这个变量将保存AI生成的文章。步骤3配置核心“人工干预”节点拖拽“人工干预”节点到画布连接在文章生成节点之后。进行详细配置节点名称内容审核点处理人选择“指定用户”并填入你的Dify登录邮箱或你同事的邮箱。在实际业务中这里可以配置为“内容审核组”。指令请审核以下由AI生成的文稿。请重点关注 1. 事实准确性。 2. 是否符合品牌调性。 3. 有无语法或逻辑错误。 文稿内容 {{draft_article}}表单配置点击“添加表单字段”。字段1类型选择器变量名review_result标签审核结论选项通过驳回建议修改必填是字段2类型多行文本变量名feedback标签修改意见若选择“建议修改”请在此填写具体意见必填否超时设置设置为24小时超时后策略选择继续执行后续节点并设置review_result的默认值为timeout。步骤4配置条件判断节点拖拽“条件判断”节点到画布连接在人工干预节点之后。配置分支条件条件1review_result等于通过条件2review_result等于建议修改条件3review_result等于驳回默认分支其他情况用于处理超时timeout或其他未定义值将人工干预节点的输出线连接到条件判断节点的输入端口。步骤5配置各分支处理节点分支1通过模拟发布从工具箱拖拽“代码执行”节点到“通过”分支下。配置节点选择Python语言编写模拟发布逻辑# 代码执行节点模拟文章发布 # 输入变量draft_article, article_topic, review_result # 输出变量publish_status import json import time # 模拟调用发布API print(f准备发布文章主题{article_topic}) print(f文章内容预览{draft_article[:100]}...) # 模拟网络请求延迟 time.sleep(0.5) # 假设发布成功 publish_status { status: success, message: f文章 {article_topic} 已成功发布至CMS系统。, timestamp: time.strftime(%Y-%m-%d %H:%M:%S) } # 输出必须是一个可JSON序列化的对象 publish_status将此节点的输出变量名设置为publish_status。分支2建议修改文章优化拖拽一个“LLM”节点到“建议修改”分支下。配置提示词你是一位专业的文章编辑。以下是原始文章和审核人给出的修改意见请根据意见对文章进行优化重写。 原始文章 {{draft_article}} 审核人意见 {{feedback}} 请输出优化后的完整文章设置输出变量名为optimized_article。可选你可以将optimized_article再次连接到一个新的人工干预节点进行二次审核实现循环。本例中我们简化直接连接到一个“结束”节点。分支3驳回生成通知拖拽一个“LLM”节点到“驳回”分支下。配置提示词根据以下信息生成一封给文章申请人的友好驳回通知邮件正文。 申请主题{{article_topic}} 审核结论驳回 要求语气委婉说明文章需要重新构思或深度修改鼓励再次提交。设置输出变量名为rejection_notice。默认分支超时处理拖拽一个“代码执行”节点到“其他情况”分支。编写简单逻辑# 处理超时情况 timeout_status { status: timeout, message: 审核任务超时未处理流程已自动继续。请管理员关注。, review_result: review_result # 此时review_result的值为‘timeout’ } timeout_status步骤6连接所有分支到结束节点将“发布”节点、“文章优化”节点、“驳回通知”节点和“超时处理”节点的输出分别连接到同一个“结束”节点。Dify工作流支持多个节点汇聚到一个结束节点。至此完整的工作流配置完成。你的画布应该是一个清晰的、有分支的流程图。4.3 运行测试与效果验证保存并发布点击右上角“发布”按钮将此工作流发布为一个可用的应用。运行测试在应用界面输入文章主题例如“夏日防暑小贴士”。点击“运行”。工作流会快速执行到“文章生成”节点然后在“人工干预”节点处暂停。模拟人工处理使用你配置的审核人邮箱账号登录另一个浏览器或无痕窗口访问同一个Dify应用。通常在应用界面会有“待处理任务”、“工作流任务”或类似入口具体位置请以你的Dify版本界面为准。找到待审核的任务。点击处理你会看到我们配置的指令和表单。选择“建议修改”并在意见框中输入“请增加一些具体的饮食建议例如推荐瓜果种类。”点击提交。观察流程继续回到原工作流运行日志界面或刷新你会发现流程自动继续进入了“建议修改”分支LLM根据意见生成了优化后的文章。最终流程执行完毕你可以查看每个节点的输出详情。通过这个完整的案例你不仅配置了一个人工介入节点更实践了如何将其融入一个包含条件逻辑、LLM调用和代码执行的复杂工作流中。这正是Dify可视化编排能力的强大之处。5. 常见问题与排查思路在实际使用“人工介入”功能时你可能会遇到一些典型问题。以下表格整理了常见问题及其解决方法问题现象可能原因排查思路与解决方案工作流在人工干预节点长时间卡住无人收到通知。1. 处理人配置错误邮箱拼写错误或用户不存在。2. Dify后台任务队列服务未正常运行。3. 处理人没有当前应用的访问权限。1.检查配置确认“处理人”邮箱是Dify系统内的有效用户。在“团队管理”中查看用户列表。2.检查服务运行docker-compose logs api查看API服务日志检查是否有任务分发错误。3.检查权限确保处理人账户已被添加到该应用的“协作者”列表中或应用权限设置为“公开”。处理人提交后工作流没有继续执行。1. 下游节点连接断开或配置错误。2. 表单输出的变量名与下游节点引用名不一致。3. 工作流版本未发布。1.检查连线在画布上确认人工干预节点的输出端口已正确连接到下游节点如条件判断节点。2.检查变量确认人工干预节点中表单的“变量名”如review_result在下游节点的条件判断或提示词中引用时名字完全一致包括大小写。3.确认发布确保你对工作流所做的修改已经点击“发布”。正在运行的老版本实例不会使用新版本的逻辑。在指令中引用上游变量如{{draft_article}}不显示内容。1. 变量名拼写错误。2. 上游节点未成功设置该输出变量。3. 变量内容为空或未传递。1.核对变量名在上游节点如LLM节点的配置中确认其“输出变量名”是什么。在人工干预节点的指令中使用完全相同的名字并确保包裹在{{}}中。2.调试上游单独运行人工干预节点的上游链路检查目标变量是否有值。表单提交后下游节点拿到的值是undefined或空。1. 表单字段的“变量名”包含特殊字符或空格。2. 下游节点在变量未就绪时提前执行异步问题在Dify中较少见。1.规范命名表单变量名使用英文、数字和下划线如user_feedback避免使用中文和空格。2.检查依赖Dify工作流引擎本身是同步顺序执行此问题概率低。确保节点连接顺序正确。如何实现“多人会签”或“或签”Dify 1.15 标准人工干预节点原生支持指定“用户组”但默认为组内任一成员处理即可或签。多人会签实现目前标准节点未直接支持“所有人同意”。变通方案可以串联多个“人工干预”节点或将一个节点的处理人设置为多个邮箱用分号隔开但这可能被视为一个任务分配给多人行为需测试。更复杂的审批逻辑可能需要结合“代码执行”节点调用外部审批系统API。6. 最佳实践与工程化建议将人工介入功能用于生产环境时遵循以下最佳实践可以提升可靠性、安全性和用户体验。6.1 权限与安全设计最小权限原则在“处理人”配置中精确指定需要介入的具体人员或小组避免使用“所有应用用户”等宽泛设置除非业务场景确实需要。应用访问控制确保你的Dify应用设置了正确的访问权限。对于包含敏感业务审批的工作流应将应用设置为“私有”并仅邀请必要的成员作为协作者。审计日志Dify会记录工作流每次执行的详细日志包括人工干预节点的操作人、操作时间和提交内容。定期审查这些日志用于合规审计和流程分析。6.2 流程设计优化超时策略必须配置永远不要忽略“超时设置”。一个等待人工处理而永不超时的任务会成为“僵尸任务”占用系统资源并导致流程堵塞。根据业务紧急程度设置合理的超时时间如2小时、24小时并设定超时后的默认流向如自动驳回或转交他人。提供清晰的上下文在“指令”字段中充分利用模板变量{{}}将上游关键信息如申请人、申请时间、AI分析摘要、原始请求清晰地展示给处理人减少其切换上下文查找信息的时间。表单设计要友好使用“选择器”代替开放文本输入作为结论字段如“通过/驳回”可以标准化输出便于下游条件判断。对于需要说明的“驳回”或“修改”操作再配套一个“多行文本”字段收集意见。考虑异常分支除了“通过”和“驳回”你的条件判断逻辑应该涵盖“超时”和其他所有可能情况使用“默认分支”确保工作流在任何情况下都能优雅结束或进入异常处理流程。6.3 与外部系统集成对于企业级应用人工介入的触发和处理可能需要与现有系统如OA、邮件、钉钉/飞书打通。通知集成虽然Dify界面内有任务列表但重要的审批任务需要通过外部渠道提醒。你可以在人工干预节点之前添加一个“代码执行”或“HTTP请求”节点调用公司内部的邮件、即时通讯工具Webhook发送待办通知。审批深度集成如果企业已有成熟的审批流系统如钉钉审批、企业微信审批更佳的做法是反向集成。即在Dify工作流中通过“HTTP请求”节点调用审批系统API发起一个审批单然后使用“Webhook”节点或周期性“查询”节点等待审批系统回调结果。这样可以利用企业现有的审批权限体系和移动端操作体验。6.4 版本管理与回滚发布前充分测试在修改包含人工介入逻辑的工作流后务必在测试环境或使用“测试运行”功能进行完整场景测试包括通过、驳回、修改、超时等所有分支。利用版本历史Dify工作流支持版本管理。在发布新版本前系统会保存旧版本。如果新版本的人工介入逻辑引入问题可以快速回滚到上一个稳定版本。人工介入功能是Dify工作流从“自动化”迈向“智能化协同”的桥梁。通过精心的设计和配置你可以构建出既高效又可靠、既发挥AI能力又保留人类控制的混合智能系统。