Dify 零基础入门到精通:手把手教你构建强大的 AI 应用 (覆盖 V1.0-1.3 核心功能)
前言:为什么选择 Dify?开启你的 AI 应用构建之旅
大家好,我是老金。在这个 AI 技术日新月异的时代,许多人都渴望利用大型语言模型(LLM)的强大能力,但常常因为不懂编程而望而却步。幸运的是,Dify 这样的平台应运而生。它就像一个神奇的 AI 应用“建造工厂”,让你不需要写一行代码,只需通过直观的图形界面,就能轻松设计、构建、部署和管理各种基于 LLM 的 AI 应用。
Dify 的核心魅力在哪里?
-
可视化编排: 想象一下搭积木,Dify 让你通过拖拽不同的功能模块(我们称之为“节点”),就能清晰地设计出 AI 应用的工作流程。无论是简单的问答,还是复杂的多步骤任务,都能直观地展现出来。
-
开箱即用: Dify 内置了多种常见的应用模板,比如聊天机器人、文章生成器等,你可以直接选用,然后在模板基础上进行修改,大大加快了开发速度。
-
强大的知识库集成 (RAG): 这是 Dify 的王牌功能之一。你可以上传自己的文档(产品手册、公司规定、学习资料等),让 AI 应用能够基于这些“私有”知识来回答问题,而不是仅仅依赖模型本身可能过时或不相关的训练数据。这项技术叫做检索增强生成 (RAG)。
-
丰富的插件与工具: Dify 允许你给 AI 应用添加各种“超能力”。比如,让它能上网搜索最新信息、进行数学计算、调用外部服务的 API(如查询天气、发送邮件),甚至生成图片。
-
持续优化能力: 应用上线后,你可以通过 Dify 查看用户与 AI 的交互日志,对不满意的回答进行标注和修正。这些反馈数据有助于你不断改进应用的效果。
-
灵活的模型支持: Dify 支持接入多种业界主流的大型语言模型,例如 OpenAI 的 GPT 系列、Anthropic 的 Claude 系列、国内的文心一言、通义千问等等(具体支持列表请参照官方更新),你可以根据自己的需求和预算灵活选择和切换。
-
开源与私有化部署: Dify 是一个开源项目,这意味着你可以免费使用它,甚至可以将其部署到自己的服务器上(私有化部署),这对数据安全要求高的企业或需要深度定制的用户来说非常有价值。
这份教程是写给谁看的?
-
绝对的 AI 小白: 对 AI 充满好奇,但完全不懂编程。
-
各行各业的实践者: 产品经理、运营人员、市场营销专家、教育工作者、自媒体创作者、客服团队负责人等等,希望利用 AI 提升工作效率或创造新价值的朋友们。
我们将如何一步步探索 Dify?
本教程将遵循“由浅入深、手把手教学”的原则:
-
基础入门: 了解 Dify 是什么,掌握一些核心概念(比如 LLM、Prompt 是什么意思),并完成最初的环境准备。
-
界面导览: 带你熟悉 Dify 的操作界面,知道去哪里找各种功能。
-
核心功能详解: 深入理解 Prompt 设计、知识库(数据集)的构建与使用、插件工具的添加与配置。
-
实战演练(基础): 手把手教你创建第一个简单的对话机器人和文本生成应用。
-
实战演练(进阶): 学习如何利用知识库让 AI 回答特定领域问题,如何通过插件扩展 AI 的能力。
-
精通 Workflow: 掌握 Dify 强大的工作流编排功能,构建能够处理复杂逻辑和多步骤任务的应用。
-
管理与部署: 学会如何管理应用版本、查看日志、将应用分享给他人或嵌入到网站,以及如何监控应用的使用情况和成本。
-
技巧与资源: 分享一些 Prompt 优化技巧、知识库构建的最佳实践,并告诉你去哪里获取更多学习资源和寻求帮助。
每一部分都会有详细的操作步骤截图说明,并结合具体的使用场景进行讲解,确保你不仅知道“怎么做”,更明白“为什么这么做”以及“可以用在哪里”。
准备好了吗?让我们一起推开 Dify 的大门,开启激动人心的 AI 应用构建之旅吧!
模块一:初识 Dify —— 基础概念与准备工作
1.1 揭开 Dify 的面纱:它是什么?能做什么?
简单来说,Dify 是一个LLMOps (Large Language Model Operations) 平台。这个词听起来有点专业,别担心,你可以把它理解成一个专门用来简化“操作”大型语言模型(LLM)来构建和运行 AI 应用的工具箱和工作台。
想象一下,你想开一家 AI 驱动的智能奶茶店:
-
LLM (大型语言模型) 就像你雇佣的超级调茶师(比如 GPT-4、Claude),他知识渊博,能理解各种指令。
-
Dify 就是你用来管理和指导这位调茶师的智能控制系统。
通过 Dify 这个系统,你可以:
-
设计“菜单”和“配方” (Prompt Engineering): 你可以精确地告诉调茶师(LLM)要做什么。比如,“制作一杯珍珠奶茶,少糖,冰块正常”——这就是一个简单的 Prompt。Dify 提供了专门的界面让你设计和优化这些指令。
-
提供“独家秘方” (Knowledge Base / RAG): 如果你想让调茶师做出你们店独有的“老金特调”,你需要把秘方告诉他。在 Dify 里,你可以上传包含秘方的文档(比如 PDF、Word),这就是知识库。当顾客点“老金特调”时,Dify 会让调茶师先查阅这个秘方(这就是 RAG 技术),然后再制作,确保味道正宗。
-
配备“多功能工具” (Tools / Plugins): 你可能希望调茶师不光会调茶,还能查天气(“今天适合喝冰的还是热的?”)、算账(“3 杯大杯波霸奶茶多少钱?”),甚至根据顾客描述画一杯想象中的奶茶。Dify 允许你给调茶师配备这些工具(插件),扩展他的能力范围。
-
设计“自动化流水线” (Workflow): 对于复杂的需求,比如“做一杯咖啡拿铁,同时查询下附近有没有电影院,再推荐一部适合情侣看的电影”,你可以用 Dify 的工作流 (Workflow) 功能设计一个自动化流程:先做咖啡,同时调用地图 API 查电影院,再调用电影推荐 API,最后把所有结果整合起来告诉顾客。
-
管理“店铺运营” (Management & Monitoring): Dify 帮你记录每次与顾客(用户)的互动日志,看看哪些“奶茶”受欢迎,调茶师有没有出错,消耗了多少“原料”(Token 成本)。你可以根据这些信息不断优化你的“菜单”和“服务流程”。
所以,Dify 能做什么?
几乎所有你想让 AI 帮你完成的基于语言的任务,Dify 都能帮你更轻松地实现,例如:
-
智能客服 / FAQ 机器人: 基于你的产品文档或常见问题列表,7x24 小时自动回答用户咨询。
-
场景: 公司官网右下角的在线客服、微信公众号的自动回复、电商平台的产品咨询助手。
-
内容创作助手: 帮你写营销文案、社交媒体帖子、博客文章大纲、邮件回复、甚至是代码片段。
-
场景: 市场部快速生成活动推文、运营人员批量撰写产品描述、程序员生成代码注释。
-
企业内部知识库问答: 让员工可以通过对话快速查询公司规章制度、技术文档、项目资料等。
-
场景: 新员工入职培训助手、技术团队查询内部开发文档、销售人员查询产品报价规则。
-
教育辅导 / 培训助手: 根据教材或课程内容,回答学生提问,扮演特定历史人物进行互动教学。
-
场景: 在线教育平台的 AI 答疑老师、博物馆的虚拟导览员。
-
个人效率助理: 帮你总结文章、翻译文档、管理待办事项、快速获取信息。
-
场景: 研究人员快速阅读和总结论文摘要、跨语言工作者进行文档翻译、个人知识管理。
1.2 核心概念扫盲:小白必须知道的术语
在我们正式开始操作之前,先来熟悉几个 Dify 世界里的高频词汇,理解它们能让你事半功倍:
-
LLM (Large Language Model / 大型语言模型): 这就是 AI 应用的“大脑”,是真正进行思考和生成文本的核心引擎。比如 OpenAI 的 GPT-3.5, GPT-4,Anthropic 的 Claude 系列,Google 的 Gemini,以及国内的各种优秀模型(如通义千问、文心一言、DeepSeek 等)。你需要选择一个或多个 LLM 来驱动你的 Dify 应用。
-
Prompt (提示词 / 指令): 你对 LLM 下达的指令、问题或者要求。Prompt 的好坏直接决定了 AI 输出结果的质量。设计好的 Prompt 是一门艺术,也是一门技术,我们称之为 Prompt Engineering。
-
Context (上下文): 在对话型应用中,指之前的对话内容。AI 需要理解上下文才能进行连贯的多轮对话。比如你问完“今天天气怎么样?”,再说“那适合穿什么?”,AI 需要知道“那”指的是今天的天气情况。
-
Knowledge Base / Datasets (知识库 / 数据集): 这是你上传到 Dify 的私有数据,可以是各种格式的文档(PDF, DOCX, TXT, Markdown...)、网页内容、甚至是问答对 (Q&A)。它是 RAG 技术的基础。
-
RAG (Retrieval-Augmented Generation / 检索增强生成): 这是 Dify 的核心功能之一。它的工作流程是:当用户提问时,系统先 (Retrieval) 从你指定的知识库中搜索最相关的几段信息,然后把这些信息和 (Augmented) 用户的原始问题一起打包,交给 LLM 去生成 (Generation) 最终的答案。这样可以让 AI 的回答基于你提供的最新、最准确的知识,而不是胡乱猜测。
-
Tools / Plugins (工具 / 插件): 扩展 LLM 能力的模块。有了工具,LLM 就能做它本身做不到的事情,比如:
-
实时搜索: 查询今天的新闻、股价等。
-
计算: 执行数学运算。
-
调用 API: 连接外部服务,比如查询天气、订票、操作 CRM 系统等。
-
生成图片: 根据文本描述创作图像 (需要集成 DALL-E, Stable Diffusion 等模型)。
-
Agent (智能体): 在 AI 领域,Agent 通常指能够理解目标、自主规划步骤、并调用工具来完成复杂任务的 AI 系统。在 Dify 的语境下,尤其是在引入 Workflow 之后,Agent 的概念更侧重于具有自主规划和工具使用能力的特定应用类型或 Workflow 模式。你可以创建一个 Agent 应用,让它根据你的指令,自己决定是查知识库、上网搜索还是调用某个 API 来完成任务。
-
Workflow (工作流): 这是 Dify (尤其 V1.2 之后版本) 的核心编排方式。它提供了一个可视化的画布,你可以像画流程图一样,把 LLM 调用、知识库检索、工具使用、条件判断 (IF/ELSE)、变量处理等步骤(称为节点 Node)连接起来,构建出复杂的自动化任务流程。相比于简单的 Prompt 编排,Workflow 提供了更高的灵活性和控制力。
1.3 环境准备:云服务版 vs。 私有化部署
Dify 提供了两种主要的使用方式,你需要根据自己的情况选择:
-
Dify Cloud (官方云服务版):
-
优点:
-
开箱即用: 访问 Dify 官网 (https://dify.ai/ 或 https://cloud.dify.ai/),注册账号就能立刻开始使用,完全不需要操心服务器、安装、配置这些技术活。
-
免维护: 平台的更新、维护都由官方负责。
-
免费额度: 通常提供一定的免费使用额度,足够个人学习和体验。
-
缺点:
-
数据存储: 你的知识库数据、应用配置等存储在 Dify 的云服务器上(官方有安全和隐私保护措施,但对于极度敏感数据可能需要考量)。
-
定制性限制: 相较于私有部署,定制化选项可能有限。
-
依赖网络: 需要稳定的网络连接才能访问。
-
适合谁:
-
初学者 / 个人开发者: 快速上手,专注于应用构建本身。
-
非敏感数据场景: 对数据存储位置要求不高的用户。
-
快速原型验证: 想要快速验证一个 AI 应用想法。
-
如何开始: 访问官网注册账号即可。本教程后续的操作演示将主要基于 Dify Cloud 进行,其界面和核心操作逻辑与私有部署版本基本一致。
-
私有化部署 (Self-hosted):
-
优点:
-
数据主权: 所有数据(知识库、配置、日志等)都存储在你自己的服务器上,拥有完全的控制权,满足最严格的数据安全和合规要求。
-
高度定制: 开源意味着你可以根据需要修改代码,进行深度定制(需要技术能力)。
-
无平台限制: 不受云服务可能存在的调用次数、存储空间等限制(但受限于你自己的服务器性能和成本预算)。
-
内网部署: 可以部署在企业内网,保障内部数据不外泄。
-
缺点:
-
技术门槛: 需要具备一定的技术知识,主要是 Docker 和服务器运维的基本知识,才能完成部署和后续的维护、升级。
-
成本: 需要自行承担服务器(购买或租赁)、计算资源(如果模型也私有化部署)以及可能的 LLM API 调用费用。
-
维护责任: 平台的更新、故障排查都需要自己负责。
-
适合谁:
-
企业用户: 对数据安全、合规性有严格要求的组织。
-
有技术团队支持: 具备部署、运维能力的企业或个人。
-
需要深度定制: 有特定需求需要修改源代码的用户。
-
如何部署: Dify 官方在 GitHub (https://github.com/langgenius/dify) 上提供了详细的部署文档,最常见的方式是使用 Docker Compose,通常只需要几行命令就能启动。对于非技术背景的小白用户,这部分可以暂时跳过,先在云服务版上熟悉功能。
老金建议: 对于绝大多数初学者,强烈推荐从 Dify Cloud 开始,先把核心功能玩熟练,等你真正有私有化部署的需求和一定的技术基础后,再考虑迁移或尝试私有化部署。
1.4 首次登录与界面概览
无论你选择云服务还是私有部署,当你第一次登录 Dify 后,会看到一个工作台界面。我们先来快速熟悉一下它的主要组成部分:
-
(1) 顶部导航栏: 这是你的主菜单,通常包含:
-
Logo / 工作区切换: Dify 的 Logo,有时也可以在这里切换不同的工作空间(如果你有多个的话)。
-
工作室 (Studio): 核心区域,你将在这里创建、编辑和管理你的 AI 应用。
-
数据集 (Datasets): 核心区域,管理你的知识库,上传和处理你的私有数据。
-
工具 (Tools): 核心区域,查看、配置 Dify 提供的内置工具,或者创建你自己的自定义工具。
-
探索 (Explore): (云服务版常见) 这里可能会展示一些社区用户分享的应用模板或插件,可以从中寻找灵感或直接使用。
-
插件 (Plugins): (可能与“工具”合并或独立存在) 管理和安装扩展功能的插件,包括模型插件、工具插件等。
-
文档 / 帮助: 链接到官方的帮助文档。
-
账号 / 设置: 管理你的账号信息、API 密钥、模型供应商配置等。
-
(2) 主工作区 / 仪表板: 登录后通常会看到一个概览页面,显示:
-
我的应用 (My Apps): 列出你已经创建的所有 AI 应用。
-
快速入口: 比如“创建应用”、“创建数据集”等常用操作的快捷按钮。
-
最近活动 / 统计信息: (可能) 显示最近的应用调用情况、消息数量、Token 消耗等。
-
(3) 核心功能入口 (再次强调):
-
工作室 (Studio): 构建和编排应用的地方。
-
数据集 (Datasets): 上传和管理知识库的地方。
-
工具 (Tools) / 插件 (Plugins): 扩展 AI 能力的地方。
动手实践:
现在,请你登录 Dify,花几分钟时间,把顶部导航栏的每个菜单都点开看一看,熟悉一下各个板块的位置和大致功能。不用担心点坏什么,大胆探索!这是熟悉一个新工具最好的方式。
模块二:玩转工作室 —— 创建你的第一个 Dify 应用
在熟悉了 Dify 的基本界面和核心概念后,我们终于要开始动手实践了!“工作室 (Studio)”是 Dify 的心脏地带,所有 AI 应用都在这里诞生。
2.1 应用的两种核心类型:对话型 vs。 文本生成型
在 Dify 中创建应用时,首先需要选择应用的基础类型。最常见的两种是“对话型”和“文本生成型”。理解它们的区别对于选择正确的起点至关重要。
-
对话型 (Conversational App / Chatbot):
-
核心特征: 模拟人类之间的聊天互动。它能够记住之前的对话内容(上下文),并基于这些历史信息进行连贯的回应。就像你和朋友聊天,他能记得你们上一句说了什么。
-
交互模式: 通常是多轮问答形式,你一言我一语。
-
关键技术点: 上下文管理 (Context Management) 是其核心。Dify 需要知道保留多少轮对话历史作为当前的上下文信息。
-
应用场景:
-
智能客服 / FAQ 机器人: 回答用户关于产品、服务的各种问题。
-
聊天伙伴 / 角色扮演: 创建一个特定性格或身份的虚拟角色进行对话。
-
任务导向型对话: 通过对话一步步引导用户完成某个任务(如预订、注册)。
-
教育辅导: 扮演老师或同学,与学生进行互动问答。
-
可以把它想象成: 一个能持续聊天的“伙伴”。
-
文本生成型 (Text Generation App):
-
核心特征: 更像一个“文本加工厂”。你给它一些输入(指令和变量),它一次性地生成你需要的完整文本输出。通常不记录之前的交互历史,每次运行都是独立的。
-
交互模式: 一次性输入 -> 一次性输出。你填好“订单”,它生产出“成品”。
-
关键技术点: 清晰的指令 (Prompt) 和 灵活的输入变量 (Variables) 是其核心。你需要明确告诉它生成什么,并设计好需要用户填写的“原材料”信息。
-
应用场景:
-
文案生成: 广告语、社交媒体帖子、产品描述、博客标题。
-
邮件 / 报告撰写助手: 根据要点生成邮件初稿、周报摘要。
-
代码生成 / 解释: 根据需求描述生成代码片段,或解释一段代码的功能。
-
文本摘要 / 翻译: 输入长篇文章生成摘要,或进行语言翻译。
-
数据格式转换: 将非结构化文本整理成特定格式(如 JSON)。
-
可以把它想象成: 一个按需生产特定文本的“机器”。
如何选择?
很简单,问自己:我需要 AI 和用户进行连续的多轮互动,并且需要记住之前的对话吗?
-
是: 选择 对话型。
-
否: 只需要根据输入一次性生成结果,选择 文本生成型。
注意: 随着 Dify 的发展,尤其是 Workflow 功能的引入,应用类型的界限有时会变得模糊。例如,一个复杂的 Workflow 应用可能既包含对话交互,也包含多个文本生成步骤。但对于初学者来说,从这两个基础类型入手是理解 Dify 的最佳途径。
2.2 手把手创建第一个【对话型】应用:智能 FAQ 机器人
让我们来创建一个简单的 FAQ (常见问题解答) 机器人,它可以回答一些关于“Dify 是什么”的基础问题。
步骤 1:进入工作室,创建新应用
-
在 Dify 主界面,点击顶部导航栏的 工作室 (Studio)。
-
点击页面上醒目的 “创建应用” (Create App) 按钮。
步骤 2:选择应用类型并命名
-
在弹出的窗口或页面中,选择 “聊天机器人” (Chatbot) 或 “对话型应用” (Conversational App) 模板。(不同 Dify 版本叫法可能略有差异,选择表达聊天交互含义的那个)。
-
给你的应用起个名字: 比如 “Dify 小白助手”。
-
(可选) 添加应用图标和描述: 让应用更容易识别。描述可以写:“回答关于 Dify 平台基础知识的常见问题”。
-
点击 “创建” (Create)。
步骤 3:核心配置 - 提示词与模型 (Prompt & Model)
创建成功后,你会进入应用的配置页面,通常会有一个“编排 (Orchestrate)”、“提示词 (Prompt)”或“设计 (Design)”这样的核心区域。这里是定义 AI 行为的地方。
- 设计系统提示词 (System Prompt):
-
这是灵魂! System Prompt 就像给 AI 定下的“人设”和“工作守则”。它告诉 AI 它应该扮演什么角色、以什么风格说话、它的主要任务是什么、有哪些限制。
-
找到“系统提示词”或 “Instructions” 输入框。
-
输入指令:
你是一个友好且乐于助人的 AI 助手,名叫“迪仔”。你的任务是回答用户提出的关于 Dify 平台的基础问题,例如 Dify 是什么、它能做什么、有哪些主要功能等。请使用简洁明了的语言回答,就像在向一个完全不懂技术的小白解释一样。如果用户问的问题超出了 Dify 基础知识的范围,或者你不知道答案,请礼貌地回复:“抱歉,这个问题我暂时还不太清楚,你可以查阅 Dify 官方文档或者在社区提问哦。” 绝对不要编造答案。
- 老金提示: 写好 System Prompt 是成功的一半!多花点时间思考和打磨。要明确角色、任务、语气、知识范围和兜底策略(不知道怎么办)。
- 对话开场白 (Opening Statement / Conversation Opener):
-
这是用户打开聊天窗口时,AI 主动说的第一句话,用来引导对话。
-
找到“开场白”输入框。
-
输入内容: 比如:“你好!我是迪仔,你的 Dify 小白助手。对 Dify 有什么好奇的吗?随时问我吧!”
- 上下文管理 (Context):
-
对于对话型应用,必须启用上下文。找到相关设置(可能叫 “Context Enabled”, “Memory” 等)。
-
设置记忆长度: 通常会有一个选项让你设置记住最近多少轮 (Turns) 或多少 Token 的对话历史。对于 FAQ 机器人,记住最近 3-5 轮通常足够。轮数越多,AI 对话越连贯,但消耗的 Token(成本)也越多。
- 选择模型与参数 (Model & Parameters):
-
选择 LLM (大型语言模型):
-
找到模型选择下拉框。你需要先在 Dify 的“设置” -> “模型供应商”中配置好至少一个模型的 API Key (比如 OpenAI 的 Key)。
-
对于初学者和这个 FAQ 场景,选择一个性价比较高的模型,如 gpt-3.5-turbo,或者其他类似能力的免费或低成本模型。
-
调整核心参数:
-
Temperature (温度): 控制输出的“创造性”或“随机性”。值从 0 到 1 (或更高)。
-
0: 非常确定性,每次回答几乎一样,适合需要精确答案的场景。
-
1: 非常随机,富有创造性,适合写诗、编故事。
-
对于 FAQ 机器人,我们希望答案准确稳定,建议设置一个较低的 Temperature,比如 0.2 或 0.3。
-
Max Tokens (最大令牌数): 限制 AI 单次回答的最大长度(以 Token 计算,可以粗略理解为单词或汉字的数量)。设置一个合理的值(比如 500-1000)防止回答过长或失控。
步骤 4:预览与调试 (Preview & Debug)
配置得差不多了,该骡子是马,拉出来遛遛!
-
在应用配置页面的右侧,通常会有一个**“预览” (Preview)** 或 “调试” (Debug) 窗口。
-
这个窗口模拟了真实用户与你的 AI 应用交互的界面。
-
开始测试: 在底部的输入框里,像用户一样提问。
-
问问:“Dify 是什么?”
-
再问:“它主要有哪些功能?”
-
试试问一个它不知道的:“帮我订一张明天去北京的机票。”
- 观察 AI 的回答:
-
回答是否准确?
-
语气和风格是否符合你在 System Prompt 里设定的“迪仔”形象?
-
对于超出范围的问题,是否按照你的要求礼貌地拒绝了?
- 反复迭代: 如果对结果不满意,回到步骤 3,修改你的 System Prompt、开场白、模型参数,然后再次测试。这个“配置-测试-修改”的循环是优化 AI 应用的关键。
步骤 5:保存与发布
当你对调试结果基本满意后:
-
找到页面上的 “保存” (Save) 或 “发布” (Publish) 按钮,点击它。
-
通常 Dify 会提示你发布成功,并可能会带你到应用的“概览 (Overview)”页面。
恭喜!你的第一个 Dify 对话型应用已经诞生了!
2.3 手把手创建第一个【文本生成型】应用:小红书风格种草文案生成器
接下来,我们挑战一个文本生成任务:创建一个能根据产品信息,自动生成小红书风格种草文案的应用。
步骤 1:创建新应用,选择类型
-
回到 工作室 (Studio)。
-
点击 “创建应用” (Create App)。
-
这次选择 “文本生成器” (Text Generator) 或类似模板。
-
命名: “小红书种草文案神器”。
-
(可选) 图标和描述: 描述:“输入产品信息,生成小红书风格的种草文案。”
-
点击 “创建” (Create)。
步骤 2:核心配置 - 提示词与变量 (Prompt & Variables)
进入文本生成应用的配置页面。
- 设计核心指令 (Prompt):
-
文本生成应用的 Prompt 需要非常清晰地说明目标、风格、格式、长度等要求。
-
找到 Prompt 输入框。
-
输入指令 (初版):
请根据下方提供的产品信息,创作一篇大约 150 字的小红书风格种草文案。文案需要突出产品亮点和使用感受,语言活泼有趣,多使用 emoji ✨,并包含引导用户互动(如评论、点赞、收藏)或购买的语句。
- 定义输入变量 (Variables):
-
文本生成应用的核心在于动态输入。我们需要定义用户需要填写哪些信息,AI 才能据此生成文案。
-
找到“变量” (Variables) 或 “输入” (Inputs) 的设置区域。
-
点击“添加变量” (Add Variable)。 我们至少需要以下几个变量:
-
变量 1:
-
字段名称 (Field Name): product_name (必须是英文或下划线连接,这是内部标识符)
-
标签 (Label): “产品名称” (这是显示给用户看的名称)
-
类型 (Type): 字符串 (String) 或 单行文本 (Text Input)
-
是否必填 (Required): 是 (Yes)
-
变量 2:
-
字段名称: product_features
-
标签: “产品亮点 (多点换行)”
-
类型: 段落 (Paragraph) 或 多行文本 (Text Area)
-
是否必填: 是
-
变量 3:
-
字段名称: user_experience
-
标签: “我的使用感受”
-
类型: 段落 (Paragraph)
-
是否必填: 是
-
在 Prompt 中引用变量: 现在,我们需要修改刚才的 Prompt,告诉 AI 去哪里获取这些产品信息。使用 **双大括号 **{{变量字段名}} 的格式来引用变量。
-
修改后的 Prompt:
请根据下方提供的产品信息,创作一篇大约 150 字的小红书风格种草文案。文案需要突出产品亮点和使用感受,语言活泼有趣,多使用 emoji ✨,并包含引导用户互动(如评论、点赞、收藏)或购买的语句 👇。
【产品名称】
{{product_name}}
【产品亮点】
{{product_features}}
【我的使用感受】
{{user_experience}}
- 老金提示: 在 Prompt 中清晰地标明每个变量代表什么(比如用【】括起来),有助于 AI 更好地理解。
- 选择模型与参数:
-
对于文案生成,可以选择稍微“有创意”一点的模型。
-
Temperature 可以适当调高,比如 0.7 到 1.0 之间,让每次生成的文案风格更多样。
-
Max Tokens 也要设置得足够长,以容纳 150 字左右的文案(可能需要 300-400 Tokens)。
步骤 3:预览与调试
-
同样,在右侧的预览/调试窗口进行测试。
-
这次,你会看到不再是简单的聊天输入框,而是出现了你刚才定义的三个输入框:“产品名称”、“产品亮点”、“我的使用感受”。
-
填写示例内容:
-
产品名称: Dify AI 应用开发平台
-
产品亮点:
-
可视化拖拽,小白也能搭 AI 应用!
-
支持私有知识库,让 AI 更懂你的业务。
-
插件丰富,能搜索、能计算、能连万物。
-
开源免费,可私有部署,数据安全可控!
-
我的使用感受: 简直是神器!以前想做个智能客服头都大了,用 Dify 分分钟搞定!界面超直观,完全不用写代码。把公司产品手册传上去,AI 回答问题比我还准~ 强烈推荐给想用 AI 但又怕麻烦的朋友们!
-
点击“运行” (Run) 或 “生成” (Generate) 按钮。
-
查看生成的文案:
-
是否是小红书风格?
-
是否包含了你输入的亮点和感受?
-
长度是否合适?
-
Emoji 和引导语是否符合要求?
- 不满意?回去修改 Prompt!
-
比如,如果觉得 emoji 不够多,可以在 Prompt 里强调:“请大量使用生动形象的 emoji 🎉”。
-
如果觉得文案不够吸引人,可以加一句:“开头要足够吸引眼球,使用疑问句或夸张的描述。”
-
不断尝试,直到找到最佳的 Prompt。
步骤 4:保存与发布
对生成的文案效果满意后,点击 “保存” (Save) 或 “发布” (Publish)。
现在,你就拥有了一个可以帮你量产小红书文案的 AI 工具了!
2.4 应用发布与分享:让你的 AI 应用走向世界
创建好的应用,如果只留在自己的工作室里就太可惜了。Dify 提供了多种方式让你分享和部署你的 AI 应用。
- 应用概览页 (Overview):
- 发布应用后,通常会进入这个页面。这里汇总了应用的基本信息、访问入口、使用统计等。
- 获取公开访问链接 (Shareable Link):
-
在概览页找到 “分享” (Share) 或 “访问链接” (Access Link) 相关的按钮。
-
点击生成一个公开链接。
-
(可选配置): 你可能可以设置链接的有效期、是否需要访问密码、是否收集用户信息等。
-
分享: 把这个链接发给你的朋友、同事或目标用户,他们点击链接就能直接使用你的 AI 应用了(无论是对话型还是文本生成型)。
-
使用场景: 快速演示、小范围测试、非商业性分享。
- 嵌入到你的网站 (Embed):
-
这是非常常用的功能,特别是对于对话型应用。
-
找到 “嵌入” (Embed) 或 “集成” (Integrate) 选项。
-
Dify 会提供一段 HTML 代码,通常是 <iframe> 或 <script> 标签。
-
复制代码: 把这段代码复制下来。
-
粘贴到你的网页: 将代码粘贴到你网站 HTML 文件你希望显示聊天窗口的位置(通常是 <body> 标签的末尾)。
-
效果: 你的网站右下角(或其他位置)就会出现一个聊天图标,点击就能打开你创建的 Dify 聊天机器人。
-
(可选定制): Dify 可能允许你对嵌入的聊天窗口做一些基础的外观定制,比如颜色主题、图标样式、窗口标题等。
-
使用场景: 公司官网添加 AI 客服、个人博客集成 AI 问答助手、产品文档页面嵌入答疑机器人。
- 通过 API 集成 (API Access):
-
这是更高级的用法,适合需要将 Dify 应用能力集成到你自己开发的程序、App 或后端服务中的开发者。
-
在概览页的 “访问 API” (API Access) 部分,你可以找到:
-
API 端点 (Endpoint URL): 调用你的应用的唯一网址。
-
API 密钥 (API Key): 用于身份验证。你需要在“设置”->“API 密钥”中创建和管理 Key。
-
调用方式: 使用编程语言(如 Python, JavaScript, Java 等)的 HTTP 请求库,向 API 端点发送请求,请求中需要包含 API Key 和用户输入等参数。
-
使用场景: 在你的 App 中加入一个 AI 对话功能、在你的自动化脚本中调用 Dify 的文本生成能力、将 Dify 作为后端服务的一部分。我们会在后续模块稍微展开。
现在,你不仅能创建 Dify 应用,还知道如何将它们分享出去或集成到实际场景中了!尝试把你刚才创建的“Dify 小白助手”嵌入到你的测试网页里看看效果吧!
模块三:知识库 (Datasets) —— 给你的 AI 应用装上“外脑”
我们已经学会了创建基本的对话和文本生成应用。但这些应用依赖的主要是 LLM 本身的通用知识。如果想让 AI 回答关于你公司特定产品、内部规章制度或者某个垂直领域的专业知识,单靠通用 LLM 往往不够准确,甚至会“一本正经地胡说八道”(这在 AI 领域被称为幻觉 Hallucination)。
这时,Dify 的 知识库 (Datasets / Knowledge Base) 功能就派上大用场了。它允许你把自己的“私有”信息喂给 AI,让 AI 在回答相关问题时,能够参考这些信息,从而大大提高回答的相关性和准确性。这背后的核心技术就是我们之前提到的 RAG (检索增强生成)。
3.1 为什么需要知识库?RAG 技术如何工作?
-
LLM 的知识局限:
-
知识截止日期: 大部分 LLM 的知识都停留 在它们训练数据截止的那个时间点,对之后发生的新事件、新产品、新知识一无所知。
-
缺乏私有知识: LLM 不可能知道你公司的内部流程、非公开的产品细节、你的个人笔记等私有信息。
-
通用性 vs。 专业性: 通用 LLM 知识面广,但在特定垂直领域的深度和精度可能不如领域专家。
-
知识库的作用: 弥补 LLM 在实时性、私有性、专业性上的短板。它就像给 AI 外挂了一个可以随时查阅的、你专属的“参考资料库”或“外脑”。
-
RAG (Retrieval-Augmented Generation) 工作原理(通俗版):
想象一下你向一位非常聪明的专家(LLM)请教一个关于你们公司最新产品的问题。这位专家虽然博学,但不了解你们这款新产品。这时,你把产品说明书递给他(这就是知识库)。
RAG 的过程大致是这样的:
-
用户提问: “你们这款新出的‘超级 A’产品,电池续航怎么样?”
-
检索 (Retrieval): Dify 系统不会直接把问题丢给专家。它会先拿着你的问题(关键词:“超级 A”、“电池续航”)去你递给它的产品说明书(知识库)里快速查找最相关的几页或段落。比如,它找到了说明书第 5 页写的:“超级 A 采用了最新的 XX 技术,标准模式下电池续航可达 20 小时。”
-
增强 (Augmented): 系统把找到的这句关键信息**“贴”**在你的原始问题旁边,形成一个更丰富的“问题+参考资料”包。
-
生成 (Generation): 最后,系统把这个“增强包”一起交给专家(LLM),并指示他:“请根据用户的问题和这份参考资料,给出回答。” 专家看到问题和资料,就能 confidently 地回答:“根据产品说明,‘超级 A’产品在标准模式下的电池续航可以达到 20 小时。”
-
RAG 的核心优势:
-
提高准确性: 回答基于你提供的实际资料,大大减少瞎猜和编造。
-
知识可更新: 你随时可以更新知识库里的文档,AI 就能获取到最新的信息,解决了 LLM 知识滞后的问题。
-
可解释性/可溯源: (在某些配置下)Dify 可以告诉你 AI 的回答是参考了知识库中的哪一段内容,方便你验证来源。
-
降低训练成本: 相比于用私有数据去微调(Fine-tuning)整个大模型,RAG 通常成本更低、实现更快。
3.2 创建和管理知识库
现在我们来动手创建一个知识库。
步骤 1:进入数据集管理
- 在 Dify 顶部导航栏,点击 “数据集” (Datasets)。你会看到一个列表,显示你已经创建的所有知识库(现在应该是空的)。
步骤 2:创建新知识库
-
点击 “创建数据集” (Create Dataset) 按钮。
-
命名: 给知识库起一个清晰的名字,方便以后在应用中引用。比如,我们要上传 Dify 的官方文档作为知识库,可以命名为 “Dify 官方文档库”。
-
(可选) 描述: 简单说明这个知识库包含什么内容。
步骤 3:导入数据 (核心步骤)
Dify 支持多种方式将你的数据导入知识库:
- 从本地文件上传:
-
支持格式: 这是最常用的方式。Dify 通常支持多种格式,包括:
-
文本文件: .txt, .md (Markdown)
-
文档: .pdf, .docx (Word)
-
表格: .csv, .xlsx (Excel) - Dify 会尝试将其内容按行或单元格提取为文本。
-
网页格式: .html, .htm
-
其他: 可能还支持 .epub, .eml, .msg, .pptx 等,具体看你使用的 Dify 版本和配置。
-
操作: 点击“上传文件”按钮,选择你要上传的一个或多个文件。
-
示例: 我们可以去 Dify 官网下载几篇介绍核心功能的 PDF 或 Markdown 文档上传。
- 从网页 URL 同步:
-
操作: 选择“从 URL 同步”或类似选项,输入你想要导入内容的网页地址。
-
原理: Dify 会尝试像网络爬虫一样去抓取该网页的文本内容。
-
注意: 对于需要登录、有复杂 JavaScript 渲染或反爬虫机制的网站,可能无法成功抓取。
-
示例: 可以尝试输入 Dify 官方文档某个页面的 URL。
- 手动输入文本段:
- 操作: 直接在 Dify 界面提供的文本框里粘贴或输入文本内容。适合少量、临时的文本补充。
- 结构化数据导入 (Q&A 格式):
-
操作: 有些版本允许你直接导入问答对 (Question-Answer pairs),通常是通过上传特定格式的 CSV 文件 (包含 'question' 和 'answer' 两列)。
-
优势: 对于 FAQ 场景,直接提供标准问答对,检索和回答的效果通常最好。
步骤 4:数据处理与索引设置
当你上传文件或输入数据后,Dify 需要对其进行一系列预处理,才能让 AI 有效地检索。这个过程通常是自动进行的,但了解其原理和可配置项很重要:
-
文本提取 (Text Extraction): 从 PDF、Word 等文件中抽取出纯文本内容。
-
文本分段 (Segmentation / Chunking):
-
为什么分段? LLM 处理上下文的长度有限,而且检索时匹配一小段相关内容比匹配整篇长文更精确。所以 Dify 需要把长文档切分成许多有意义的小段落 (Chunks)。
-
分段规则设置: 你通常可以调整:
-
分段模式 (Segmentation Mode): 比如是按标点符号、固定长度还是智能分段。Dify 通常提供“自动”或“自定义”选项。对于大多数标准文档,“自动”或默认设置效果不错。
-
段最大长度 (Max Length / Chunk Size): 每个段落包含多少字符或 Token。
-
段重叠大小 (Overlap): 相邻段落之间可以有一部分重叠内容,有助于保证语义的连续性,防止关键信息在切分处被断开。
-
预览: Dify 通常会提供一个预览功能,让你看到按照当前设置,你的文档会被切分成什么样子。可以根据预览效果调整设置。
- 向量化与索引 (Vectorization & Indexing):
-
向量化 (Embedding): 这是 RAG 的魔法核心。Dify 需要调用一个 Embedding 模型 (这是一种专门把文本转换成数字向量的 AI 模型,Dify 内置或需要你配置外部的,比如 OpenAI 的 text-embedding-ada-002),将上一步切分好的每一个文本段落都转换成一个高维数学向量(一长串数字)。这个向量可以捕捉到这段文本的语义信息。
-
建立索引 (Indexing): 将所有文本段落及其对应的向量存储到一个专门的向量数据库中。这样,当用户提问时,Dify 可以快速地将用户问题也转换成向量,然后在数据库中搜索语义上最相似的文本段落向量。
-
索引模式设置: 你通常可以选择:
-
高质量 (High Quality): 使用强大的 Embedding 模型进行向量化,检索效果最好,但处理时间可能稍长,消耗的计算资源也更多。
-
经济 (Economic): 可能使用更简单的模型或基于关键词的索引,处理速度快,成本低,但检索精度可能稍差。
-
混合检索 (Hybrid Search): (较新版本功能) 推荐! 结合了向量检索(理解语义)和传统的关键词检索(精确匹配术语、名字、ID 等)的优点,通常能获得最好的综合效果。
-
老金建议: 对于重要知识库,优先选择高质量或混合检索模式。
步骤 5:等待处理完成
-
完成上述设置后,点击 “保存并处理” (Save & Process) 或类似按钮。
-
Dify 会开始在后台进行文本提取、分段、向量化和索引。处理时间取决于你的文档大小、数量以及选择的处理模式。
-
你可以在数据集的文件列表里看到每个文档的处理状态(排队中、处理中、已完成、失败)。
-
耐心等待所有文档都显示**“已完成” (Completed)**。
3.3 将知识库关联到你的 AI 应用
知识库建好了,现在要让我们的 AI 应用(比如之前创建的“Dify 小白助手”)能够使用它。
-
回到工作室 (Studio), 找到并打开你的“Dify 小白助手”应用。
-
进入应用的 “编排” (Orchestrate) 或 “提示词” (Prompt) 配置页面。
-
找到“上下文” (Context) 或 “知识库” (Knowledge Base) 的设置区域。
-
点击 “添加数据集” (Add Dataset) 或 “关联知识库” (Link Knowledge Base)。
-
在弹出的列表中,选择你刚才创建的 “Dify 官方文档库”。
-
(可选) 配置检索参数:
-
检索模式 (Retrieval Mode): 如果知识库设置了混合检索,这里通常可以保持一致。
-
Top K: 设置每次用户提问时,最多从知识库中检索出多少条(K 条)最相关的文本片段给 LLM 参考。通常设置为 3 到 5 比较合适。K 值太小可能信息不足,太大可能引入不相关的干扰信息,并增加 Token 消耗。
-
得分阈值 (Score Threshold): (可能提供) 设置一个相关度分数门槛,只有超过这个分数的检索结果才会被采纳。可以用来过滤掉不太相关的结果。
- 修改 System Prompt (非常重要!):
-
现在 AI 有了“参考书”,你必须在它的“工作守则”(System Prompt)里明确告诉它要使用这些参考资料!
-
找到“Dify 小白助手”的 System Prompt,进行修改:
你是一个友好且乐于助人的 AI 助手,名叫“迪仔”。你的任务是回答用户提出的关于 Dify 平台的基础问题,例如 Dify 是什么、它能做什么、有哪些主要功能等。
+ **请优先根据我提供的【上下文知识】(Context Knowledge)来回答问题。**
请使用简洁明了的语言回答,就像在向一个完全不懂技术的小白解释一样。
+ **如果【上下文知识】中没有找到相关信息,你可以尝试根据你的通用知识回答。**
如果用户问的问题超出了 Dify 基础知识的范围,或者你根据上下文和通用知识都不知道答案,请礼貌地回复:“抱歉,这个问题我暂时还不太清楚,你可以查阅 Dify 官方文档或者在社区提问哦。” 绝对不要编造答案。
- 关键点: 明确指示 AI 优先使用提供的上下文 (Context / Knowledge),并给出当上下文中找不到答案时的备选策略(比如使用通用知识或直接说不知道)。
- 保存并重新测试!
3.4 测试知识库效果与优化
是时候检验成果了!
-
使用预览/调试窗口进行测试。
-
提问知识库里应该有的问题:
-
(假设你上传了 Dify 的 Workflow 文档)“Dify 的 Workflow 是什么?”
-
“如何在 Dify 中创建知识库?”
-
“RAG 技术在 Dify 里是怎么应用的?”
- 观察回答:
-
是否引用了知识库? 在 Dify 的调试界面,通常会显示出本次回答实际参考了知识库中的哪些文本片段 (Source / Citation)。仔细看这些片段是否和你提问相关。
-
回答是否准确、相关? 对比 AI 的回答和你上传的文档原文。
-
速度如何? 加入知识库检索后,回答速度可能会比之前稍慢一点点。
- 问知识库里没有,但 LLM 可能知道的问题:
- “北京今天天气怎么样?”(如果没配工具,它应该用通用知识回答或说不知道)
- 问模棱两可或边界问题, 观察 AI 如何处理。
如果效果不理想,如何优化?
-
优化 Prompt:
-
更清晰地指示 AI 如何利用上下文?
-
是否需要调整兜底策略?
-
试试不同的措辞引导。
-
优化知识库内容:
-
质量是王道! 上传的文档本身是否清晰、准确、没有错误?内容组织是否合理?
-
查漏补缺: AI 经常答不上来的问题,是不是对应的知识点没有覆盖到?补充相关文档或手动添加文本段。
-
格式问题: 对于 PDF 或扫描件,文本提取是否准确?是否有乱码?尝试上传 TXT 或 Markdown 格式。
-
Q&A 对是“特效药”: 对于特别重要或经常被问到的问题,考虑在知识库中添加精确的问答对 (Q&A) 数据。
-
优化分段与索引设置:
-
分段: 尝试调整分段长度和重叠大小,特别是对于格式比较特殊的文档(比如代码、表格多的文档)。重新处理索引。
-
索引: 试试从“经济”切换到“高质量”或“混合检索”,看看效果是否有提升(需要重新处理索引)。
-
优化检索参数:
-
Top K: 增加 K 值(比如从 3 到 5)看是否能提供更多有用信息?减少 K 值看是否能减少干扰?
-
Score Threshold: 调整阈值,过滤掉低相关度的结果。
知识库的优化是一个持续迭代的过程。 需要不断根据测试反馈和实际使用情况进行调整。
3.5 知识库使用场景实例 (回顾与拓展)
-
智能客服(已提及): 上传产品手册、FAQ 文档、售后政策,打造 7x24 小时在线客服。
-
企业内部知识管理(已提及): 人事政策、财务规定、IT 支持文档、项目文档、技术规范,方便员工快速查询。
-
销售助手: 上传产品规格书、竞品分析报告、客户案例、销售话术,辅助销售人员快速获取信息、应答客户。
-
教育/培训: 上传教材、课件、参考论文、法规条文,制作学习辅导机器人或专业领域查询工具。
-
个人知识库: 上传你的读书笔记、网页剪藏、日记、代码片段,打造一个能与你的个人知识对话的 AI 助手。
掌握了知识库,你的 Dify 应用就从一个“通才”变成了一个在你指定领域内有深度的“专家”了!
模块四:插件与工具 (Tools/Plugins) —— 让 AI 拥有超能力
我们已经让 AI 应用学会了“读书”(使用知识库),变得更有知识内涵了。但是,现实世界是动态变化的,而且有很多任务光靠“读书”是完成不了的。比如:
-
AI 不知道今天的天气怎么样(除非你刚把天气预报存入知识库)。
-
AI 不能帮你做数学计算(虽然它可能知道计算规则,但直接执行计算通常需要专门工具)。
-
AI 无法直接访问互联网去搜索一个刚刚发生的新闻事件。
-
AI 不能帮你调用你公司的内部订单系统 API 去查询某个客户的订单状态。
-
AI 本身(通常)不会画画。
为了解决这些问题,Dify 引入了 插件 (Plugins) 或 工具 (Tools) 的概念。(在 Dify 中,这两个词有时会混用,或者插件是工具的一种载体,理解其核心功能即可)。它们就像给 AI 配备的各种“外部装备”或“传感器官”,让 AI 能够感知实时信息、执行特定动作、与外部世界互动。
4.1 什么是工具?为什么需要它?
-
LLM 的能力边界: 大型语言模型本质上是基于其训练数据的模式进行文本生成和理解。它们被“锁”在自己的知识范围内,无法直接与实时数据流、外部服务或需要精确计算/执行的环境交互。
-
工具的作用: 充当 LLM 与外部世界之间的“桥梁”和“执行器”。它们将 LLM 的“意图”转化为实际的操作或信息获取。
-
核心机制(简化版): 当 AI(通常是 Agent 或配置了工具的 Chatbot)接收到一个可能需要使用工具的任务时,会发生类似如下的流程:
-
用户提问: “帮我查查明天上海的天气怎么样?”
-
LLM 意图识别与工具选择: AI 理解到用户想知道天气信息,并且判断需要使用“天气查询 (Weather Query)”这个工具。
-
LLM 参数提取: AI 从用户问题中提取调用工具所需的参数,比如 城市=上海, 日期=明天。
-
Dify 平台执行工具: Dify 系统根据 AI 的“指令”,实际调用后台配置好的天气查询 API,并将提取出的参数(上海, 明天)传递给 API。
-
工具返回结果: 天气 API 执行查询,返回结果,比如:“上海,明天,晴转多云,15-25℃”。
-
LLM 整合结果并生成回复: AI 接收到工具返回的原始结果,然后用自然语言将其组织成友好的回复:“明天的上海天气预计是晴转多云,气温大约在 15 到 25 摄氏度之间。”
4.2 Dify 内置常用工具介绍
Dify 通常会自带一些常用的工具,你可以在“工具 (Tools)”或“插件 (Plugins)”管理页面找到它们。常见的内置工具可能包括(具体以你使用的 Dify 版本为准):
-
网页搜索 (Web Search / Google Search 等):
-
能力: 让 AI 能够访问搜索引擎(如 Google, Bing, DuckDuckGo 等)来获取实时的、互联网上的信息。
-
配置: 通常需要你提供相应搜索引擎的 API Key 和可能的 搜索引擎 ID (CSE ID)。这些 Key 通常需要去搜索引擎的开发者平台申请(可能有免费额度或需要付费)。
-
使用场景:
-
查询最新新闻:“最近有什么关于 AI 的大新闻吗?”
-
获取动态信息:“苹果公司现在的股价是多少?”
-
了解未知概念:“解释一下什么是‘量子纠缠’?”
-
当知识库信息不足或过时,作为补充信息来源。
-
计算器 (Calculator):
-
能力: 执行基本的数学运算(加减乘除、乘方、开方等)。
-
配置: 通常无需额外配置,内置即可使用。
-
使用场景:
-
直接计算:“1234 * 5678 等于多少?”
-
回答包含计算的问题:“我买了 5 本书,每本 38 元,一共花了多少钱?”
-
网页内容读取 (Web Reader / HTTP Request):
-
能力: 给定一个 URL,AI 可以尝试访问这个网页并读取其主要文本内容。更通用的 HTTP Request 工具则可以发送 GET, POST 等请求到任意 URL,并获取返回内容。
-
配置: Web Reader 可能无需配置,HTTP Request 则需要指定请求方法、URL、可能的 Headers 或 Body。
-
使用场景:
-
总结网页内容:“帮我总结一下这篇文章的主要观点:[URL]”
-
获取特定 API 数据(如果 API 无需复杂认证):“访问这个 JSON API [URL] 并告诉我 status 字段的值。”
-
图片生成 (Image Generation / DALL-E / Stable Diffusion):
-
能力: 根据用户的文本描述,调用相应的 AI 绘画模型生成图片。
-
配置: 需要你在 Dify 中配置好 DALL-E 或 Stable Diffusion 等图像生成模型的 API Key。
-
使用场景:
-
创意作图:“画一只穿着宇航服在月球上弹吉他的猫。”
-
设计辅助:“帮我生成一个科技蓝风格的网页 Banner 背景图。”
-
注意: 在 Dify 中使用图片生成工具,通常需要在支持多模态输出的应用类型(如特定配置的 Agent 或 Workflow)中才能正常展示图片结果。
-
其他可能内置的工具: 如维基百科搜索、股票查询、特定数据库查询等。
如何启用和配置内置工具?
-
进入 Dify 的 “工具 (Tools)” 或 “插件 (Plugins)” 管理页面。
-
浏览可用的工具列表。
-
找到你想要使用的工具,比如“网页搜索”。
-
点击工具卡片上的 “添加” (Add)、“启用” (Enable) 或 “配置” (Configure) 按钮。
-
根据界面提示,输入所需的 API Key 或其他配置信息。请确保你输入的 Key 是有效且有权限的。
-
保存配置。
重要提示:API Key 是敏感信息,请妥善保管,不要泄露给他人! 在团队协作中,每个成员可能需要配置自己的 Key。
4.3 在应用中使用工具 (Agent 或 Workflow)
配置好工具后,需要让你的 AI 应用知道可以使用这些工具。工具的使用通常在以下两种应用模式下最有意义:
-
Agent (智能体) 应用类型: Agent 被设计为可以自主理解任务并决定使用哪个工具。
-
Workflow / Chatflow (工作流) 类型: 你可以在工作流中明确地插入一个“工具节点”,指定在流程的哪一步调用哪个工具。
-
(对于简单 Chatbot): 有些版本的 Dify 也允许在基础对话型应用中直接关联工具,但 AI 是否能有效、准确地决定何时使用工具,很大程度上取决于你的 Prompt 设计和所选 LLM 的能力。
方法一:在 Agent 或对话型应用中关联工具
-
回到 工作室 (Studio),打开你的 Agent 应用或之前的“Dify 小白助手”(如果你想让它也能搜索)。
-
进入应用的 “编排” (Orchestrate) 或 “配置” (Configure) 页面。
-
找到“工具” (Tools) 或 “插件” (Plugins) 的设置区域。
-
点击 “添加工具” (Add Tool) 或类似按钮。
-
在弹出的列表中,勾选你已经配置好的工具,比如 “网页搜索 (Web Search)”。
-
修改 System Prompt (极其关键!):
-
你必须在 Prompt 中明确地授权 AI 使用这些工具,并指导它在什么情况下应该使用。
-
示例 Prompt 修改 (给“Dify 小白助手”添加搜索能力):
你是一个友好且乐于助人的 AI 助手,名叫“迪仔”。... (省略之前内容) ...
+ **你被授权使用以下工具:**
+ **【网页搜索 (Web Search)】:** 当你需要查找最新的信息、Dify 官方文档库(上下文知识)中没有的内容,或者用户明确要求搜索时,可以使用此工具。
+
+ **在回答问题前,请先判断是否需要使用工具。如果需要,请选择合适的工具并使用它。然后结合工具返回的结果和上下文知识来回答用户的问题。**
如果用户问的问题超出了 Dify 基础知识的范围,... (省略兜底策略) ...
-
关键点:
-
明确列出可用工具: 让 AI 知道它的“装备库”里有什么。
-
提供使用指南: 告诉它什么时候该用,什么时候不该用。
-
强调决策过程: 引导 AI 先思考“是否需要用工具?”再行动。
方法二:在 Workflow / Chatflow 中使用工具节点
这是更精确、更可控的方式,尤其适合复杂的流程。
-
创建一个 Workflow 或 Chatflow 类型的应用,或者将现有应用切换到 Workflow 模式。
-
在可视化的画布上,从左侧的节点库中找到 “工具” (Tool) 节点,拖拽到画布上。
-
选中这个工具节点,在右侧的配置面板中:
-
选择工具: 从下拉列表中选择你要使用的工具,比如 “网页搜索”。
-
配置输入: 工具节点需要输入参数。你需要将上游节点(比如“开始”节点的用户输入 user_query)的输出连接到工具节点的相应输入引脚上(比如网页搜索节点的“查询语句 (Query)”引脚)。
- 处理工具输出: 工具执行后会产生输出(比如搜索结果)。你需要将工具节点的输出引脚连接到下游节点(比如一个 LLM 节点),让下游节点处理或总结工具的结果。
- 例如: 将“网页搜索”节点的“搜索结果 (Results)”引脚连接到一个 LLM 节点的输入,然后在 LLM 节点的 Prompt 中写:“请根据以下搜索结果,总结回答用户的问题:{{搜索结果}}”。
Workflow 提供了对工具调用的精确控制,是实现复杂 Agent 行为的首选方式。
4.4 测试工具使用效果
配置完成后,务必进行充分测试:
- 设计测试用例: 准备一些明确需要使用工具的问题。
-
网页搜索: “Dify 最近发布了哪些新功能?”(假设知识库没更新)
-
计算器: “计算 (1024 + 2048) / 3 * 7”
-
网页读取: “帮我看看 Dify 官网首页上现在写了什么?”
-
图片生成: (如果配置了且应用支持) “画一个 Dify 的吉祥物,要可爱的风格。”
-
在预览/调试窗口或运行 Workflow 进行测试。
-
观察 AI 行为与日志:
-
是否调用了工具? Dify 的调试界面或 Workflow 运行日志通常会显示 AI 是否尝试调用工具、调用了哪个工具、传入了什么参数、工具返回了什么结果。
-
参数是否正确? AI 是否准确地从你的问题中提取了所需的参数?
-
结果整合是否合理? AI 如何将工具返回的(通常是结构化的)结果,用自然语言回复给用户?
-
失败处理: 如果工具调用失败(比如 API Key 无效、网络问题),AI 是如何反应的?是报错还是尝试其他方法?
- 调试与优化:
-
工具未被调用?
-
检查 Prompt 是否清晰授权和引导?(对于 Agent/Chatbot 模式)
-
检查 Workflow 中的节点连接和输入配置是否正确?
-
工具调用失败?
-
检查工具本身的配置(API Key 是否有效?额度是否充足?) .
-
检查网络连接。
-
结果不理想?
-
优化 Prompt,指导 AI 更好地理解工具结果并进行回复。
-
对于 Workflow,可以在工具节点后增加 LLM 节点来专门处理和格式化工具输出。
-
模型能力: 复杂的工具使用和规划(比如需要连续调用多个不同工具)可能需要更强大的 LLM(如 GPT-4)才能更好地完成。
4.5 自定义工具:连接你的专属服务 (高级)
Dify 最强大的地方之一在于它允许你创建自定义工具 (Custom Tools),让 AI 能够调用你自己的 API 或服务。
-
场景:
-
你想让 AI 客服能查询用户在你公司系统里的订单状态。
-
你想让 AI 助手能帮你往你的项目管理工具(如 Jira, Trello,如果它们提供了 API)里创建任务。
-
你想让 AI 能调用你内部的数据分析接口。
-
如何创建自定义工具?
-
进入 Dify 的 “工具 (Tools)” 管理页面。
-
点击 “创建工具” (Create Tool)。
-
选择工具类型:
-
HTTP 请求 (HTTP Request): 最常用的方式。你需要手动配置 API 的细节。
-
从 OpenAPI (Swagger) 导入: 如果你的 API 遵循 OpenAPI 规范 (通常有一个 JSON 或 YAML 描述文件),Dify 可以自动解析并生成工具配置,非常方便。
- 配置 API 详情 (以 HTTP 为例):
-
名称与描述 (Name & Description): 给工具起个名字。描述至关重要! 要用清晰的自然语言告诉 LLM 这个工具是干什么用的、什么时候应该调用它、需要哪些输入参数、每个参数是什么意思。LLM 会根据这个描述来决定是否以及如何使用你的工具。
-
认证 (Authentication): 设置调用 API 所需的认证方式,如 API Key (放在 Header 或 Query Param 里)、Bearer Token、Basic Auth 等。你需要在 Dify 中安全地存储这些凭证。
-
API 端点 (Endpoint URL): 你的 API 的访问地址。
-
HTTP 方法 (Method): GET, POST, PUT, DELETE 等。
-
参数 (Parameters): 定义这个 API 需要哪些输入参数。你需要指定哪些参数是必需的,以及这些参数的值应该由 LLM 动态填充(比如从用户问题中提取)。
-
请求体 (Request Body): 对于 POST, PUT 等请求,定义请求体的数据结构 (通常是 JSON)。
-
响应解析 (Response Parsing): (可选但推荐) 告诉 Dify 如何从 API 返回的复杂 JSON 结果中提取出 AI 需要的关键信息。
- 测试与保存: Dify 通常提供测试功能,让你在保存前验证 API 调用是否能成功。
-
使用自定义工具: 创建并配置完成后,你的自定义工具就会出现在工具列表里,可以像内置工具一样添加到 Agent 或 Workflow 中,并在 Prompt 中引导 AI 使用。
-
挑战:
-
需要你对 API 的工作原理有基本了解。
-
编写高质量、让 LLM 能准确理解的工具描述是一项挑战。
-
需要处理好 API 认证和安全性问题。
4.6 工具使用场景实例 (回顾与拓展)
-
智能客服 + 订单查询: 对话中用户问“我的订单发货了吗?”,AI 调用自定义订单查询 API 获取状态并回复。
-
会议纪要 + 任务分配: 对话中总结了会议要点,用户说“把第三点分配给小王”,AI 调用项目管理工具 API 创建任务并指派。
-
市场分析报告生成: Workflow 中先用网页搜索工具查找行业新闻,再调用内部销售数据 API 获取数据,最后让 LLM 结合两方面信息生成分析报告。
-
多语言内容创作与发布: Workflow 中先用 LLM 生成英文文章,再调用翻译工具 API 翻译成多国语言,最后调用 CMS (内容管理系统) API 将翻译后的文章发布到不同语言的网站。
掌握了工具,你的 Dify 应用就真正拥有了连接现实世界、执行具体任务的能力,从一个“知识库”升级为了一个强大的“行动者”。
模块五:进阶玩法 —— Workflow 与 Agent (V1.2+ 核心)
我们已经学习了如何创建基础应用、使用知识库和工具。对于很多简单场景,这些功能已经足够。但是,如果你想构建更复杂、需要多步骤处理、包含逻辑判断、甚至需要 AI 自主规划的应用程序,那么 Dify 的 Workflow (工作流) 功能(以及与之紧密相关的 Agent 概念)就是你的终极武器。尤其在 Dify V1.2 版本之后,Workflow 成为了平台的核心编排引擎。
5.1 从 Prompt 编排到 Workflow 编排的进化
-
简单编排的局限:
-
在之前的模块中,我们主要是在应用的“编排”页面通过编写 System Prompt 来指导 AI 的行为,并直接关联知识库和工具。这种方式对于“输入 -> LLM 处理(可能带 RAG 或简单工具调用) -> 输出”的直线流程很有效。
-
但如果任务稍微复杂一点,比如:
-
需要先让 AI 判断用户的意图(是闲聊?查资料?还是想用某个功能?),然后根据不同意图走不同的处理路径。
-
需要先查知识库 A,如果没查到,再去查知识库 B,最后再上网搜索。
-
需要调用一个工具获取数据,然后让另一个 LLM 对这些数据进行分析和总结。
-
需要在多个步骤之间传递和处理变量。
-
只靠一个冗长的 System Prompt 来描述所有这些逻辑会变得非常困难、难以维护,而且对 LLM 的理解能力要求极高,效果也不稳定。
-
Workflow 的诞生:
-
为了解决复杂任务编排的难题,Dify 引入了 Workflow (工作流)。它提供了一个可视化的画布 (Canvas),让你彻底告别“Prompt 里绣花”的窘境。
-
你可以像画流程图一样,从左侧的节点库 (Node Library) 中拖拽出代表不同功能的节点 (Node)(比如 LLM 调用、知识库检索、工具使用、条件判断、变量处理等),然后用连接线 (Edges) 把它们按照你想要的执行顺序和数据流向连接起来。
-
核心优势:
-
逻辑清晰: 流程一目了然,非常直观,便于设计、理解和修改。
-
模块化: 每个节点负责一个单一功能,易于复用和替换。
-
精确控制: 你可以精确地控制数据如何在节点间传递,以及在什么条件下执行哪个分支。
-
复杂任务分解: 可以将一个大任务拆解成多个小步骤,由不同的节点(甚至不同配置的 LLM)分工合作,提高整体效果和稳定性。
-
Agent (智能体) 与 Workflow 的关系:
-
在 Dify 的语境下,Agent 和 Workflow 关系密切,有时甚至可以互换使用或组合使用。
-
你可以创建一个特定类型的“Agent”应用,它通常内置了一个可以让你配置工具和 Prompt 的界面,其背后可能运行着一个隐式的、预设的 Agent 推理逻辑(比如 ReAct 框架,让 AI 能自主思考并调用工具)。
-
你也可以创建一个**“Workflow”或“Chatflow”类型的应用**,在可视化的画布上明确地构建出 Agent 的行为逻辑。例如,你可以拖入一个 Agent 节点,并为其配置可用的工具和推理策略(如 Function Calling 或 ReAct),让这个节点在 Workflow 中自主地与工具交互。
-
可以理解为: Workflow 是更通用、更灵活的底层编排机制,而 Agent 是基于 Workflow(或类似机制)实现的一种能够自主规划和使用工具的应用模式或节点类型。对于复杂任务,推荐使用 Workflow,因为它提供了最高的透明度和控制力。
5.2 Workflow 画布核心节点详解
当你创建一个 Workflow 或 Chatflow 类型的应用后,就会进入那个神奇的可视化画布。我们来认识一下画布上最常用的一些“积木”(节点):
-
画布界面:
-
左侧:节点库 (Node Library): 分类列出了所有可用的节点,你可以从中拖拽到画布上。
-
中间:画布 (Canvas): 你的工作区,用来放置和连接节点。
-
右侧:节点配置面板 (Configuration Panel): 当你选中画布上的某个节点时,右侧会显示该节点的详细配置选项。
-
关键节点类型 (持续更新中,以实际版本为准):
-
开始 (Start) 节点:
-
作用: 每个 Workflow 的唯一入口。
-
配置: 定义这个 Workflow 启动时需要接收哪些用户输入变量(比如用户的提问 user_query)。
-
-
LLM (大型语言模型 / Answer) 节点:
-
作用: 调用你配置好的 LLM 来执行各种自然语言处理任务,如生成文本、回答问题、进行意图判断、总结内容等。它是 Workflow 的“大脑”。
-
配置: 选择模型、设置 Prompt (可以引用上游节点的输出作为变量)、调整模型参数 (Temperature 等)。在 Chatflow 中,可能有一个专门的 Answer 节点用于生成最终回复。
-
-
知识库检索 (Knowledge Retrieval) 节点:
-
作用: 从你指定的 Dify 数据集中检索相关信息。
-
配置: 选择要检索的知识库、设置检索模式 (向量/混合)、Top K 值。
-
输入: 通常需要连接一个包含查询语句的输入(比如来自 Start 节点的用户问题)。
-
输出: 输出检索到的文本片段列表。
-
-
工具 (Tool) 节点:
-
作用: 调用你配置好的内置或自定义工具。
-
配置: 选择要调用的工具、将上游节点的输出连接到工具所需的输入参数。
-
输出: 输出工具执行后的结果。
-
-
条件判断 (IF/ELSE) 节点:
-
作用: 实现逻辑分支。根据上游某个节点的输出结果(比如 LLM 判断的结果是 'A' 还是 'B',或者知识库检索是否找到了内容),决定接下来执行哪条路径 (分支)。
-
配置: 设置判断条件(基于变量的值进行比较)、配置不同的输出分支(如 True 分支, False 分支)。
-
-
问题分类器 (Question Classifier) 节点: (较新版本)
-
作用: 专门用于在 Workflow 开始时自动判断用户问题的意图。
-
配置: 定义几个可能的意图分类(比如“闲聊”、“查询产品信息”、“技术支持请求”),并为每个分类提供一些示例问题。LLM 会对用户输入进行分类。
-
输出: 输出判断出的类别,通常连接到 IF/ELSE 节点,将流程引导到不同的处理分支。
-
-
变量赋值 (Variable Assigner) 节点:
- 作用: 创建一个新的变量,或者将某个值(来自上游节点输出、固定值或表达式计算结果)赋给一个已有的变量。方便在 Workflow 中管理和传递数据。
-
代码执行 (Code) 节点:
-
作用: 高级功能! 允许你直接在节点里编写和运行一小段 Python 或 JavaScript 代码。
-
能力: 实现非常灵活的数据处理、逻辑计算、调用 Dify 未直接支持的第三方库(如果环境允许)等。
-
配置: 编写代码,定义输入变量和输出结果。
-
注意: 使用代码节点需要一定的编程基础。
-
-
迭代 (Iteration / Loop) 节点: (较新版本可能提供)
-
作用: 对一个列表(比如知识库检索返回的多个片段,或者工具返回的多个结果)中的每一项,重复执行后续连接的一组节点。
-
配置: 指定要迭代的列表变量,配置循环体内的节点。
-
使用场景: 逐条处理搜索结果、对多个文档片段分别进行总结等。
-
-
结束 (End) 节点:
-
作用: Workflow 的终点。标志着流程执行完毕。
-
配置: 定义最终输出给用户的内容是什么。可以收集来自不同分支或最终处理节点的结果作为输出。
-
-
连接线 (Edges):
- 作用: 连接两个节点,表示数据流向和执行顺序。通常从上游节点的输出锚点拖拽到下游节点的输入锚点。
-
5.3 手把手构建一个简单的 Workflow:多渠道信息查询助手
让我们用 Workflow 来实现一个比之前更智能的查询助手。它的逻辑是:
-
用户提问。
-
先查我们自己的“Dify 官方文档库”。
-
如果在知识库里找到了相关内容,就基于这些内容回答。
-
否则(没找到),就调用“网页搜索”工具去网上查找。
-
最后将找到的答案(无论是来自知识库还是网络搜索)回复给用户。
步骤:
- 创建 Workflow 应用:
-
工作室 -> 创建应用 -> 选择 “Workflow” 或 “Chatflow” 类型。(Chatflow 更适合对话场景,我们以 Chatflow 为例,它通常也包含 Workflow 的核心功能)。
-
命名为 “智能信息助理”。
- 配置开始 (Start) 节点:
-
画布上默认会有一个 Start 节点。
-
选中它,在右侧配置面板的“变量 (Variables)”区域,确认有一个代表用户输入的变量,比如 sys.query(系统默认)或你自己添加一个 user_input (类型:字符串)。
- 添加知识库检索节点:
-
从左侧节点库找到 “知识库检索” (Knowledge Retrieval) 节点,拖到画布上,放在 Start 节点下方。
-
选中此节点,在右侧配置:
-
选择知识库: 选择我们之前创建的 “Dify 官方文档库”。
-
输入 (Inputs): 找到“查询 (Query)”输入引脚。从 Start 节点的 sys.query (或 user_input) 输出锚点拖拽一条连接线到这个“查询”引脚。
- 添加条件判断 (IF/ELSE) 节点:
-
从节点库找到 “IF/ELSE” 节点,拖到知识库检索节点下方。
-
选中此节点,在右侧配置:
-
条件输入 (Input): 从知识库检索节点的输出锚点中,找到代表“是否检索到结果”或“检索结果列表”的输出(比如可能叫 results 或 found)。将它连接到 IF/ELSE 节点的输入。
-
设置条件 (Conditions): 我们需要判断知识库是否找到了内容。
-
分支 1 (True / If): 条件设置为 results is not empty (如果输入是列表) 或者 found is true (如果输入是布尔值)。给这个分支起个名字,比如 “知识库命中”。
-
分支 2 (False / Else): 这个分支代表知识库未命中。
- 处理“知识库命中”分支:
-
从节点库拖一个 “LLM” 或 “Answer” 节点,放在 IF/ELSE 节点“知识库命中”分支的下方。
-
选中此 LLM/Answer 节点,配置:
-
模型选择与参数: 选择合适的 LLM 和参数。
-
输入 (Inputs):
-
将知识库检索节点的 results (检索到的片段) 输出连接到 LLM 节点的上下文 (Context) 或特定知识库输入引脚。
-
将Start 节点的 sys.query (用户原始问题) 输出也连接到 LLM 节点的输入引脚。
-
提示词 (Prompt):
请根据用户的问题和以下提供的知识库信息,生成一个清晰、准确的回答。
用户问题:
{{sys.query}}
相关知识库信息:
{{knowledge_retrieval_node_results}} # 注意:这里的变量名需要匹配你连接的实际变量名
请直接回答用户的问题。
- 输出: 将这个 LLM/Answer 节点的输出(最终生成的回答)连接到 结束 (End) 节点。
- 处理“知识库未命中”分支:
-
在这条分支下,先拖入一个 “工具 (Tool)” 节点。
-
选中工具节点,配置:
-
选择工具: 选择我们之前配置好的 “网页搜索 (Web Search)”。
-
输入 (Inputs): 将Start 节点的 sys.query 输出连接到网页搜索工具的“查询 (Query)”输入引脚。
-
在工具节点下方,再拖入一个 “LLM” 或 “Answer” 节点。
-
选中此 LLM/Answer 节点,配置:
-
模型选择与参数: 同上。
-
输入 (Inputs):
-
将网页搜索工具节点的输出结果(比如叫 search_results)连接到 LLM 节点的上下文输入。
-
将Start 节点的 sys.query 也连接进来。
-
提示词 (Prompt):
我在内部知识库中没有找到相关信息。请根据用户的问题和以下网络搜索结果,生成一个总结性的回答。
用户问题:
{{sys.query}}
网络搜索结果:
{{web_search_node_results}} # 注意:这里的变量名需要匹配你连接的实际变量名
请基于搜索结果回答用户的问题。如果搜索结果不相关或无法回答,请告知用户。
- 输出: 将这个 LLM/Answer 节点的输出也连接到同一个 结束 (End) 节点。
- 配置结束 (End) 节点:
-
画布上通常默认有一个 End 节点。确保两个分支(知识库命中和未命中)的最终 LLM/Answer 节点的输出都连接到了这个 End 节点。
-
选中 End 节点,配置它的输出变量 (Output Variables),确保它能接收并传递来自上游连接节点的最终回答。
- 调试与测试:
-
Workflow 画布通常有**“运行” (Run)** 或 “调试” (Debug) 功能。
-
点击运行,会弹出窗口让你输入 Start 节点的变量值(即 sys.query 的内容)。
-
测试用例 1 (知识库命中): 输入一个你知道知识库里有的问题,比如 “Dify 如何创建知识库?”
-
测试用例 2 (知识库未命中,需要搜索): 输入一个需要实时信息的问题,比如 “今天美元兑人民币汇率是多少?”
-
观察执行过程: Dify 通常会高亮显示 Workflow 当前正在执行的节点,你可以看到流程是走了“知识库命中”分支还是“未命中 -> 网页搜索”分支。
-
查看结果和日志: 检查 End 节点的最终输出是否符合预期。查看每个节点的详细运行日志(输入、输出、可能的错误信息)。
-
不满意?回去修改! 调整节点配置(Prompt、工具参数、条件判断逻辑)、连接线,然后重新测试。
5.4 Workflow 的优势与应用场景 (回顾与拓展)
-
优势总结:
-
可视化: 复杂逻辑一目了然。
-
模块化: 易于构建、修改和维护。
-
精确控制: 对数据流和执行逻辑有完全掌控。
-
稳定性高: 将任务分解,降低单个 LLM 出错导致整个任务失败的风险。
-
可解释性强: 可以清晰地看到每一步的输入输出,方便调试和理解 AI 的“思考”过程。
-
更多应用场景实例:
-
自动化报告生成: 定时触发 -> 调用多个 API 获取数据 -> 数据清洗 (代码节点) -> LLM 分析数据 -> LLM 生成报告草稿 -> (可选) 发送给人工审核 -> 结束。
-
客户支持工单自动处理: 用户提交工单 (Start) -> 问题分类器判断类型 -> IF/ELSE 分流:(分支 A: 简单 FAQ -> 知识库检索 -> LLM 回答 -> End);(分支 B: 技术问题 -> 调用内部系统 API 检查状态 -> LLM 生成解决方案 -> 指派给技术支持人员 (调用工具) -> End);(分支 C: 投诉 -> 标记为高优先级 -> 通知主管 (调用工具) -> End)。
-
个性化内容推荐: 用户输入偏好 (Start) -> LLM 理解偏好 -> 调用多个内容平台 API (工具节点,可能用迭代处理多个平台) 获取推荐内容 -> LLM 整合并格式化推荐列表 -> End。
-
多步骤研究助手: 用户输入研究主题 (Start) -> LLM 生成研究计划和关键词 -> 迭代节点:对每个关键词执行 (网页搜索 -> LLM 总结搜索结果) -> LLM 汇总所有总结 -> End。
掌握了 Workflow,你就掌握了 Dify 的精髓,能够构建出真正强大、能够解决复杂现实问题的 AI 应用了!这部分内容可能需要多加练习才能熟练掌握,但绝对值得投入时间。
模块六:应用管理、部署与监控
当你精心打造的 Dify 应用初具规模,甚至开始对外提供服务时,有效的管理、灵活的部署以及持续的监控就变得至关重要了。这一模块,我们将关注应用创建完成后的“运维”环节。
6.1 版本管理与迭代优化
AI 应用很少能一蹴而就,持续的优化和迭代是保持其有效性的关键。Dify 提供了一些工具来帮助你完成这个过程。
-
应用日志与标注 (Logging & Annotation):
-
入口: 通常在你的应用概览页 (Overview) 或单独的 “日志” (Logs) / “消息” (Messages) / “历史记录” (History) 标签页可以找到。
-
查看交互记录: 这里记录了用户(或你在调试时)与 AI 应用的每一次交互。你可以看到:
-
用户的输入 (Query)。
-
AI 的完整回复 (Response)。
-
(重要) 这次交互实际使用的 Prompt (包括 System Prompt 和结合了上下文/知识库/工具结果的最终 Prompt)。
-
调用的模型、参数。
-
引用的知识库片段 (如果有)。
-
调用的工具、输入输出 (如果有)。
-
消耗的 Token 数量。
-
执行时间。
-
可能的错误信息。
-
标注反馈 (Annotation / Feedback): 这是优化的关键!对于不满意的回答,你可以:
-
进行 “点赞” (Like 👍) / “点踩” (Dislike 👎) 标记。
-
(更重要) 编辑并提供一个更好的答案 (Edit & Provide Improved Answer)。告诉 Dify,对于这个输入,你期望的理想输出是什么。
-
作用:
-
问题定位: 通过查看详细日志,你可以分析出回答不佳是 Prompt 问题、知识库问题、工具问题还是模型本身的问题。
-
数据驱动优化: 标注数据(尤其是你提供的“好答案”)是极其宝贵的。
-
你可以根据这些反馈手动优化你的 Prompt、知识库内容或 Workflow 流程。
-
(高级) 这些标注数据可以被导出,用于模型的微调 (Fine-tuning)(可能需要在 Dify 之外借助其他工具完成),让模型更适应你的特定任务和语境。
-
基于反馈的迭代循环:
-
定期审查: 养成定期查看应用日志和用户反馈(标注)的习惯。
-
分析模式: 找出用户最常问的问题、AI 最容易出错的场景、哪些回答被频繁“点踩”。
-
针对性改进:
-
如果是 Prompt 问题,回到“编排”页面修改 Prompt。
-
如果是知识库覆盖不足或不准,回到“数据集”页面更新或优化知识库。
-
如果是工具使用不当,检查工具配置或 Workflow 中的工具节点逻辑。
-
如果普遍效果不佳,考虑更换更强大的 LLM 模型(但要注意成本)。
-
发布更新: 修改后,记得重新发布你的应用。
-
持续监控: 观察改进后的效果,继续收集反馈。
-
应用版本控制 (Versioning):
-
Dify 本身可能提供(或未来版本计划提供)应用版本管理功能。这意味着你可以保存应用配置的不同快照(版本)。
-
好处:
-
安全回滚: 如果你做了一个大的改动,结果发现效果变差了,可以方便地回滚到之前的某个稳定版本。
-
A/B 测试: 可以同时运行不同版本的应用,比较它们的效果(可能需要结合其他工具实现)。
-
如果 Dify 暂未提供显式版本控制: 在进行重大修改前,手动备份你的 Prompt、Workflow 配置(比如截图或导出 JSON,如果支持的话)是一个好习惯。
6.2 应用部署:API 与嵌入 (回顾与深化)
我们之前简单提到了应用的分享和部署方式,这里再稍微深入一下,特别是 API 调用。
-
API 调用详解:
-
认证方式: 调用 Dify API 时,通常需要在 HTTP 请求的 Header 中加入认证信息。最常见的是使用 Bearer Token 方式,格式如下:
Authorization: Bearer YOUR_DIFY_API_KEY
这里的 YOUR_DIFY_API_KEY 就是你在 Dify 平台为你的应用生成或选择的 API 密钥。
-
请求体 (Request Body): 你需要将用户的输入等信息放在请求体中发送给 Dify API,通常使用 JSON 格式。具体的 JSON 结构取决于你调用的是对话型应用、文本生成型应用还是 Workflow 应用的 API,需要查阅 Dify 官方提供的 API 文档。通常会包含以下字段:
-
query 或 inputs: 用户的输入内容或文本生成所需的变量值。
-
user: 用户的唯一标识符,用于区分不同用户的会话历史(对话型应用需要)。
-
conversation_id: (可选) 用于追踪同一个对话会话(对话型应用)。
-
response_mode: (可选) 指定响应模式,比如 blocking (等待完整结果返回) 或 streaming (像 ChatGPT 那样流式返回结果,体验更好)。
-
响应体 (Response Body): Dify API 返回的结果通常也是 JSON 格式,包含了 AI 生成的答案、消息 ID、会话 ID 等信息。如果是流式响应,你需要处理持续到达的数据块。
-
编程实践:
-
Python 示例 (使用 requests 库):
import requests
import json
api_key = "YOUR_DIFY_API_KEY"
api_url = "YOUR_DIFY_API_ENDPOINT" # 例如: https://api.dify.ai/v1/chat-messages
user_input = "你好,Dify!"
user_id = "test_user_123"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
data = {
"inputs": {}, # 对于文本生成,这里放变量键值对
"query": user_input, # 对于对话型
"user": user_id,
"response_mode": "blocking" # 或 "streaming"
# "conversation_id": "optional_conversation_id" # 可选
}
response = requests.post(api_url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
result = response.json()
print("AI 回答:", result.get('answer', ''))
# 处理其他返回信息,如 conversation_id
else:
print("请求失败:", response.status_code, response.text)
``` * 你需要将 `YOUR_DIFY_API_KEY` 和 `YOUR_DIFY_API_ENDPOINT` 替换成你自己的实际值,并根据应用类型调整 `data` 结构。流式响应的处理会更复杂一些。
-
Web 应用嵌入 (Embed):
-
定制化: 除了 Dify 可能提供的基础样式选项外,如果你懂一些前端知识 (CSS, JavaScript),可以通过一些技巧对嵌入的 <iframe> 或 script 生成的元素进行更深度的样式调整,使其更符合你的网站风格。但这可能需要一定的调试技巧。
6.3 监控与成本管理
当你的应用开始有真实用户使用时,监控其运行状况和成本就变得非常重要。
-
用量与性能监控:
-
Dify 仪表板: Dify 平台通常会提供一个仪表板 (Dashboard) 或统计页面,显示:
-
API 调用次数 / 消息数量: 了解应用的使用频率。
-
Token 消耗量: 成本核心指标! 按模型、按应用、按时间段统计 Token 使用情况。
-
平均响应时间: 应用处理请求的速度。
-
错误率: API 调用失败或 Workflow 执行错误的比例。
-
日志分析: 定期检查应用日志,除了优化回答质量,也要关注是否有频繁出现的错误或性能瓶颈。
-
成本管理与优化 (关键!):
-
理解 Token 计费: LLM 的使用成本主要是按 Token 计算的。输入 (Prompt) 和输出 (Completion) 都会消耗 Token。对于 RAG 应用,检索到的知识库片段也会被加入到最终发送给 LLM 的 Prompt 中,同样消耗 Token。复杂的 Workflow 可能涉及多次 LLM 调用,成本会累加。
-
估算成本: 了解你所选用的 LLM 提供商(如 OpenAI, Anthropic)的具体定价(通常是每千 Token 的价格),结合 Dify 统计的 Token 消耗量,可以估算出应用运行的成本。
-
成本优化策略 (重申与补充):
-
模型选择: 为不同复杂度的任务选择不同成本的模型。简单分类任务可能用小模型,复杂创作或推理用大模型。Workflow 中不同节点也可以使用不同模型。
-
Prompt 优化: 简洁、高效的 Prompt 可以减少输入 Token。
-
控制上下文长度: 对话型应用设置合理的记忆轮数。避免无限累积上下文。
-
优化 RAG:
-
调整 Top K,只检索最必要的片段数量。
-
优化分段策略,避免段落过长。
-
使用重排序 (Re-ranking) 模型(如果 Dify 支持或你自行集成),可以在较低 K 值检索后,再用一个轻量级模型对结果排序,选出最佳片段,兼顾效果与成本。
-
Workflow 优化:
-
减少不必要的 LLM 调用。能用规则、代码或简单工具完成的逻辑,尽量不用 LLM。
-
对于可以缓存的结果(比如不经常变化的知识查询),考虑加入缓存机制(可能需要在 Dify 外部实现)。
-
设置预算和告警: (如果平台或云服务商提供)设置成本预警,当 Token 消耗接近预算时收到通知。
6.4 安全与权限 (私有化部署尤其关注)
-
API 密钥安全:
-
严禁硬编码: 不要把 API Key 直接写在前端代码或公开的配置文件里。
-
权限分离: 为不同的应用或环境生成不同的 API Key,并设置最小必要权限。
-
定期轮换: 定期更换 API Key。
-
保密存储: 使用安全的方式存储密钥(如环境变量、专门的密钥管理服务)。
-
访问控制:
-
Dify Cloud: 通常通过用户账号体系进行访问控制。
-
私有化部署: 你需要配置 Dify 的用户管理、角色和权限,控制谁可以登录平台、创建/管理应用、访问知识库等。可能还需要配置网络层面的访问控制(如防火墙、IP 白名单)。
-
数据安全与隐私:
-
知识库数据: 确保上传到知识库的数据符合隐私规定,对敏感信息进行脱敏处理。私有化部署时,要保障存储知识库的服务器和数据库的安全。
-
用户输入数据: 用户与 AI 的交互内容可能包含敏感信息。遵守相关隐私法规(如 GDPR),明确告知用户数据用途,必要时进行脱敏或加密存储。日志记录也需注意隐私保护。
-
内容安全:
-
防止滥用: 防止用户利用你的应用生成非法、有害或不道德的内容。
-
内容过滤: 配置 Dify 或 LLM 提供商提供的内容安全过滤器(如敏感词过滤、安全审核 API),对输入和输出进行审查。
-
Prompt 注入防护: 设计健壮的 Prompt,防止恶意用户通过特殊输入“劫持”AI,使其执行非预期任务。
应用上线只是第一步,持续的管理、监控和优化,才能确保你的 Dify 应用长期、稳定、高效且安全地运行。
模块七:实用技巧、最佳实践与资源
经过前面六个模块的学习和实践,你已经掌握了 Dify 的核心功能和应用构建流程。在这个最后的模块里,老金将为你分享一些更进一步的实用技巧、总结性的最佳实践,以及在你遇到问题或想继续深入学习时可以去哪里寻求帮助。
7.1 Prompt Engineering 进阶技巧:让 AI 更懂你
Prompt 是与 LLM 沟通的桥梁,写好 Prompt 的学问很大。除了基础的清晰指令外,这里有一些进阶技巧,能让你更好地驾驭 AI:
- 明确角色扮演 (Role Play):
-
技巧: 在 System Prompt 开头就给 AI 分配一个非常具体的专家角色。
-
示例: "你是一位拥有 20 年经验的资深营销策划专家,擅长为初创科技公司制定社交媒体推广策略..." 而不是简单地说 "你是一个营销助手"。
-
效果: AI 会更倾向于使用该角色的口吻、术语和思维方式来回答问题,输出通常更专业、更贴合场景。
- 提供示例 (Few-shot Learning / In-Context Learning):
-
技巧: 在 Prompt 中直接给出 1 到 3 个完整的“输入 -> 理想输出”的范例。
-
示例 (用于情感分类):
请判断以下文本的情感是积极、消极还是中性。
文本:这家餐厅的菜太好吃了!
情感:积极
文本:等了半个小时还没上菜。
情感:消极
文本:请帮我分析这段文字的情感:[这里是用户实际输入的文字]
情感:
- 效果: AI 通过观察示例,能更快、更准确地理解你的任务要求和期望的输出格式,尤其对于复杂或定义不明确的任务效果显著。
- 思维链 (Chain of Thought - CoT):
-
技巧: 指导 AI 在给出最终答案之前,先进行一步步的逻辑推理,并把这个思考过程也作为输出的一部分(或者只在内部模拟这个过程)。
-
触发方式: 通常在 Prompt 末尾加上一句神奇的话,比如 “Let's think step by step。” 或者 “请逐步思考并解释你的推理过程。”
-
示例 (用于数学应用题): "一个农场有 10 只鸡和 8 只兔子,请问一共有多少条腿?请逐步思考。"
-
效果: 对于需要多步推理、计算或逻辑判断的问题,CoT 能显著提高 AI 的准确性,因为它强迫 AI 先把问题分解,而不是直接猜测答案。
- 明确输出格式要求 (Specify Output Format):
-
技巧: 如果你需要 AI 的输出能被程序直接处理,或者需要遵循特定的结构,请在 Prompt 中明确要求。
-
示例:
-
"请将以下信息提取出来,并以 JSON 格式输出,包含 'name', 'email', 'phone' 三个字段。"
-
"请将这篇文章的要点总结成一个无序列表 (Markdown 格式)。"
-
"请生成 5 个营销口号,每个一行。"
-
效果: 减少后续的数据清洗和格式转换工作,提高自动化处理效率。
- 利用分隔符清晰界定不同部分 (Use Delimiters):
-
技巧: 当 Prompt 中包含多个不同类型的信息(如指令、上下文、用户输入、示例)时,使用清晰的分隔符(如 ```, ###, ---, <instruction>, </instruction> 等)将它们隔开。
-
示例:
### 指令 ###
根据提供的上下文信息,回答用户的问题。
### 上下文 ###
Dify 是一个 LLMOps 平台...
### 用户问题 ###
{{user_query}}
### 回答 ###
- 效果: 帮助 AI 更准确地区分指令和待处理的数据,减少混淆。
- 迭代!迭代!再迭代! (Iterate!):
- 黄金法则: 没有完美的 Prompt,只有不断优化的 Prompt。写完初版 Prompt 后,一定要通过大量的测试用例来检验效果,然后根据 AI 的“跑偏”之处,回头修改 Prompt。这个过程可能需要反复多次。
7.2 知识库构建最佳实践:喂给 AI 高质量的“食粮”
知识库的质量直接决定了 RAG 应用的效果上限。以下是一些建议:
- 内容质量是基石 (Quality First):
-
确保你上传的文档内容本身是准确、最新、清晰、无歧义的。避免上传草稿、过时版本或包含大量错误信息的文件。
-
结构化优于非结构化: 如果可能,尽量使用带有清晰标题、段落、列表的文档(如 Markdown, DOCX),而不是纯粹的大块文本或扫描效果差的 PDF。
- 为检索优化内容 (Optimize for Retrieval):
-
短小精悍原则: 相比于一个包含多个主题的长段落,多个聚焦单一主题的短段落更容易被精确检索。可以利用 Dify 的分段设置,或在源头就将文档拆分好。
-
包含关键词和同义词: 确保文本中自然地包含了用户可能用来提问的关键词及其同义词。
-
添加明确的问答对 (Q&A Pairs): 对于非常重要或极其常见的 FAQ,直接在知识库中添加标准的“问题-答案”对,往往比依赖段落检索效果更好、更稳定。
- 数据处理与索引策略 (Processing Strategy):
-
尝试不同分段策略: Dify 的默认分段通常不错,但对于特殊格式(如代码文档、表格密集型文档),可能需要调整分段大小和重叠,并通过预览检查效果。
-
优先混合检索 (Hybrid Search): 如果你的 Dify 版本支持,优先选用混合检索模式,它可以结合向量检索(语义相似)和关键词检索(精确匹配)的优点。
-
选择合适的 Embedding 模型: 不同的 Embedding 模型在不同语言、不同领域的表现可能不同。如果 Dify 允许选择,可以尝试不同的模型看效果(注意成本差异)。
- 持续维护与更新 (Keep it Fresh):
-
知识是会过期的!建立一个定期审查和更新知识库内容的机制。移除过时文档,补充最新信息。
-
根据应用日志中用户问得多的、但知识库未能覆盖的问题,针对性地补充内容。
- 元数据 (Metadata) 的妙用 (If Supported):
-
一些高级的 RAG 系统允许你为知识库文档或片段添加元数据(比如文档来源、创建日期、所属部门、标签等)。
-
作用: 在检索时,可以结合元数据进行过滤。例如,“只在‘HR 政策’分类下的文档中搜索关于年假的规定”。这能大大提高检索的精确度。留意 Dify 是否以及如何支持元数据功能。
7.3 Workflow 设计原则:构建健壮的应用流程
可视化 Workflow 虽然强大,但也容易变得混乱。遵循一些设计原则能让你的 Workflow 更清晰、更可靠:
- 保持简洁与模块化 (Simplicity & Modularity):
-
单一职责: 尽量让每个节点只做好一件事。避免在一个 LLM 节点里塞入过多的逻辑判断和任务。
-
分解复杂流程: 将一个长而复杂的 Workflow 拆分成几个逻辑上独立的子流程(如果 Dify 支持子流程或 Workflow 调用 Workflow 的功能),或者至少在画布上清晰地组织和分组节点。
-
添加注释: 利用 Dify 可能提供的注释或节点标签功能,解释每个节点或流程块的作用。
- 从主干到分支 (Trunk to Branches):
-
先搭建能跑通核心、最常见路径的“主干”流程。
-
然后逐步添加处理各种异常情况、边界条件、用户特殊需求的“分支”逻辑(比如使用 IF/ELSE 节点)。
- 充分测试所有路径 (Test All Paths):
- 设计测试用例时,要确保覆盖到 Workflow 中的每一个可能的分支。测试正常情况,也要测试各种异常输入和边界条件。
- 优雅地处理失败 (Handle Failures Gracefully):
-
工具调用可能失败: API 超时、Key 失效、网络问题。在工具节点后应该有相应的处理逻辑(比如重试、走备选方案、或向用户报告错误)。
-
LLM 可能拒绝回答或输出格式错误: 在 LLM 节点后检查输出是否符合预期,是否包含拒绝回答的标识,并进行相应处理。
-
利用 IF/ELSE 或错误处理节点 (如果提供) 来捕获和处理这些异常情况,而不是让 Workflow 意外中断。
- 考虑成本与延迟 (Cost & Latency):
-
Workflow 中的每一次 LLM 调用、每一次工具调用(特别是付费 API)都会产生成本和时间延迟。
-
设计 Workflow 时要有成本意识。审视每个节点是否都是必需的?能否用更简单、成本更低的方式实现?
-
对于对响应时间要求高的应用,尽量减少串行的、耗时长的节点调用。考虑并行处理(如果 Dify 支持并行节点)。
7.4 保持学习:跟上 Dify 的步伐
Dify 是一个活跃发展的开源项目,功能和界面可能不断更新。要保持你的技能不过时:
-
官方文档 (Official Documentation): https://docs.dify.ai/ (选择中文语言) 这是最权威、最及时的信息来源。务必常看!
-
GitHub 仓库 (GitHub Repository): https://github.com/langgenius/dify
-
关注 Releases (发布说明):了解每个新版本带来了哪些功能、修复了哪些 Bug。
-
查看 Issues (问题跟踪):了解其他用户遇到了什么问题,或者社区正在讨论哪些新功能需求。
-
(可选) 查看代码: 如果你有技术背景,可以直接看代码了解实现细节。
- 官方社区 (Community):
-
加入 Dify 的 Discord 频道或其他官方沟通渠道(微信群等)。
-
与其他用户交流经验、分享技巧、寻求帮助。
-
参与社区讨论,了解最新的发展动态和最佳实践。
- 关注 Dify 官方博客 / 社交媒体: 获取官方发布的新闻、教程和案例研究。
7.5 寻求帮助与资源
遇到问题卡壳了怎么办?
-
先查官方文档! 很多问题文档里已经有答案。特别是 FAQ 和 Troubleshooting 部分。
-
搜索 GitHub Issues: 看看是否有人遇到过和你类似的问题,并且已经有了解决方案或讨论。
-
在官方社区提问:
-
清晰描述问题: 你想做什么?遇到了什么具体问题?错误信息是什么?
-
提供上下文: 你使用的 Dify 版本(云版还是私有部署版本号)?相关配置截图(注意打码敏感信息)?你尝试过哪些解决方法?
-
礼貌提问,耐心等待。 社区成员和官方人员会尽力帮助你。
- 搜索网络教程和博客: 像老金你这样的自媒体作者创作的教程,或者其他技术博客,也可能分享了特定问题的解决方案或实战经验。
结语:开启无限可能
老金我呕心沥血整理的这份超过一万字的 Dify 超详细保姆级教程,到这里就告一段落了。相信只要你跟着这份教程,一步一个脚印地学习和实践,哪怕是从零开始的小白,也一定能够掌握 Dify 这款强大的 AI 应用开发利器,从创建第一个简单的聊天机器人,到构建集成知识库、调用外部工具、编排复杂工作流的高级应用。
Dify 为我们这些不擅长编程但又渴望拥抱 AI 力量的普通人,打开了一扇通往无限可能的大门。它不仅仅是一个工具,更是一种赋能,让我们能够将创意快速转化为实际的 AI 应用,去解决真实世界的问题,去提升效率,去创造价值。
当然,AI 的世界日新月异,Dify 本身也在快速迭代进化。今天你所学的知识,明天可能就有新的功能或更好的实践方式出现。因此,最重要不是记住每一个按钮的名字和位置,而是理解其背后的核心原理(如 RAG、Agent、Workflow 的思想),并保持一颗持续学习和动手实践的心。
现在,理论学习已经足够,是时候打开 Dify,去创造真正属于你自己的 AI 应用了! 无论是想做一个个人效率助手,还是为你的业务打造一个智能客服,或是探索更有创意的 AI 应用场景,放手去做吧!
如果在你的 AI 应用构建之旅中遇到任何趣事、难题或者新的发现,别忘了查阅文档、利用社区资源,当然,也非常欢迎继续关注老金我,期待我后续可能带来的更多 Dify 实战案例和进阶技巧分享。
祝大家在 Dify 的世界里,玩得开心,学有所成,创造出令人惊叹的 AI 应用!