基于Dify工作流构建金融大模型问答机器人:从流程编排到生产部署

📅 2026/7/27 7:04:26 👁️ 阅读次数 📝 编程学习
基于Dify工作流构建金融大模型问答机器人:从流程编排到生产部署

在实际 AI 应用开发中,如何将大模型的能力稳定、可控地集成到业务流程里,是每个开发者都会遇到的挑战。直接调用 API 虽然简单,但难以处理复杂的逻辑编排、条件判断、多步骤数据处理和异常回退。Dify 作为一个开源的 LLM 应用开发平台,其工作流(Workflow)功能正是为了解决这一问题而生。它允许开发者通过可视化拖拽的方式,将大模型调用、代码执行、条件分支、API 请求等节点连接起来,构建出能够处理复杂场景的 AI 应用。

本文将以一个“金融大模型问答机器人”项目为背景,带你从零开始,深入理解 Dify 工作流的核心概念、设计思路和实现细节。无论你是希望快速验证 AI 应用想法的产品经理,还是需要将 AI 能力落地的工程师,都能通过本文掌握使用 Dify 工作流构建可靠 AI 应用的方法。我们将从环境部署开始,逐步完成一个具备知识库检索、意图判断、风控审核和格式化输出功能的完整工作流,并探讨其在生产环境中的关键考量。

1. 理解 Dify 工作流:从 API 调用到业务流程编排

在传统的大模型应用开发中,我们通常编写代码来顺序调用 API。例如,先进行意图识别,再查询知识库,最后生成回答。这种方式的代码耦合度高,流程变更需要修改代码,且缺乏可视化的运行状态追踪。

Dify 工作流将这一过程抽象为“节点”和“边”。每个节点代表一个原子操作(如调用模型、执行 Python 代码、发起 HTTP 请求),每条边代表数据流向或逻辑分支。这种设计带来了几个核心优势:

  • 可视化编排:复杂逻辑一目了然,非技术角色也能参与流程设计和 review。
  • 模块化与复用:每个节点独立配置,可以像积木一样被组合和复用。
  • 状态可观测:运行时的数据流、每个节点的输入输出、执行状态都清晰可见,极大简化了调试过程。
  • 内置常用能力:Dify 原生提供了知识库检索、文本处理、条件判断等高频节点,无需重复造轮子。

对于“金融大模型问答机器人”这类对准确性、合规性要求极高的场景,工作流的价值更加凸显。我们可以轻松地在回答生成前插入“合规检查”节点,在调用外部数据源后加入“数据清洗”节点,确保最终输出的结果既准确又安全。

1.1 核心节点类型与数据流

在开始构建前,需要理解工作流中几种关键的节点类型及其数据传递方式:

  1. 开始节点:工作流的唯一入口,定义了整个工作流的初始输入变量(如用户问题query)。
  2. LLM 节点:核心节点,用于调用配置好的大模型(如 GPT-4、Qwen 等)。你需要配置系统提示词(System Prompt)和用户提示词(User Prompt),提示词中可以引用上游节点的输出变量。
  3. 知识库节点:与 Dify 内置的知识库功能联动。输入一个查询文本,节点会返回从知识库中检索到的相关片段(Chunks)。这是实现 RAG(检索增强生成)的关键。
  4. 代码节点:支持运行 Python 代码。你可以在此进行复杂的数据处理、计算、调用本地函数或处理上游节点传来的结构化数据(如 JSON)。节点的输出是代码中最后一条表达式的值,或通过outputs字典显式定义。
  5. 条件判断节点:根据设定的条件(如变量是否包含特定关键词、数值比较等)决定流程的走向,实现分支逻辑。
  6. 回答节点:工作流的终点,用于定义最终返回给用户的内容。你可以在此整合、格式化前面所有节点的输出。

数据通过变量(Variable)在节点间传递。每个节点都会将其输出结果赋值给一个或多个变量,下游节点则通过{{variable_name}}的模板语法来引用这些变量。

1.2 项目案例:金融大模型问答机器人设计

假设我们正在为一家金融机构开发一个内部问答助手,它需要处理关于产品规则、合规条款、市场数据的咨询。直接让大模型回答存在幻觉风险,且无法保证信息时效性。因此,我们设计以下工作流:

  1. 意图识别:判断用户问题是关于“产品信息”、“合规咨询”还是“通用闲聊”。
  2. 知识检索:对于“产品信息”和“合规咨询”类问题,从对应的内部知识库中检索最新、最相关的文档片段。
  3. 风控初筛:对用户问题本身进行简单的内容安全审核,过滤明显违规的提问。
  4. 答案生成:结合检索到的知识片段,让大模型生成准确、严谨的回答,并严格要求其注明信息来源。
  5. 格式化输出:将回答按照固定的 Markdown 模板进行美化,并附上引用来源。

接下来,我们将从环境准备开始,一步步实现这个工作流。

2. 环境准备与 Dify 部署

在开始编排工作流之前,需要一个可用的 Dify 环境。Dify 支持多种部署方式,为了获得最佳的控制权和便于调试,我们选择在本地通过 Docker Compose 进行部署。

2.1 系统与依赖要求

确保你的开发环境满足以下最低要求:

组件要求说明
操作系统Linux, macOS, Windows (WSL2)推荐使用 Linux 或 macOS,Windows 用户请务必安装 WSL2。
Docker20.10+容器运行时环境。
Docker Compose2.0+用于编排多容器应用。
CPU4 核+用于流畅运行服务。
内存8 GB+至少 8GB,运行知识库检索等操作时建议 16GB。
磁盘空间20 GB+用于存放 Docker 镜像、数据库和知识库文件。

可以通过以下命令检查 Docker 和 Docker Compose 版本:

docker --version docker-compose --version

2.2 通过 Docker Compose 一键部署

这是最推荐的方式,它能一次性启动 Dify 所需的所有服务(Web 前端、后端 API、数据库等)。

  1. 下载部署文件:在终端中,创建一个项目目录并进入。

    mkdir dify-finance-robot && cd dify-finance-robot curl -O https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml curl -O https://raw.githubusercontent.com/langgenius/dify/main/docker/.env.example -o .env
  2. 配置环境变量:编辑.env文件,最关键的是设置访问密钥和模型供应商。

    # 使用文本编辑器打开 .env 文件,例如 vim .env

    找到并修改以下关键配置(以使用 OpenAI 兼容 API 为例):

    # 设置一个安全的密钥,用于加密 SECRET_KEY=your-very-secret-key-change-this # 设置控制台管理员账号密码 CONSOLE_ADMIN_EMAIL=admin@yourcompany.com CONSOLE_ADMIN_PASSWORD=your-strong-password # 模型供应商配置 (例如使用通义千问) OPENAI_API_TYPE=openai OPENAI_API_KEY=sk-your-qwen-api-key-here # 替换为你的实际 API Key OPENAI_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1 # 通义千问兼容端点 OPENAI_MODEL_NAME=qwen-max # 指定使用的模型

    注意:如果你使用其他模型(如 GPT-4、本地部署的模型),需要相应调整OPENAI_API_BASEOPENAI_MODEL_NAME。确保你的网络可以访问对应的 API 端点。

  3. 启动服务:执行 Docker Compose 命令启动所有容器。

    docker-compose up -d

    首次运行会下载所有必要的镜像,可能需要几分钟。使用docker-compose logs -f可以查看实时日志,确认服务启动无误。

  4. 访问控制台:服务启动后,在浏览器中打开http://localhost:3000。使用你在.env中设置的邮箱和密码登录。

2.3 常见部署问题排查

如果在部署或访问时遇到问题,可以按以下顺序排查:

问题现象可能原因检查与解决
访问localhost:3000失败1. 容器未成功启动。
2. 端口被占用。
1. 运行docker-compose ps查看容器状态,确保所有服务都是Up
2. 运行docker-compose logs查看错误日志。
3. 检查本地 3000 端口是否被其他程序占用。
登录后页面空白或报错1. 前端资源加载失败。
2. 后端 API 服务异常。
1. 打开浏览器开发者工具(F12),查看 Console 和 Network 标签页的错误信息。
2. 检查后端服务日志:docker-compose logs dify-api
模型调用失败,报 API Key 错误1..env中 API Key 配置错误。
2. 网络无法访问 API 端点。
1. 确认.env文件已修改并保存,且重启了服务 (docker-compose down && docker-compose up -d)。
2. 在容器内测试网络连通性:docker-compose exec dify-api curl -v <your-api-base>
知识库相关操作非常慢或失败1. 内存不足。
2. 向量数据库(默认 Weaviate)未正常启动。
1. 检查系统内存使用情况,考虑为 Docker 分配更多资源。
2. 查看向量数据库容器日志:docker-compose logs weaviate

环境就绪后,我们首先需要为机器人准备“大脑”(模型)和“记忆”(知识库)。

3. 基础配置:模型与知识库准备

一个 AI 应用的核心是模型和知识。在 Dify 控制台中,我们需要先完成这两项基础配置。

3.1 配置大模型供应商

虽然我们在.env中配置了默认模型,但 Dify 支持同时配置多个模型供应商,方便在不同场景下切换。

  1. 登录 Dify 控制台,进入“设置” -> “模型供应商”
  2. 点击“添加模型供应商”,选择你使用的服务商(如 OpenAI、通义千问、Azure OpenAI 等)。
  3. 填写配置信息:
    • 名称:自定义,如 “Qwen-Production”。
    • API Key:填入你的密钥。
    • API Base:对应服务的 API 端点地址。
    • 模型:点击“获取模型列表”自动拉取,或手动填写模型名称(如qwen-max,gpt-4-turbo-preview)。
  4. 保存后,可以点击“测试”按钮,验证配置是否成功。

最佳实践:为开发、测试、生产环境配置不同的模型供应商和密钥,便于成本管理和隔离。对于金融场景,可以考虑配置一个低延迟、高可用的主模型,和一个低成本、用于非关键任务的备用模型。

3.2 创建与填充知识库

知识库是 RAG 应用的基石。我们将创建两个知识库:“金融产品手册”和“合规政策库”。

  1. 创建知识库:进入“知识库”页面,点击“创建知识库”。

    • 名称金融产品手册
    • 描述:包含所有基金、理财、保险产品的详细规则、费率、风险说明。
    • 索引方法:默认“高性能”即可。它决定了文本如何被切分和向量化。
    • 权限:根据团队情况设置。
  2. 上传文档:创建后,进入知识库详情页,点击“上传文件”。支持 PDF、Word、Excel、TXT、Markdown 等格式。

    • 分段处理:这是关键步骤。Dify 会根据你选择的“分段规则”将长文档拆分成更小的“片段”。对于金融文档,建议选择“智能分段”,它能更好地根据标题、段落等语义边界进行切割,避免一个片段包含不相关的信息。
    • 清洗规则:可以启用“去除多余换行符”、“去除网页标签”等,让文本更干净。
    • 上传完成后,Dify 会在后台自动进行文本提取、分段和向量化嵌入(Embedding)。你可以在“文件列表”中查看处理状态。
  3. 创建第二个知识库:重复上述步骤,创建名为合规政策库的知识库,并上传相关的监管政策、内部合规文件。

  4. 知识库调试:在构建工作流前,建议使用知识库详情页的“测试”功能。输入一个产品名称或合规问题,查看检索到的片段是否相关。这能帮助你调整分段规则或文档质量。

基础配置完成后,我们就可以进入核心环节——可视化工作流编排。

4. 构建金融问答机器人工作流

现在,我们将在 Dify 中创建一个新的“工作流”应用,并逐步添加节点,实现之前设计的流程。

4.1 创建工作流应用与理解界面

  1. 在 Dify 控制台,点击“创建应用”,选择“工作流”类型。
  2. 为应用命名,例如金融问答助手,并填写描述。
  3. 进入工作流画布。你会看到:
    • 画布区域:中间空白区域,用于拖拽和连接节点。
    • 节点列表:左侧面板,列出了所有可用的节点类型(开始、LLM、知识库、代码、判断等)。
    • 变量面板:右侧面板,显示当前工作流定义的所有输入、输出变量。
    • 运行/调试面板:底部区域,用于测试工作流并查看每一步的执行详情。

4.2 第一步:设置输入与意图识别

  1. 添加开始节点:从左侧拖拽“开始”节点到画布。它是工作流的触发器。

    • 在右侧配置面板,点击“添加变量”,定义一个名为query的字符串变量,描述为“用户问题”。这就是工作流的唯一输入。
  2. 添加 LLM 节点(意图识别):拖拽一个“LLM”节点到画布,并将其连接到“开始”节点。

    • 模型选择:选择一个响应速度快、成本较低的模型(如qwen-plus)。
    • 上下文:保持默认,不关联知识库。
    • 提示词:这是核心。我们需要设计一个提示词,让模型对用户问题进行分类。
    你是一个金融问答助手的意图分类器。请严格根据用户问题判断其意图类别,只输出类别编号。 类别定义: 1. 产品信息:问题涉及具体的金融产品,如基金、理财、保险的名称、收益率、购买方式、风险等级等。 2. 合规咨询:问题涉及法律法规、监管政策、公司合规条款、业务流程合规性等。 3. 通用闲聊:问候、感谢、无关的闲聊,或无法归入以上两类的问题。 用户问题:{{query}} 请只输出一个数字:1、2 或 3。不要输出任何其他文字。
    • 变量:将 LLM 节点的输出赋值给一个变量,例如intent

    这个节点的作用是进行零样本(Zero-Shot)分类。通过清晰的指令和少量的示例(在提示词中隐含),引导模型完成分类任务。

4.3 第二步:实现条件分支与知识检索

根据intent的值,我们需要走不同的分支。对于“产品信息”和“合规咨询”,需要检索对应的知识库。

  1. 添加条件判断节点:拖拽“条件判断”节点,连接到上一步的 LLM 节点。

  2. 配置分支条件

    • 点击“添加条件分支”。
    • 第一个分支:设置条件为{{intent}}等于1。将其命名为“产品分支”。
    • 第二个分支:设置条件为{{intent}}等于2。将其命名为“合规分支”。
    • (可选)第三个分支:可以添加一个“其他”分支,处理intent为 3 或其他值的情况,直接跳转到生成通用回复。
  3. 为“产品分支”添加知识库节点

    • 从左侧拖拽“知识库检索”节点,连接到“产品分支”的出口。
    • 在配置中,选择之前创建的金融产品手册知识库。
    • 查询文本填入{{query}}
    • 配置检索参数:
      • 检索模式:选择“向量化检索”。这是最常用的方式,基于语义相似度查找。
      • Top K:设置为3。表示返回最相关的 3 个知识片段。对于金融问答,精度比召回率更重要,不宜设置过大。
      • 最小相关度:可以设置为0.7,过滤掉相关性太低的片段。
    • 将检索结果赋值给变量,例如product_knowledge。这个变量通常是一个包含多个片段的列表。
  4. 为“合规分支”添加知识库节点

    • 类似地,添加另一个“知识库检索”节点到“合规分支”。
    • 选择合规政策库知识库。
    • 查询文本同样为{{query}}
    • 将结果赋值给变量,例如compliance_knowledge

4.4 第三步:风控审核与答案生成

在生成最终答案前,我们加入一个简单的风控审核环节。

  1. 添加代码节点(风控初筛):拖拽一个“代码”节点。由于两个分支最终都要生成答案,我们可以将这个节点放在分支合并之后。一种设计是,让“通用闲聊”分支和两个知识检索分支都汇聚到同一个“代码”节点。

    • 在代码节点中,我们可以编写 Python 逻辑来检查用户问题{{query}}是否包含敏感词。
    # 定义一个简单的敏感词列表,实际项目中应从外部配置加载 risk_keywords = ["攻击", "诈骗", "违禁", "非法", "内部数据", "客户隐私"] user_query = inputs["query"] # 检查是否包含敏感词 has_risk = any(keyword in user_query for keyword in risk_keywords) # 输出检查结果 outputs = { "risk_detected": has_risk, "risk_message": "问题包含潜在风险词汇,请人工审核。" if has_risk else "" }
    • 配置输入变量:需要将query映射到代码中的inputs[“query”]
    • 输出变量:定义risk_detected(布尔值) 和risk_message(字符串)。
  2. 添加条件判断节点(审核分流):根据风控结果分流。

    • 如果{{risk_detected}}true,则跳转到一个直接返回风控提示的“回答节点”。
    • 如果为false,则继续流向最终的“答案生成” LLM 节点。
  3. 添加 LLM 节点(答案生成):这是工作流最核心的生成步骤。

    • 模型选择:选择能力最强的模型(如qwen-maxgpt-4)。
    • 提示词设计:需要动态整合之前的知识检索结果。
    你是一位专业的金融顾问,请基于以下提供的参考资料,准确、严谨地回答用户的问题。如果参考资料不足以回答问题,请明确告知“根据现有资料无法回答该问题”,不要编造信息。 【参考资料】 {% if product_knowledge %} ### 产品信息: {{product_knowledge}} {% endif %} {% if compliance_knowledge %} ### 合规政策: {{compliance_knowledge}} {% endif %} {% if not product_knowledge and not compliance_knowledge %} (本次回答未检索到特定参考资料,请基于你的通用知识进行回答,并注明此为通用建议。) {% endif %} 【用户问题】 {{query}} 【回答要求】 1. 回答需结构清晰,重点突出。 2. 如果引用了参考资料,请在回答末尾以“参考来源:[片段索引]”的格式注明。 3. 使用中文回答。
    • 提示词中的逻辑:这里使用了 Dify 的模板语法{% if %}来判断变量是否存在。如果走了产品分支,product_knowledge就有值;如果走了合规分支,compliance_knowledge就有值;如果是闲聊分支,则两者都为空。
    • 将 LLM 的输出赋值给变量,例如raw_answer

4.5 第四步:格式化输出与结束

  1. 添加代码节点(格式化):为了让回答更美观,我们可以用代码节点对raw_answer进行后处理。

    raw_answer = inputs["raw_answer"] risk_message = inputs.get("risk_message", "") # 获取风控信息,可能为空 # 如果有风控提示,优先返回 if risk_message: final_output = f"**风控提示**:{risk_message}\n\n出于安全考虑,本次请求已被拦截。如有疑问,请联系合规部门。" else: # 简单的 Markdown 美化:确保标题、列表格式正确 # 这里可以添加更复杂的模板,比如添加公司 Logo、免责声明等 disclaimer = "\n\n---\n*免责声明:本回答基于AI模型生成,仅供参考,不构成任何投资或法律建议。具体业务请以官方文件为准。*" final_output = raw_answer + disclaimer outputs = {"final_output": final_output}
    • 输入变量:raw_answer,risk_message
    • 输出变量:final_output
  2. 添加回答节点:拖拽“回答”节点,连接到格式化节点。

    • 在配置中,选择变量{{final_output}}作为回答内容。

至此,一个完整的、具备意图识别、知识检索、风控审核和格式化输出的金融问答机器人工作流就构建完成了。画布上的节点应该形成一个清晰的、有分支有合并的流程图。

5. 调试、运行与性能优化

工作流搭建完成后,绝不能直接投入使用。必须经过充分的调试和测试。

5.1 使用调试面板进行测试

  1. 在工作流编辑页面,点击底部的“调试”按钮。
  2. 在输入框中,输入不同的测试用例:
    • “XX货币基金的年化收益率是多少?”(应触发产品分支)
    • “销售理财产品时需要向客户提示哪些风险?”(应触发合规分支)
    • “你好,今天天气怎么样?”(应触发闲聊分支)
    • “告诉我客户的内部交易数据”(应触发风控拦截)
  3. 点击“运行”,观察工作流的执行过程。调试面板会以时间线或流程图的形式,展示每个节点的执行状态(成功/失败)、耗时以及输入输出数据。这是排查问题最强大的工具。

5.2 关键调试技巧与常见问题

问题现象排查步骤
节点执行失败(红色)1. 点击该节点,查看错误详情。通常是 API 调用失败、代码语法错误、变量引用错误。
2. 检查上游节点的输出变量名是否与下游节点的输入引用名完全一致(注意大小写)。
3. 对于 LLM 节点,检查提示词中的变量引用{{var}}是否正确。
分支未按预期执行1. 检查条件判断节点的条件表达式。确保引用的变量类型正确(字符串比较用引号,数字不用)。
2. 查看意图识别 LLM 节点的原始输出,确认它是否严格输出了“1”、“2”、“3”这样的数字,而不是“类别1”等额外文本。
知识库检索结果为空或不相关1. 在知识库节点的配置中,检查查询文本变量是否正确绑定。
2. 单独测试知识库,确认文档已处理完成且片段质量合格。
3. 调整检索的“Top K”和“最小相关度”参数。
最终回答未包含知识库内容1. 检查答案生成 LLM 节点的提示词,确保{{product_knowledge}}等变量被正确放置在提示词中。
2. 在调试面板中,查看该 LLM 节点接收到的完整提示词(展开节点详情),确认变量已被替换为实际内容。
工作流运行速度慢1. 关注耗时最长的节点。通常是 LLM 调用和知识库检索。
2. 对于 LLM 节点,考虑换用响应更快的模型(如从qwen-max换为qwen-plus)。
3. 对于知识库检索,确保向量数据库运行正常,且知识库索引没有损坏。

5.3 发布应用与 API 集成

调试无误后,即可发布应用。

  1. 点击工作流编辑页右上角的“发布”按钮。
  2. 发布后,进入“应用概览”页面,你可以看到:
    • API 访问端点:一个形如https://your-dify-domain/v1/workflows/run的 URL。
    • API Key:用于鉴权。
  3. 你可以通过以下方式集成:
    • 直接使用 Web 聊天窗口:分享应用链接给内部用户。
    • 通过 API 集成:这是最常见的方式。可以使用任何 HTTP 客户端调用。
    curl -X POST \ https://your-dify-domain/v1/workflows/run \ -H 'Authorization: Bearer your-app-api-key' \ -H 'Content-Type: application/json' \ -d '{ "inputs": { "query": “XX货币基金的年化收益率是多少?” }, "response_mode": "blocking", // 同步等待结果 "user": "user_123" // 可选,用于区分用户 }'
    • 嵌入到其他系统:将聊天组件通过 iframe 或 SDK 嵌入到内部门户网站。

6. 生产环境最佳实践与扩展方向

将工作流从开发测试环境推向生产,需要考虑更多工程化因素。

6.1 稳定性与监控

  • 设置超时与重试:在 Dify 的企业版或通过 API 网关,可以为 LLM 节点调用设置超时时间(如 30 秒)和失败重试策略(如重试 2 次)。
  • 实现降级策略:在工作流中,可以通过“条件判断”节点检查主模型是否调用失败。若失败,则路由到一个使用轻量级备用模型的节点,保证服务可用性。
  • 完善日志与监控:确保 Dify 的服务日志被收集到统一的日志平台(如 ELK)。监控关键指标:工作流总耗时、各节点耗时、LLM 调用成功率、知识库检索延迟。为异常高的耗时或失败率设置告警。
  • 输入输出校验:在“开始节点”后或“代码节点”中,加入对用户输入query的校验(如长度限制、敏感词过滤),避免无效或恶意请求穿透到后续环节。

6.2 知识库优化

  • 分段策略调优:对于金融合同、法规等结构复杂的文档,默认的“智能分段”可能不够。可以尝试“自定义分段”,按标题级别(如##)或固定字符数进行切割,并在知识库测试中对比检索效果。
  • 元数据过滤:在上传文档时,可以为文件添加元数据(如“部门=零售部”、“生效日期=2024-01-01”)。在知识库检索节点中,可以配置基于元数据的过滤器,实现更精准的检索。
  • 定期更新与重建:建立知识库文档的更新流程。当文档更新后,需要重新上传并触发向量化重建。可以考虑使用 Dify 的 API 实现自动化更新。

6.3 工作流设计模式扩展

  • 并行执行:对于互不依赖的任务,如同时检索产品库和新闻库,可以使用“并行分支”模式(通过同时连接多个下游节点实现),减少整体延迟。
  • 循环与迭代:目前 Dify 原生节点不支持循环,但对于需要多轮检索或验证的场景,可以通过将复杂逻辑封装在一个“代码节点”中,调用外部函数或 API 来实现。
  • 人工审核节点:对于高风险场景(如大额交易咨询),可以在工作流中插入“人工审核”节点。该节点将中间结果挂起,并通过 Webhook 通知审核人员,待审核通过后,工作流再继续执行。这需要结合 Dify 的企业版功能或自定义开发。

6.4 安全与权限

  • API Key 管理:切勿将 API Key 硬编码在环境变量或代码中。生产环境应使用密钥管理服务(如 Vault, AWS Secrets Manager)。
  • 访问控制:通过 Dify 的应用权限设置,控制哪些人或系统可以访问该工作流。对于 API 调用,确保使用有效的 API Key 并进行速率限制。
  • 数据脱敏:在“代码节点”中,可以对流入工作流的用户数据(如身份证号、手机号)进行脱敏处理,避免敏感信息在日志或下游系统中泄露。

通过以上步骤,你不仅构建了一个可用的金融问答机器人,更掌握了一套用 Dify 工作流设计和交付复杂 AI 应用的方法论。从清晰的问题拆解开始,到模块化的节点编排,再到细致的调试和生产化考量,这个过程本身就能应对大多数企业级的 AI 应用场景。接下来,你可以尝试用同样的思路,去构建客服工单分类、报告自动生成、智能审核等更多有价值的工作流。