Dify 1.15 人工介入功能详解:构建人机协同AI工作流实战

📅 2026/7/5 1:00:11 👁️ 阅读次数 📝 编程学习
Dify 1.15 人工介入功能详解:构建人机协同AI工作流实战

在实际企业级 AI 应用开发中,构建一个完全自动化的流程是理想状态,但现实情况是,复杂业务逻辑、合规要求或模型能力的边界,常常需要引入“人”的判断和干预。Dify 作为一个领先的 LLM 应用开发平台,其“人工介入”功能正是为了解决这一核心痛点。它允许你在 AI 工作流的特定节点暂停,将决策权或审核权交还给人类操作员,待人工处理完成后再继续后续的自动化流程。这不仅是简单的“审批”,而是将人类智慧无缝嵌入到 AI 驱动的自动化链条中,实现人机协同。

本文将深入解析 Dify 1.15 版本中人工介入功能的设计理念、核心机制与实战配置。无论你是希望为 AI 客服添加敏感问题人工审核,还是为内容生成流程加入编辑校对环节,亦或是为数据标注任务设计人机回圈,都能通过本文掌握从零搭建一个具备人工介入能力的 Dify 工作流。我们将从概念理解开始,逐步完成环境准备、工作流构建、节点配置、运行测试,并最终探讨生产环境下的最佳实践与排错指南。

1. 理解 Dify 人工介入的核心价值与工作机制

在深入配置之前,必须厘清人工介入在 Dify 工作流中的定位。它不是一个独立的功能,而是工作流节点(Node)的一种特殊类型。理解其工作机制,有助于我们在设计工作流时做出更合理的架构决策。

1.1 人工介入解决了什么问题?

纯粹的 AI 自动化流程面临几个固有挑战:

  1. 不确定性处理:当 LLM 的输出置信度低、存在多种可能解或需要主观判断时,纯 AI 难以做出可靠决策。
  2. 合规与安全审核:在金融、医疗、法律等领域,或涉及用户隐私、公司机密的内容生成,必须经过人工审核才能发布。
  3. 复杂业务逻辑:某些决策需要查询外部数据库、调用内部 API 或基于非文本信息(如图片、表格),这些逻辑难以全部用自然语言描述给 LLM。
  4. 质量控制与迭代:通过人工对 AI 输出进行纠正或评分,可以生成高质量的数据,用于后续的模型微调(RLHF),形成正向反馈循环。

Dify 的人工介入节点,就像一个智能开关。当工作流执行到该节点时,它会暂停,并创建一个待处理任务。这个任务会被分配给指定的人工操作员(或操作员组),操作员在 Dify 提供的界面上查看上下文信息,做出判断、修改内容或提供输入,然后点击“通过”,工作流才会从该节点继续向下执行。

1.2 人工介入节点的关键属性

一个配置完善的人工介入节点包含以下几个关键部分:

  • 触发条件:决定工作流何时进入人工介入。可以是无条件(每次必走),也可以是基于前面节点输出的条件判断(例如,当情感分析为“负面”时,才转人工)。
  • 指派对象:任务分配给谁?可以是特定的用户、用户组,或由具有特定角色(如“管理员”、“审核员”)的用户领取。
  • 操作界面:人工操作员看到什么?你需要定义展示给操作员的表单,包括只读的上下文变量(如用户原始问题、AI 的初始回复)和可编辑的字段(如最终答复、审核意见、评分)。
  • 超时与重试策略:如果人工操作员长时间未处理,系统该如何应对?是自动超时跳过,还是转给其他人,或是执行备用分支?
  • 输出变量:人工处理的结果(如修改后的文本、选择的选项、填写的意见)如何转化为工作流变量,供后续节点使用。

理解这些属性,是后续进行有效配置的基础。

2. 环境准备与 Dify 工作流基础

在开始配置人工介入之前,你需要一个可用的 Dify 环境。我们将从环境准备开始,并快速回顾创建基础工作流的关键步骤。

2.1 Dify 部署与访问

Dify 支持多种部署方式。对于开发和测试,我们推荐使用 Docker Compose,这是最快捷、隔离性最好的方式。

  1. 获取部署文件:访问 Dify 官方 GitHub 仓库的 Release 页面,下载对应版本的docker-compose.yml文件。确保你选择的是 1.15 或更高版本。
  2. 启动服务:在存放docker-compose.yml的目录下执行以下命令。
    # 启动所有服务 docker-compose up -d # 查看日志,确认服务启动成功 docker-compose logs -f dify-api
  3. 访问控制台:服务启动后,在浏览器中访问http://localhost:3000(默认端口)。首次访问需要创建管理员账户。
  4. 配置模型供应商:进入控制台后,在“设置”->“模型供应商”中,添加你的 OpenAI、Azure OpenAI 或 Anthropic 等 API 密钥,确保基础 LLM 调用可用。

注意:生产环境部署需要考虑数据库持久化、网络配置、HTTPS、监控和备份等,Docker Compose 示例仅适用于评估和开发。

2.2 创建你的第一个基础工作流

人工介入节点必须嵌入在一个工作流中。我们先创建一个最简单的文本生成工作流作为“靶子”。

  1. 进入工作流设计器:在 Dify 控制台左侧导航栏,点击“工作流”,然后点击“创建新工作流”。
  2. 添加开始节点和 LLM 节点
    • 从左侧节点库拖拽“开始”节点到画布。
    • 拖拽一个“LLM”节点(如“对话”或“文本生成”)到画布。
    • 连接“开始”节点的输出到“LLM”节点的输入。
  3. 配置 LLM 节点
    • 点击 LLM 节点,在右侧面板选择模型(如 gpt-4o-mini)。
    • 在“上下文”区域,配置系统提示词,例如:“你是一个友好的客服助手。”
    • 在“对话内容”区域,将变量{{#context.query#}}填入用户问题位置。这个变量来自开始节点。
  4. 配置开始节点:点击开始节点,在右侧“变量”部分,添加一个名为query的字符串类型变量。这代表了用户输入。
  5. 测试运行:点击右上角的“运行”按钮,在弹出窗的query字段输入“你好”,点击运行。你应该能在 LLM 节点后看到生成的回复。

至此,一个基础的自动化文本生成流水线就完成了。接下来,我们将在这个流水线中插入人工审核环节。

3. 构建带有人工介入的客服审核工作流

我们将构建一个经典的场景:AI 客服自动回复,但当识别到用户问题涉及“投诉”或“退款”时,自动转交人工客服进行审核和最终回复。

3.1 工作流结构设计

整个工作流将包含以下节点和逻辑:

  1. 开始:接收用户问题 (query)。
  2. 分类判断:使用一个 LLM 节点对用户问题进行意图分类,判断是否需要人工介入。
  3. 条件分支:根据分类结果,决定流程走向。
  4. 人工介入:如果需要人工,则暂停流程,等待客服处理。
  5. AI 回复:如果不需要人工,或人工审核后,由 AI 或人工生成最终回复。
  6. 结束:输出最终结果。

3.2 逐步配置与实现

步骤一:添加并配置分类节点

  1. 从节点库拖拽一个新的“LLM”节点到画布,放在开始节点和第一个 LLM 节点之间。将其重命名为“意图分类”。
  2. 连接“开始”节点到“意图分类”节点。
  3. 配置该节点:
    • 模型:选择一个快速且便宜的分类模型,如 gpt-3.5-turbo。
    • 系统提示词
      你是一个意图分类器。请分析用户的输入,判断其是否涉及“投诉”、“退款”、“纠纷”、“法律咨询”或“高管联系”等敏感或复杂话题。 你只需要输出一个单词:`NEED_HUMAN` 或 `AUTO_REPLY`。 如果涉及上述敏感话题,输出 `NEED_HUMAN`,否则输出 `AUTO_REPLY`。 不要输出任何其他解释。
    • 用户问题:填入{{query}}
  4. 为了后续使用分类结果,我们需要将 LLM 的输出赋值给一个变量。在该节点的“高级”设置中,找到“回答变量”,将其设置为classification_result。这样,LLM 的输出(NEED_HUMANAUTO_REPLY)就会被保存到工作流变量classification_result中。

步骤二:添加条件分支节点

  1. 从节点库拖拽“条件判断”节点到画布。
  2. 连接“意图分类”节点到“条件判断”节点。
  3. 配置条件分支:
    • 点击“条件判断”节点,在右侧面板点击“添加条件”。
    • 在第一个条件(IF)的规则中,设置:
      • 变量:选择classification_result
      • 判断:等于
      • 值:输入NEED_HUMAN
    • 这个条件的出口,我们将其重命名为“转人工”。
    • 系统会自动生成一个“其他”出口,我们将其重命名为“自动回复”。

步骤三:配置人工介入节点

这是最核心的一步。

  1. 从节点库拖拽“人工介入”节点到画布。将其连接到“条件判断”节点的“转人工”出口。
  2. 配置人工介入节点:
    • 节点名称:命名为“人工审核”。
    • 指派给
      • 方式:选择“指定成员”。(你也可以选择“角色”,例如“审核员”,这需要先在团队管理中设置角色)。
      • 成员:从下拉列表中选择一个或多个已有的 Dify 用户作为审核员。为了测试,你可以选择自己的账户。
    • 表单配置:这是定义审核员操作界面的地方。
      • 点击“添加字段”。
      • 字段1(只读,显示用户问题)
        • 标题:用户原始问题
        • 变量名:original_query(自动生成)
        • 类型:选择“文本”
        • 默认值:填入{{query}}
        • 编辑权限:取消勾选“可编辑”,使其成为只读字段。
      • 字段2(只读,显示AI初始回复)
        • 我们需要先让 AI 生成一个初始回复。因此,从“条件判断”的“转人工”出口,先连接到一个新的“LLM”节点(生成初始回复),再将这个 LLM 节点连接到“人工介入”节点。配置这个 LLM 节点生成基于{{query}}的客服回复,并将其输出赋值给变量ai_draft_reply
        • 然后,在人工介入节点的表单中:
        • 标题:AI 建议回复
        • 变量名:ai_draft
        • 类型:选择“文本”
        • 默认值:填入{{ai_draft_reply}}
        • 编辑权限:取消勾选“可编辑”。
      • 字段3(可编辑,最终回复)
        • 标题:最终回复内容
        • 变量名:final_reply
        • 类型:选择“文本”
        • 默认值:填入{{ai_draft_reply}}(这样审核员可以在 AI 建议的基础上修改)。
        • 编辑权限:保持勾选“可编辑”。
      • 字段4(可编辑,审核意见)
        • 标题:审核意见
        • 变量名:review_comment
        • 类型:选择“文本”
        • 默认值:留空。
        • 编辑权限:保持勾选“可编辑”。
    • 高级设置
      • 超时:设置一个超时时间(如30分钟)和超时后操作(如“自动通过并继续”)。这可以防止工作流因无人处理而永久挂起。

步骤四:整合流程与输出

  1. 自动回复分支:从“条件判断”节点的“自动回复”出口,连接到你最初创建的那个 LLM 节点(或新建一个),用于处理无需人工的常规问题。将此节点的输出赋值给变量auto_final_reply
  2. 人工分支输出:从“人工介入”节点的输出端连接出去。人工处理完成后,final_reply变量就包含了审核员确定的最终内容。
  3. 汇聚与结束:你需要使用一个“答案”节点或“结束”节点来输出最终结果。这里需要一个逻辑来处理两个分支的变量。
    • 方法A:使用“变量赋值”节点。在“自动回复”分支后,设置一个变量赋值节点,将auto_final_reply赋值给一个通用变量output。在“人工介入”分支后,也设置一个变量赋值节点,将final_reply赋值给同一个变量output。然后将两个变量赋值节点连接到同一个“结束”节点。
    • 方法B(更清晰):使用“条件判断”后的“其他”分支,并配合变量。但上述方法A在简单场景下更直观。
  4. 配置“结束”节点,在其变量中输出{{output}}{{final_reply}}等最终结果变量。

完成后的简化工作流图应类似:开始 -> 意图分类 -> 条件判断 -> (是) -> AI生成草稿 -> 人工介入 -> 变量赋值 -> 结束;条件判断 -> (否) -> AI直接回复 -> 变量赋值 -> 结束。

4. 运行、测试与验证人工介入流程

配置完成后,必须进行端到端的测试,验证整个流程是否符合预期。

4.1 发布工作流

  1. 在工作流编辑界面,点击右上角的“发布”按钮。
  2. 为这个版本添加一个备注,例如“初版:添加投诉类问题人工审核”。
  3. 发布后,工作流会生成一个独立的 API 端点。你可以通过“应用”功能将其封装为一个可访问的 Web 应用或 API。

4.2 模拟测试人工介入

  1. 触发人工介入:通过运行测试或调用 API,发送一个包含“投诉”关键词的查询,例如:“我要投诉你们的产品质量有问题!”
  2. 查看待处理任务
    • 以审核员身份(或你指派给自己的账户)登录 Dify 控制台。
    • 在左侧导航栏,点击“待办”。你应该能看到一条待处理的“人工审核”任务。
  3. 处理人工任务
    • 点击该任务,进入处理界面。你会看到之前配置的表单:“用户原始问题”和“AI 建议回复”是只读的,“最终回复内容”和“审核意见”是可编辑的。
    • 审核员可以修改“最终回复内容”,并填写“审核意见”,例如:“用户情绪激动,建议提供补偿方案并致电跟进。”
    • 点击“通过并继续”。
  4. 验证流程继续
    • 任务完成后,返回工作流运行历史或通过 API 轮询结果。
    • 你应该能看到工作流已执行完毕,并且最终输出的是审核员修改后的“最终回复内容”,而不是最初的 AI 草稿。
  5. 测试自动分支:发送一个普通查询,如“你们的营业时间是什么?”,验证流程是否绕过人工节点,直接由 AI 回复。

4.3 关键验证点

  • 条件触发:是否只有特定意图的问题触发了人工介入?
  • 表单展示:审核员界面显示的信息是否准确、完整?
  • 变量传递:审核员修改的内容,是否正确传递到了工作流下游,并作为最终输出?
  • 超时机制:可以测试等待超过设定的超时时间,看工作流是否按配置(自动通过/拒绝)继续执行。

5. 常见问题排查与调试指南

在实际操作中,你可能会遇到一些问题。以下是常见问题的排查路径。

问题现象可能原因检查与解决步骤
人工介入节点未触发,流程直接跳过1. 条件判断逻辑错误。
2. 分类节点输出变量名不匹配。
3. 人工介入节点未正确连接到条件分支的“是”出口。
1. 检查“条件判断”节点的规则,确认classification_result等于NEED_HUMAN
2. 运行工作流时,查看“意图分类”节点的详细输出,确认classification_result变量的值是否正确。
3. 检查画布上的连线,确保从条件分支到人工介入节点的连线无误。
审核员在“待办”中看不到任务1. 指派配置错误。
2. 当前登录用户不是被指派的成员或角色。
3. 工作流未成功发布或运行。
1. 检查人工介入节点“指派给”的设置,确认成员或角色选择正确。
2. 使用被指派的账户登录 Dify 控制台。
3. 确认你测试运行的是已发布的最新版本工作流。
审核员处理任务后,工作流没有继续执行1. 人工介入节点下游的节点连接断开或配置错误。
2. 处理任务时出现了系统错误。
3. 用于接收人工输出的变量在后继节点中未被正确引用。
1. 检查人工介入节点之后的连线,确保连接到下一个节点(如变量赋值或结束节点)。
2. 查看 Dify 服务端日志 (docker-compose logs dify-api),寻找错误信息。
3. 确认后继节点中引用的变量名(如{{final_reply}})与人工介入节点表单中定义的变量名完全一致。
表单中显示的变量值为空1. 上游节点未成功将值赋给变量。
2. 表单字段的“默认值”中变量引用语法错误或变量不存在。
1. 检查为人工介入节点提供输入的上游节点(如生成草稿的 LLM 节点),确认其“回答变量”已设置,且运行时有值。
2. 检查表单字段的默认值,如{{ai_draft_reply}},确保变量名拼写正确,且该变量在到达人工节点时已存在。
超时设置未生效1. 超时时间设置过长,还未触发。
2. 系统定时任务未正常执行。
1. 将超时时间设置为一个很短的值(如1分钟)进行测试。
2. 对于 Docker 部署,检查所有容器(特别是dify-apidify-worker)是否都正常运行。超时处理依赖后台工作进程。

调试建议:充分利用 Dify 工作流的“运行历史”功能。每次运行都会记录每个节点的输入、输出和状态。当流程不符合预期时,逐节点检查运行历史中的变量值和状态,是定位问题最有效的方法。

6. 生产环境最佳实践与扩展思路

将带有人工介入的工作流用于生产环境,需要考虑更多关于可靠性、效率和管理的因素。

6.1 安全与权限管理

  • 最小权限原则:不要将人工介入任务指派给无关人员。利用 Dify 的“角色”功能,创建“内容审核员”、“客服主管”等角色,并基于角色进行指派。
  • 操作审计:所有人工介入任务的处理操作(谁、何时、修改了什么、意见是什么)都应被记录。Dify 通常会记录这些日志,确保你有权限访问和归档这些日志以满足合规要求。
  • 数据脱敏:如果处理的信息包含敏感数据(如手机号、身份证号),考虑在展示给审核员之前,在流程中先添加一个“数据脱敏”节点进行部分隐藏。

6.2 性能与可用性

  • 设置合理的超时与升级策略:不要只设置一个超时。可以配置:首次指派给 A,5 分钟未处理,自动转派给 B;再 10 分钟未处理,则根据规则自动通过或拒绝,并发送告警通知。
  • 异步与队列:对于高并发场景,人工介入任务会形成队列。确保你的审核团队有足够的处理能力,或考虑将任务集成到外部工单系统(如 Jira, 飞书审批)。
  • 通知集成:审核员不可能一直刷新“待办”列表。将 Dify 与企业的即时通讯工具(如 Slack, 钉钉,企业微信)集成,当有新任务时,自动发送通知给审核员。

6.3 扩展功能设计

  • 多级审核:对于极高风险场景,可以串联多个人工介入节点,实现“初审->复审”的多级审核流程。
  • 动态指派:基于工单内容(如语言、产品线),使用代码节点调用内部 API,动态计算并指派给最合适的专家团队。
  • 人工反馈闭环:将人工修改的最终回复final_reply与 AI 初始草稿ai_draft_reply进行对比、差异分析,并将这些数据作为高质量样本,用于后续的模型微调,持续提升 AI 的首次回复准确率。
  • 与外部系统集成:人工介入节点可以作为一个“闸口”,审核通过后,触发一个“HTTP 请求”节点,将数据推送到外部的 CRM、工单系统或数据库,实现业务流程的完全贯通。

人工介入功能将 Dify 从一个纯粹的 AI 自动化工具,升级为一个强大的人机协同平台。它的价值不在于替代人工,而在于将人力精准、高效地部署在 AI 最不擅长或风险最高的环节,从而在提升效率的同时,牢牢把控质量与安全的底线。通过本文的配置实践,你已经掌握了构建这种人机协同工作流的核心技能。接下来,你可以尝试将其应用到内容安全过滤、金融报告生成、智能工单分类等更复杂的业务场景中,探索 AI 与人类智能结合的最佳模式。