【实战】Dify从0到100进阶--文档解读(2)Agent和工作流
特性ChatflowWorkflow定位面向多轮对话的流程化编排面向一次性/批量自动化任务的流程编排交互方式人–机多轮对话无需持续交互,仅流程节点执行终结形式最终返回一条或多条对话回复流程结束时不返回对话,而是完成后端任务或产出Chatflow通过“节点+分支”方式,把对话拆解成可视化的步骤,适合构建有条件判断、记忆管理的复杂对话体验。Workflow类似 Chatflow 的低代码编排,但不绑定

1.Agent使用
什么是 Agent ?
-
定义:Agent Assistant 利用大语言模型(LLM)的推理能力,自主分解任务、调用工具、并在多步流程中持续优化,直至完成既定目标。
-
能力侧重:
-
自主决策:不仅回答问题,更能根据“指令”拆解子任务并组织执行。
-
工具交互:在对话中动态选用内置或自定义 API,触达外部系统与数据源。
-
闭环执行:可多次调用模型与工具,形成“思考—行动—反馈”闭环
-
Agent 的核心构成
-
Instructions(指令)
-
相当于 Agent 的“作战手册”:在此文本中,你需明确定义
-
任务目标(Goal)
-
执行流程(Workflow Outline)
-
可用资源(Knowledge Base、工具列表)
-
行动限制(Timeout、Iteration Limit)
-
-
示例:
你是一名财报分析 Agent。目标:提炼季度营收动因,撰写 3 段核心结论。 流程:1) 调用“财报检索”工具获取原始数据… 限制:最多调用模型 5 次。
-
-
Context(上下文)
-
将知识库或任意文档通过 Embedding 接入,供 Agent 做检索时调用。
-
在“Context”区添加知识库工具,Agent 可随时检索以补充背景知识(docs.dify.ai)。
-
-
Tools(工具)
-
类型
-
内置工具:如网络搜索、表格计算、图片生成等;
-
自定义 API:支持 OpenAPI/Swagger、OpenAI Plugin 标准,轻松接入企业内网或自研服务。
-
-
工作流中调用
-
在对话中直接以工具名触发;
-
或通过“Function Calling”/“ReAct”策略,由模型自动决定何时调用(docs.dify.ai)。
-
-
-
Inference Modes(推理模式)
-
Function Calling
-
依赖 GPT‑3.5/GPT‑4 系列内置的函数调用接口;
-
具备更稳定的参数传递与结果解析能力。
-
-
ReAct
- 针对不支持函数调用的模型(如部分开源 LLM),用「思考—行动—观察」(ReAct) 框架模拟调用流程(docs.dify.ai)。
-
-
Iteration Limit(迭代限制)
-
控制 Agent 在一次任务中能调用模型/工具的最大轮数,避免循环调用或无限思考。
-
在 Agent 设置面板可自行调节。
-
从零到一:创建与配置流程
-
选择模板或自定义
-
在 “Explore” 中直接导入官方 Agent 模板;
-
或在 Dify Studio 中点击 “Create Agent” 从空白开始。
-
-
填写 Instructions
- 在 “Instructions” 栏精准描述目标与流程。
-
接入 Context
-
“Context” → 添加已有知识库或上传文档;
-
若模型原生支持文件处理(如 Claude 3.5 Sonnet),可开启 “Documentation” 特性(docs.dify.ai)。
-
-
配置 Tools
-
“Tools” → 从内置列表勾选所需工具;
-
或 “+ Add” → 输入自定义 API 的 OpenAPI/Swagger 链接;
-
填写凭据与调用参数。
-
-
调整 Agent Settings
-
选择推理模式(Function Calling / ReAct);
-
设置迭代上限;
-
配置首屏开场(Conversation Opener),为用户展示 Agent 能力示例。
-
-
调试与预览
-
进入 “Debug” 模式,输入测试问题;
-
观察 Agent 在每一步的“思考”(模型原始日志)与“行动”(工具调用)输出;
-
根据效果优化 Instructions、工具列表、Iteration Limit。
-
-
发布上线
-
调试通过后,点击 “Publish” 将 Agent 转为可对外调用的应用;
-
支持生成专属访问 URL、集成到业务系统。
-
定制 Agent 策略与插件
-
Agent Strategy Plugin 开发
-
在
manifest.yaml中添加plugins.agent_strategies字段,定义新策略(如 CoT、ToT、GoT 等)(docs.dify.ai)。 -
编写策略实现文件(示例:
function_calling.yaml),处理模型输入、工具路由与日志管理。
-
-
Agent Node(Chatflow/Workflow)
- 拖拽 “Agent” 节点到流程图:可在更大编排中调用 Agent,实现更复杂的自动化流水线(docs.dify.ai)。
常见应用场景示例
| 场景 | 示例 |
|---|---|
| 财报自动分析 | Agent 检索并合并多份季度报告,提炼关键指标趋势并生成 PPT。 |
| 行程规划助手 | Agent 调用地图 API、航班查询工具,自动设计最优旅游路线并输出行程表。 |
| 代码审查与修复 | Agent 基于代码仓库检索问题单,调用静态分析工具,自动生成修复建议并提交 PR。 |
| 营销文案创意生成 | Agent 多次迭代 A/B 文案,调用品牌数据库、情感分析工具,挑选最优文案输出。 |
2.应用工具箱
工具箱的总体架构
-
内置工具(Built‑in Tools)
由 Dify 官方预置,并持续维护升级,覆盖常见通用场景:-
HTTP 请求:向任意 RESTful API 发起 GET/POST 等请求,支持 Header、Query、Body 自定义。
-
知识库检索:基于向量搜索检索已接入的文档、FAQ、表格数据等。
-
数据库操作:对接 MySQL、PostgreSQL 等关系型数据库,执行 SQL 查询与写入。
-
电子表格:读取/写入 CSV、Excel,并在对话中展示表格或对其做聚合运算。
-
定时任务:在 Workflow 中配置 Cron 表达式,实现准时触发。
-
-
官方插件(Official Plugins)
Dify 官方或生态合作方提供的标准化功能包,通过“一键安装”即可在工具箱内使用:-
Web Search(Bing/Google):自动抓取公开网页内容,并可进一步分析摘要。
-
Email/SMS:整合常见邮件和短信服务(如 SendGrid、Twilio),实现通知、验证码发送。
-
Calendar:对接 Google Calendar、Outlook Calendar,实现事件创建、查询与提醒。
-
文件存储:支持 S3、阿里云 OSS 等对象存储操作,包括上传、下载、列举文件列表。
-
OCR 文字识别:调用第三方 OCR 服务(如 Google Vision、阿里云 OCR)将图片转文字。
-
-
自定义工具(Custom Tools)
任何符合 OpenAPI/Swagger 规范的自研后端服务、企业内部系统,都能通过工具箱接入:-
在“工具”→“添加自定义工具”界面,引入你的 OpenAPI JSON/YAML。
-
填写鉴权信息(API Key、OAuth2、JWT 等),即可像内置工具一样调用。
-
支持对输入输出参数做可视化配置,调用时由模型自动填充并解析结果。
-
工具箱在不同应用中的使用场景
| 应用类型 | 常见工具示例 | 场景说明 |
|---|---|---|
| Chat Assistant | HTTP 请求、知识库检索、电子表格 | 用户问“本周销售排名前 5 的产品是什么?”,Agent 自动执行 SQL,返回表格并生成对话回复。 |
| Agent | Web Search、Calendar、文件存储 | 旅行规划 Agent:调用地图 API、日历、文件存储(生成并上传行程 PDF)。 |
| Chatflow | 条件分支工具、OCR 文字识别 | 表单引导流程:上传身份证照片,OCR 工具提取信息,流程根据年龄分支跳转。 |
| Workflow | 定时任务、Email、SMS、电子表格 | 每天凌晨 2 点汇总报表,写入 Excel 并 Email 通知负责人。 |
工具配置与管理
-
快速接入
-
进入「设置 > 工具箱」或在应用编辑器侧边栏的「工具」面板。
-
浏览“内置”与“官方插件”列表,一键启用;或点击“新建工具”导入自定义 API。
-
-
授权与安全
-
所有敏感凭据(API Key、Secret)统一使用 RSA PKCS1_OAEP 加密存储,租户隔离。
-
可在“凭据管理”中查看/更新/吊销各工具的访问权限。
-
-
调试与日志
-
开启“调试模式”后,工具调用过程的原始请求与响应都会记录在“调用日志”里。
-
支持按应用、按工具、按时间维度检索日志,方便快速排查问题。
-
-
版本与灰度
-
自定义工具支持版本管理,您可以在生产环境灰度新版本,确认无误后再全量切换。
-
官方插件也会推送新版本更新通知,升级后可享受性能与功能增强。
-
进阶玩法
-
复合工具链
- 在 Chatflow/Workflow 中,可串联多个工具节点,让模型先检索、再计算、再生成报告,一气呵成。
-
工具触发条件
- 配置“条件表达式”或“正则匹配”,让模型只有在满足特定触发词或意图时才调用工具。
-
工具能力扩展
- 对于自有模型厂商,也可将「Function Calling」能力映射到自定义工具,使 LLM 原生识别并调用。
-
指标监控
- 在「监控中心」查看各工具的调用频次、成功率、平均耗时,帮助优化成本与体验。
3.工作流
定义与定位
| 特性 | Chatflow | Workflow |
|---|---|---|
| 定位 | 面向多轮对话的流程化编排 | 面向一次性/批量自动化任务的流程编排 |
| 交互方式 | 人–机多轮对话 | 无需持续交互,仅流程节点执行 |
| 终结形式 | 最终返回一条或多条对话回复 | 流程结束时不返回对话,而是完成后端任务或产出 |
- Chatflow
通过“节点+分支”方式,把对话拆解成可视化的步骤,适合构建有条件判断、记忆管理的复杂对话体验。 - Workflow
类似 Chatflow 的低代码编排,但不绑定用户对话,主要用于初始化脚本、数据处理、定时任务、报告生成等后台流程。
核心概念对比
| 核心要素 | Chatflow | Workflow |
|---|---|---|
| 节点类型 | Prompt 节点、条件分支、变量赋值、记忆节点、工具调用节点等 | 模型推理节点、条件分支、循环节点、工具调用节点、定时触发节点等 |
| 上下文管理 | 支持跨节点对话上下文共享(记忆节点可存储变量) | 不保存用户对话上下文,节点间仅通过流程变量传递数据 |
| 用户输入 | 首屏问候/引导式问题→多轮输入 | 一次性参数输入(或通过外部触发),后续无需人为干预 |
| 触发方式 | 用户主动在 Chat 界面点击或输入驱动 | 可手动执行、API 调用或定时 Cron 触发 |
| 典型输出 | 针对用户的自然语言回复 | 文件(Excel、PDF)、数据库写入、消息推送(Email/SMS)等 |
配置流程详解
1. Chatflow 配置流程
-
创建 Chatflow
- 在 Dify Studio,点击 “Create → Chatflow”。
-
节点拖拽与连线
- 起始节点:设置首屏欢迎词或问题选择(可用按钮菜单引导用户)。
- Prompt 节点:填写针对用户输入或变量的 Prompt 模板。
- 分支节点:基于用户意图或变量值做条件判断,决定后续走向。
- 记忆节点:将关键数据存入“对话记忆”,让后续节点可复用。
- 工具节点:调用知识库检索、HTTP 请求、数据库查询等,插入外部数据。
-
变量管理
- 在“Variables”面板定义全局或局部变量,用于存储用户输入、工具结果等。
-
测试与调优
- 切换到 “Preview” 模式,模拟用户输入,验证流程逻辑与输出;
- 根据对话断点或错误分支,调整节点条件和 Prompt 内容。
-
发布与集成
- 发布后可生成 Chat URL,或通过 Embed SDK 将 Chatflow 嵌入官网/小程序中。
2. Workflow 配置流程
-
创建 Workflow
- 在 Dify Studio,点击 “Create → Workflow”。
-
节点搭建与参数化
- Trigger 节点:选择触发方式——手动触发/API 调用/Cron 定时。
- Model 节点:调用系统推理模型或文本生成模型,处理流程核心逻辑。
- 工具节点:与 Chatflow 一致,可执行 HTTP 请求、数据库操作、电子表格处理等。
- 循环 & 分支:配置 For-Each 循环节点或 If 条件节点,实现批量/分支处理。
-
数据流管理
- 每个节点可定义输入参数来源(上游节点输出或全局常量),并将执行结果输出到下游。
-
日志与监控
- 开启“Debug”后,可在“执行日志”里查看节点的输入、输出、执行耗时。
-
部署与调度
- 对定时触发 Workflow,可直接在面板设置 Cron 表达式;
- 亦可通过 API 一键调用,实现与外部系统联动。
典型场景举例
| 场景类别 | Chatflow 示例 | Workflow 示例 |
|---|---|---|
| 客服导购流程 | 引导用户选择产品分类→根据偏好推荐商品→确认下单或跳转人工 | 无 |
| 智能问诊导航 | 多轮采集症状→分支判断紧急程度→提供初步诊断建议并推荐就医科室 | 无 |
| 定时日报 | 无 | 每日 8:00 汇总营销数据→生成 Excel→发送 Email 给运营负责人 |
| 批量报告生成 | 无 | 接收上游系统推送的参数列表→循环处理每个参数→批量生成 PDF 并上传 OSS |
进阶要点与最佳实践
-
共用组件化设计
- 将“常用对话片段”或“工具调用”封装成子 Chatflow/Workflow,复用在多个项目中。
-
参数化与变量传递
- 充分利用全局变量与节点参数映射,降低流程改动时的重复维护成本。
-
监控与告警
- 对关键 Workflow 配置失败/超时告警,确保后台任务及时修复。
-
灰度与版本管理
- 对 Chatflow/Workflow 都支持多版本并行,对新流程做灰度测试后再全量切换。
-
安全与权限
- 合理划分团队成员权限,控制谁能编辑/发布 Chatflow 与 Workflow,保护生产环境稳定。
4.变量
系统变量(sys.*)
| 特性 | Workflow | Chatflow |
|---|---|---|
| 前缀 | sys. |
sys. |
| 可读范围 | 全局(任意节点都可读取) | 全局(任意节点都可读取) |
| 主要变量 | sys.filessys.user_idsys.app_idsys.workflow_idsys.workflow_run_id |
sys.querysys.filessys.dialogue_countsys.conversation_idsys.user_idsys.app_idsys.workflow_idsys.workflow_run_id |
| 作用侧重 | 记录文件上传、用户/应用/工作流标识等 | 记录用户输入、会话轮次、会话 ID 及与 Workflow 相同的标识参数 |
-
共性
- 前缀均为
sys.。 - 均可在全局任何节点中读取,用于标识用户、应用、运行等元信息。
- 前缀均为
-
差异
- Workflow 专注于“批量”流程(一次性执行),其变量多为运行时元数据;
- Chatflow 强调多轮对话交互,新增了
sys.query(首轮用户输入)、sys.dialogue_count(对话轮数)、sys.conversation_id(会话 ID)等,用于丰富对话逻辑。
环境变量
| 特性 | Workflow & Chatflow(共通) |
|---|---|
| 命名约束 | 不可重复、前端在“环境”配置中统一管理 |
| 数据类型 | String、Number、Secret |
| 读写权限 | 只读(节点内全局可读,不可在流程/对话中修改) |
| 作用 | 隐藏敏感信息(API Key、DB 密码等),防止泄露至代码层 |
说明:环境变量在两种应用类型中完全一致,都是用于在编排界面中统一管理、并在各节点中安全引用。
会话变量(仅 Chatflow)
| 特性 | Chatflow 独有 |
|---|---|
| 数据类型 | String、Number、Object、Array[string]、Array[number]、Array[object] |
| 读写权限 | 可读写(需要配合“变量赋值”节点写入) |
| 作用 | 在多轮对话中临时存储上下文信息、用户偏好、上传文件等,模拟“备忘录” |
说明:Workflow 类型流程为一次性线性执行,不支持回溯或多轮对话,因此不具备会话变量。Chatflow 则专门为多轮对话设计,引入可写的会话变量,以便在对话各轮之间维护上下文状态。
更多推荐


所有评论(0)