基于 Dify 低代码平台开发 AI 应用全指南:从入门到生产部署

1. 引言:AI 应用开发的痛点与 Dify 的解决方案
在人工智能技术飞速发展的今天,企业和开发者对 AI 应用的需求日益增长。然而,传统 AI 应用开发面临着诸多痛点:一是技术门槛高,需要掌握大模型 API 调用、prompt 工程、知识库构建等多领域知识;二是开发周期长,从需求分析到功能落地往往需要数周甚至数月;三是维护成本高,模型迭代、数据更新、权限管理等工作繁琐;四是集成难度大,不同模型、工具、数据源的整合需要大量定制化开发。
Dify 作为一款开源低代码 AI 应用开发平台,恰好解决了这些痛点。它具备以下核心优势:
- 低代码可视化开发:通过拖拽式界面设计应用流程,无需复杂编码即可快速搭建 AI 应用;
- 多模型无缝集成:支持 OpenAI、Anthropic、阿里云通义千问、字节跳动火山大模型等主流 API 模型,同时兼容 Llama 3、Qwen、Mistral 等开源模型的本地部署;
- 内置检索增强生成(RAG):一键创建私有知识库,解决大模型 "幻觉" 问题,提升回答准确性;
- 灵活的工作流引擎:支持复杂业务逻辑设计,可串联模型调用、数据处理、第三方工具集成等步骤;
- 完善的插件生态:提供天气查询、数据库连接、邮件发送等常用插件,同时支持自定义插件开发;
- 全流程管理能力:涵盖应用开发、测试、部署、监控、迭代的完整生命周期。
本文将以 "理论 + 实战" 的形式,带领读者从 Dify 环境搭建开始,逐步开发文本摘要、私有知识库问答、多模态图片分析三类典型 AI 应用,并讲解工作流设计、插件开发、生产部署与优化等高级内容,最终帮助读者掌握基于 Dify 快速构建企业级 AI 应用的能力。
2. Dify 核心概念与架构解析
在开始开发前,我们需要先理解 Dify 的核心概念与架构设计,这将帮助我们更高效地使用平台。
2.1 核心概念
- 应用(Application):Dify 的开发成果载体,根据功能可分为文本生成、问答、多模态交互等类型,每个应用包含 prompt 配置、模型选择、功能模块等核心组件。
- Prompt 工程:Dify 提供可视化 prompt 编辑器,支持变量注入、条件判断、模板管理,帮助开发者设计高质量的模型指令,提升 AI 响应效果。
- 知识库(Knowledge Base):用于存储私有数据(如 PDF、Word、TXT 文档),通过 RAG 技术将知识库内容与大模型结合,实现基于私有数据的精准问答。
- 工作流(Workflow):可视化流程设计工具,支持拖拽式添加 "模型调用"" 数据检索 ""工具执行"" 条件分支 " 等节点,实现复杂业务逻辑。
- 插件(Plugin):扩展 Dify 功能的组件,分为 "工具插件"(如天气查询、地图服务)和 "数据源插件"(如 MySQL、Elasticsearch),支持自定义开发。
- API 密钥(API Key):应用对外提供服务的认证凭证,通过 API 密钥可将 Dify 应用集成到自有系统(如网站、APP、小程序)。
2.2 架构设计
Dify 采用分层架构设计,确保系统的灵活性、可扩展性和稳定性,架构分为四层:
- 前端层:基于 React 开发的可视化界面,包含应用管理、知识库管理、工作流设计、插件配置等模块,提供直观的操作体验。
- 后端服务层:采用 Python FastAPI 框架开发,负责处理业务逻辑,包括用户认证、应用配置管理、模型调用调度、知识库检索等核心功能。
- 模型集成层:提供统一的模型调用接口,兼容 API 模型(如 OpenAI GPT-4)和本地部署模型(如 Llama 3),支持模型负载均衡、超时重试、缓存管理。
- 数据存储层:采用多数据库协同存储,PostgreSQL 存储应用配置、用户数据,Redis 存储缓存数据,MinIO 存储知识库文档、图片等文件数据。
2.3 支持的模型类型
Dify 支持两类模型,满足不同场景需求:
- API 模型:无需本地部署,通过 API 调用的模型,如 OpenAI GPT-3.5/4、Anthropic Claude 3、阿里云通义千问 Plus、百度文心一言 4.0。
- 开源模型:可本地部署的模型,支持通过 Ollama、vLLM、LangChain 等框架集成,如 Meta Llama 3(70B)、阿里 Qwen(14B)、Mistral(8x7B)、智谱清言 GLM-4。
3. Dify 环境准备:部署与初始化
Dify 提供两种部署方式:Docker Compose 快速部署(适合新手)和本地源码部署(适合二次开发),本节将详细讲解两种部署流程。
3.1 Docker Compose 快速部署(推荐)
Docker Compose 部署无需复杂的依赖配置,只需几分钟即可完成 Dify 启动,适合快速体验和生产环境使用。
3.1.1 前置条件
- 操作系统:Linux(Ubuntu 20.04+/CentOS 7+)、Windows 10+(WSL2)、macOS 12+
- 软件依赖:Docker 20.10+、Docker Compose 2.0+
- 硬件要求:至少 2 核 CPU、4GB 内存、20GB 磁盘空间(若部署开源模型,需 16GB + 内存)
3.1.2 部署步骤
- 安装 Docker 与 Docker Compose
以 Ubuntu 22.04 为例,执行以下命令安装依赖:
拉取 Dify 部署配置文件
配置环境变量(可选)
编辑.env文件,修改关键配置(如端口、数据库密码):
常用配置项说明:
- PORT: Dify 访问端口,默认 8000
- DB_PASSWORD: PostgreSQL 数据库密码,建议修改为复杂密码
- REDIS_PASSWORD: Redis 密码,建议修改
- STORAGE_TYPE: 文件存储类型,默认 local(本地存储),可改为 s3/minio
- 启动 Dify 服务
启动成功后,输出应显示所有服务(api、web、db、redis、worker 等)状态为Up
界面展示 docker-compose ps 命令执行结果,包含 7 个服务:dify-api、dify-web、dify-db、dify-redis、dify-worker、dify-nginx、dify-websocket,所有服务状态均为 "Up (healthy)",表示启动成功。
- 访问 Dify 平台
打开浏览器,输入http://服务器IP:端口(如http://192.168.1.100:8000),进入 Dify 登录界面,如图 21所示:
图 1:Dify 登录界面

界面左侧为 Dify 品牌标识和产品介绍,右侧为登录表单,包含 "邮箱" 和 "密码" 输入框,下方有 "忘记密码" 和 "注册账号" 按钮,首次访问需点击 "注册账号" 创建管理员账户。
首次访问需注册管理员账户,填写邮箱、密码后完成注册,注册成功后自动登录到 Dify 控制台主界面,如图 2所示:
图 2:Dify 控制台主界面

界面顶部为导航栏(包含首页、应用、知识库、工作流、插件、设置),左侧为功能菜单,中间为控制台首页,显示应用数量、知识库数量、最近访问的应用列表,右侧为快速操作按钮(新建应用、新建知识库)。
3.2 本地源码部署(适合二次开发)
若需要对 Dify 进行二次开发(如定制界面、扩展功能),可采用本地源码部署方式。
3.2.1 前置条件
- 软件依赖:Python 3.10+、Node.js 16+、npm 8+、PostgreSQL 14+、Redis 6+
- 开发工具:Git、PyCharm(或 VS Code)、WebStorm
3.2.2 部署步骤
拉取源码
部署后端服务
部署前端服务
访问服务
前端服务启动后,访问http://localhost:3000,后端服务地址为http://localhost:5001。
3.3 常见部署问题解决
- 端口占用问题
若启动时提示 "端口已被占用",可修改.env文件中的PORT配置(Docker 部署)或启动命令中的--port参数(源码部署),选择未被占用的端口(如 8001、5002)。
- 服务启动失败
执行docker-compose logs -f查看日志,定位失败原因:
- 若数据库连接失败,检查.env文件中DB_HOST、DB_PORT、DB_PASSWORD配置是否正确;
- 若 Redis 连接失败,检查REDIS_HOST、REDIS_PORT、REDIS_PASSWORD配置;
- 若依赖缺失,执行docker-compose down && docker-compose up -d --build重新构建服务。
- 浏览器无法访问
- 检查服务器防火墙是否开放 Dify 端口(如 8000),执行sudo ufw allow 8000开放端口;
- 若为云服务器,检查安全组规则是否允许对应端口的入站流量。
4. 实战一:开发文本摘要 AI 应用(基础应用)
文本摘要应用是最基础的 AI 应用之一,功能为 "用户输入长文本,AI 自动生成简洁摘要"。本节将详细讲解基于 Dify 开发文本摘要应用的完整流程,包括应用创建、prompt 设计、模型配置、API 集成等步骤。
4.1 需求分析与设计
4.1.1 功能需求
- 支持用户输入任意长度的文本(如新闻、报告、文章);
- AI 自动提取文本核心信息,生成简洁摘要(长度可配置);
- 支持摘要长度调整(短 / 中 / 长);
- 提供 API 接口,可集成到第三方系统。
4.1.2 技术选型
- 模型:OpenAI GPT-3.5 Turbo(性价比高,适合文本生成场景);
- 交互方式:Web 界面 + API 接口;
- 部署方式:基于 Dify 平台开发,无需单独部署前端。
4.2 开发步骤
4.2.1 创建应用
- 登录 Dify 控制台,点击左侧导航栏 "应用"→"新建应用",进入应用创建界面
界面顶部为 "新建应用" 标题,中间为应用类型选择区,包含 "文本生成"、"问答"、"多模态交互" 三个选项,每个选项下方有功能描述;右侧为应用配置区,包含 "应用名称"、"应用描述"、"应用图标" 输入框。
- 选择应用类型为 "文本生成",填写应用信息:
- 应用名称:文本摘要工具;
- 应用描述:输入长文本,自动生成简洁摘要,支持摘要长度调整;
- 应用图标:选择默认图标或上传自定义图标。
- 点击 "创建" 按钮,完成应用创建,进入应用开发界面(包含 "prompt 设计"、"模型配置"、"交互设置"、"API 配置" 四个标签页)。
4.2.2 设计 prompt(核心步骤)
prompt 设计直接影响 AI 摘要的质量,需明确模型的角色、任务、输出格式和约束条件。
- 进入 "prompt 设计" 标签页,Dify 提供可视化 prompt 编辑器,支持 "系统提示" 和 "用户提示" 两部分配置:
- 系统提示:定义模型的角色和任务规则;
- 用户提示:定义用户输入的内容格式。
- 设计系统提示:
- 设计用户提示:
在编辑器中点击 "添加变量",创建两个变量:
最终用户提示模板为:
配置完成后的 prompt 设计界面
界面左侧为 prompt 编辑器,分为 "系统提示" 和 "用户提示" 两部分,系统提示区域显示上述设计的规则文本,用户提示区域显示包含两个变量的模板;右侧为变量管理区,显示text和summary_length两个变量的配置信息(类型、提示语、默认值),下方有 "预览" 按钮可查看用户输入界面效果。
- 变量 1:text(文本内容),类型为 "长文本",提示用户 "请输入需要摘要的文本内容";
- 变量 2:summary_length(摘要长度),类型为 "下拉选择",选项为 "短摘要(100 字以内)"、"中摘要(100-300 字)"、"长摘要(300 字以上)",默认值为 "中摘要(100-300 字)"。
4.2.3 配置模型
- 进入 "模型配置" 标签页,选择模型类型为 "API 模型",然后选择 "OpenAI"→"GPT-3.5 Turbo"
界面顶部为模型类型选择区(API 模型 / 开源模型),中间为模型列表(OpenAI、Anthropic、阿里云等),当前选中 "OpenAI GPT-3.5 Turbo";右侧为模型参数配置区,包含 "API 密钥"、"温度"、"最大 Token 数"、"超时时间" 等参数输入框。
- 配置模型参数:
- API 密钥:输入你的 OpenAI API 密钥(获取地址:https://platform.openai.com/api-keys);
- 温度(Temperature):设置为 0.3(温度越低,输出越稳定、准确,适合摘要场景);
- 最大 Token 数:设置为 1024(确保有足够的 Token 生成摘要,GPT-3.5 Turbo 支持最大 4096 Token);
- 超时时间:设置为 30 秒;
- 频率惩罚:设置为 0(避免模型过度避免重复内容,影响摘要完整性);
- 存在惩罚:设置为 0。
- 点击 "测试连接" 按钮,验证模型是否能正常调用,若提示 "连接成功",则模型配置完成。
4.2.4 测试应用
- 点击应用开发界面顶部的 "测试" 按钮,进入应用测试界面
界面左侧为用户输入区,包含 "文本内容" 输入框(多行)和 "摘要长度" 下拉选择框;右侧为 AI 响应区,显示 "等待输入" 提示;底部有 "提交" 和 "清空" 按钮。
- 输入测试文本(示例:一段关于人工智能发展的新闻):
- 选择摘要长度为 "中摘要(100-300 字)",点击 "提交" 按钮,等待 3-5 秒后,AI 生成摘要:
- 优化调整:若摘要存在信息遗漏或冗余,可返回 "prompt 设计" 界面修改系统提示(如增加 "需包含各领域具体数据" 的规则),重新测试直至满足需求。
4.2.5 集成 API(对接第三方系统)
Dify 为每个应用自动生成 API 接口,可将文本摘要工具集成到网站、APP、小程序等第三方系统。
- 进入 "API 配置" 标签页,获取 API 信息:
- API 地址:http://你的Dify地址/v1/applications/你的应用ID/completions;
- 请求方式:POST;
- 认证方式:Bearer Token(API 密钥在页面中点击 "生成" 按钮获取)。
- 编写 Python API 调用代码(示例):
- 运行代码,查看输出结果(与测试界面结果一致),如图 8 所示:
图 8:API 调用代码运行结果界面
界面为 Python 终端运行结果,显示 "文本摘要结果:",下方为 AI 生成的中摘要内容,无错误信息,表明 API 调用成功。
- 其他语言调用示例(以 JavaScript 为例):
4.2.6 前端界面定制(可选)
若需要修改应用的前端界面(如调整颜色、添加公司 logo),可通过 Dify 的 "交互设置" 标签页进行配置:
- 界面标题:修改应用在 Web 界面的显示标题;
- 主题颜色:选择或自定义界面主色调;
- logo 设置:上传公司 logo,替换默认图标;
- 提示文本:修改用户输入框的提示语(如 "请粘贴需要摘要的文章内容");
- 按钮文本:修改 "提交"、"清空" 按钮的显示文本。
4.3 应用发布与分享
应用开发完成后,可通过 Dify 的 "发布" 功能对外提供服务:
- 点击应用开发界面顶部的 "发布" 按钮,选择发布环境(测试环境 / 生产环境);
- 配置访问权限(公开访问 / 密码保护 / 指定用户访问);
- 生成访问链接,用户可通过链接直接使用 Web 版应用,或通过 API 集成到第三方系统。
5. 实战二:开发私有知识库问答 AI 应用(RAG 应用)
在实际应用中,很多 AI 问答场景需要基于企业私有数据(如产品手册、内部文档、行业报告),此时需要结合检索增强生成(RAG)技术。本节将开发一个 "产品手册问答 AI 应用",支持用户基于上传的产品手册提问,AI 结合手册内容给出精准回答。
5.1 需求分析与设计
5.1.1 功能需求
- 支持上传产品手册(PDF/Word/TXT 格式);
- 自动处理文档(分块、嵌入、存储);
- 用户可针对产品手册内容提问;
- AI 结合手册内容生成回答,并标注引用来源;
- 支持文档更新、删除、检索测试。
5.1.2 技术原理
RAG 技术流程:
- 文档处理:将上传的文档分割为小文本块(避免超出模型 Token 限制);
- 文本嵌入:使用嵌入模型(如 OpenAI Embeddings)将文本块转换为向量;
- 向量存储:将向量存储到向量数据库(Dify 内置 Chroma 向量库);
- 检索过程:用户提问后,将问题转换为向量,在向量库中检索相似度最高的文本块;
- 生成回答:将检索到的文本块作为上下文,传递给大模型,生成基于私有数据的回答。
5.2 开发步骤
5.2.1 创建知识库
首先需要创建知识库并上传产品手册,Dify 提供完整的知识库管理功能。
- 登录 Dify 控制台,点击左侧导航栏 "知识库"→"新建知识库",进入知识库创建界面
界面包含 "知识库名称"、"知识库描述" 输入框,"文档处理设置"(分块策略、嵌入模型),"向量数据库" 选择(内置 Chroma / 外部向量库如 Pinecone),下方有 "创建" 按钮。
- 配置知识库信息:
- 知识库名称:产品手册知识库;
- 知识库描述:存储产品手册文档,用于产品问答 AI 应用;
- 分块策略:选择 "按段落分块",块大小设置为 500 字符,重叠率设置为 50 字符(确保上下文连贯性);
- 嵌入模型:选择 "OpenAI Embeddings"(适合英文和中文,准确率高);
- 向量数据库:选择 "内置 Chroma"(无需额外部署,适合快速开发)。
- 点击 "创建" 按钮,完成知识库创建,进入知识库文档管理界面。
- 上传产品手册文档:
点击 "上传文档" 按钮,选择本地的产品手册 PDF 文件(示例:某款智能手机产品手册),进入文档上传与处理界面
界面左侧显示上传的文档名称、大小、格式,右侧为文档处理进度(上传中→解析中→分块中→嵌入中→完成),下方显示处理后的文本块数量、嵌入模型、分块策略信息。
文档处理完成后,系统会显示 "处理成功",并列出处理后的文本块数量(如 100 个文本块)。
5.2.2 创建问答应用
- 点击左侧导航栏 "应用"→"新建应用",选择应用类型为 "问答",填写应用名称(产品手册问答 AI)和描述,点击 "创建"。
- 进入应用开发界面,首先进行 "prompt 设计":
- 系统提示:
- 用户提示:
创建变量question(问题内容),类型为 "短文本",提示用户 "请输入关于产品手册的问题"。
5.2.3 配置 RAG(关联知识库)
- 进入应用开发界面的 "知识库配置" 标签页,点击 "关联知识库",选择之前创建的 "产品手册知识库"
界面顶部为知识库选择区,当前选中 "产品手册知识库";中间为检索参数配置区,包含 "检索 Top K"、"相似度阈值"、"上下文拼接方式";右侧为检索测试区,可输入测试问题,查看检索结果。
- 配置检索参数:
- 检索 Top K:设置为 5(检索相似度最高的 5 个文本块,确保覆盖足够的上下文);
- 相似度阈值:设置为 0.7(过滤相似度低于 0.7 的文本块,避免无关信息干扰);
- 上下文拼接方式:选择 "按相似度排序拼接"(将检索到的文本块按相似度从高到低拼接);
- 上下文最大长度:设置为 2000 字符(避免超出模型 Token 限制)。
- 检索测试:
在检索测试区输入问题(如 "这款手机的电池容量是多少?"),点击 "检索" 按钮,系统会显示检索到的文本块(包含内容、相似度得分、来源),验证检索结果是否准确。
5.2.4 配置模型
进入 "模型配置" 标签页,选择模型为 "OpenAI GPT-3.5 Turbo",配置参数:
- API 密钥:输入 OpenAI API 密钥;
- 温度:设置为 0.2(问答场景需准确性,温度较低);
- 最大 Token 数:设置为 1500;
- 其他参数:默认即可。
5.2.5 测试应用
- 点击 "测试" 按钮,进入应用测试界面
界面左侧为用户提问区,包含 "问题" 输入框和 "提交" 按钮;右侧为 AI 回答区,显示回答内容和引用来源;下方为 "相关文档" 列表,显示检索到的文本块。
- 输入测试问题:"这款智能手机支持快充吗?快充功率是多少?",点击 "提交" 按钮。
- AI 生成回答(示例):
回答下方会显示引用的文档片段,用户可查看原文验证准确性。
- 测试边界场景:
- 输入超出手册范围的问题(如 "这款手机的竞争对手有哪些?"),AI 应提示 "该问题不在产品手册范围内,无法回答";
- 输入模糊问题(如 "手机怎么充电?"),AI 应结合手册中的充电说明,给出详细步骤。
5.2.6 API 集成(带 RAG 的 API 调用)
与文本摘要应用相比,带 RAG 的 API 调用无需额外配置,Dify 会自动处理检索流程,只需在请求体中指定知识库 ID 即可。
Python API 调用代码示例:
运行代码,输出结果包含回答和引用来源,与 Web 测试界面一致。
5.2.7 知识库管理
Dify 支持知识库的全生命周期管理:
- 文档更新:点击知识库中的 "上传文档",可上传新版本的产品手册,系统会自动替换旧文档;
- 文档删除:选择需要删除的文档,点击 "删除" 按钮,系统会删除文档及对应的向量数据;
- 检索优化:若检索结果不准确,可调整分块策略(如减小块大小)、更换嵌入模型(如使用中文优化的嵌入模型);
- 权限管理:设置知识库访问权限(仅自己可见 / 团队可见 / 所有用户可见)。
5.3 高级配置:优化 RAG 效果
若 RAG 问答效果不理想(如回答不准确、引用错误),可通过以下方式优化:
- 分块策略优化:
- 对于 PDF 文档,若包含大量表格,选择 "按页面分块";
- 对于长文档,块大小设置为 300-500 字符,重叠率设置为 50-100 字符;
- 嵌入模型优化:
- 中文文档推荐使用 "通义千问 Embeddings" 或 "文心一言 Embeddings",准确率高于 OpenAI Embeddings;
- 检索参数优化:
- 若回答遗漏信息,增大 "检索 Top K"(如从 5 调整为 8);
- 若回答包含无关信息,提高 "相似度阈值"(如从 0.7 调整为 0.8);
- Prompt 优化:
- 在系统提示中明确 "优先使用检索到的上下文,若上下文不足,告知用户无法回答";
- 要求模型 "在回答中逐点引用上下文,每个引用标注具体页码和段落"。
6. 实战三:开发多模态图片内容分析 AI 应用
随着多模态模型(如 GPT-4V、Claude 3 Vision)的发展,AI 应用已从纯文本扩展到图片、音频、视频等领域。本节将开发一个 "图片内容分析 AI 应用",支持用户上传图片,AI 分析图片内容并生成描述,同时回答与图片相关的问题。
6.1 需求分析与设计
6.1.1 功能需求
- 支持上传图片(JPG/PNG 格式,最大 10MB);
- AI 自动分析图片内容(场景、物体、文字、颜色等);
- 生成图片详细描述;
- 支持用户针对图片提问(如 "图片中的物体是什么颜色?"" 图片中有多少人?");
- 支持图片历史记录查看。
6.1.2 技术选型
- 多模态模型:OpenAI GPT-4V(支持图片分析,准确率高);
- 图片存储:Dify 内置 MinIO 存储服务;
- 交互方式:Web 界面(支持图片上传)+ API 接口。
6.2 开发步骤
6.2.1 配置多模态模型
首先需要在 Dify 中配置多模态模型(GPT-4V),确保支持图片分析功能。
- 登录 Dify 控制台,点击左侧导航栏 "设置"→"模型管理"→"添加模型",进入模型配置界面,
界面顶部为模型类型选择(API 模型 / 开源模型),当前选择 "API 模型"→"OpenAI"→"GPT-4V (Vision)";中间为模型参数配置区,包含 "API 密钥"、"最大 Token 数"、"超时时间";下方为 "图片处理设置"(支持的图片格式、最大大小)。
- 配置模型参数:
- API 密钥:输入 OpenAI API 密钥(需确保账号已开通 GPT-4V 权限);
- 最大 Token 数:设置为 2048;
- 超时时间:设置为 60 秒(图片分析耗时较长);
- 支持的图片格式:勾选 JPG、PNG;
- 最大图片大小:设置为 10MB。
- 点击 "保存" 按钮,完成多模态模型配置。
6.2.2 创建多模态应用
- 点击左侧导航栏 "应用"→"新建应用",选择应用类型为 "多模态交互",填写应用名称(图片内容分析 AI)和描述,点击 "创建",进入应用创建界面
界面包含 "应用名称"、"应用描述" 输入框,"模型选择"(已选择 GPT-4V),"交互设置"(图片上传功能开启、问题输入框配置),下方有 "创建" 按钮。
- 配置应用交互设置:
- 开启 "图片上传功能",设置支持的图片格式(JPG/PNG)和最大大小(10MB);
- 添加变量:
- image:类型为 "图片",提示用户 "请上传需要分析的图片";
- question:类型为 "短文本",提示用户 "请输入关于图片的问题(可选)"。
6.2.3 设计 prompt
多模态 prompt 需要包含图片处理指令和文本生成规则,进入 "prompt 设计" 标签页:
- 系统提示:
用户提示:
6.2.4 测试应用
- 点击 "测试" 按钮,进入多模态应用测试界面
界面左侧为用户交互区,包含 "图片上传" 按钮(显示 "点击上传或拖拽文件")、"问题输入框"、"提交" 按钮;右侧为 AI 响应区,显示 "等待上传图片" 提示;下方为图片预览区(上传后显示)。
- 上传测试图片(示例:一张包含 "红色苹果、黄色香蕉、绿色橙子" 的水果静物图),输入问题 "图片中有哪些水果?分别是什么颜色?",点击 "提交" 按钮。
- 等待 10-20 秒(GPT-4V 分析图片耗时较长),AI 生成分析结果:
- 测试其他场景:
- 上传包含文字的图片(如书籍封面),AI 应识别并转录文字内容;
- 上传人物图片,AI 应描述人物数量、动作、穿着;
- 上传模糊图片,AI 应提示 "图片内容不清晰,无法准确分析"。
6.2.5 API 集成(多模态 API 调用)
多模态 API 调用需要处理图片文件(二进制数据),需将图片转换为 Base64 编码或通过表单上传。Dify 支持两种方式,本节以 Base64 编码为例。
Python API 调用代码示例:
代码说明:
- 图片处理:使用base64库将图片文件转换为 Base64 编码,确保 API 能正确解析;
- 请求体结构:image字段包含type(base64)、data(Base64 编码字符串)、filename(文件名);
- 超时设置:图片分析耗时较长,设置 60 秒超时。
7. Dify 高级功能:工作流与插件开发
Dify 的工作流和插件功能可满足复杂业务场景需求,本节将介绍如何通过工作流设计复杂流程,以及如何开发自定义插件。
7.1 工作流设计:可视化流程编排
工作流支持拖拽式设计复杂业务逻辑,例如 "用户提问→检索知识库→调用模型→发送邮件通知" 的完整流程。
7.1.1 工作流设计步骤
- 登录 Dify 控制台,点击左侧导航栏 "工作流"→"新建工作流",进入工作流设计界面
界面左侧为节点库(包含 "触发节点"、"模型节点"、"知识库节点"、"工具节点"、"条件节点"、"输出节点");中间为画布,用于拖拽节点并连接;右侧为节点配置区,显示当前选中节点的参数配置。
- 设计 "用户提问→知识库检索→模型回答→邮件通知" 流程:
- 添加触发节点:拖拽 "用户输入触发" 节点到画布,配置触发参数(用户输入变量:question);
- 添加知识库节点:拖拽 "知识库检索" 节点,连接到触发节点,配置知识库 ID 和检索参数(Top K=5);
- 添加模型节点:拖拽 "模型调用" 节点,连接到知识库节点,选择模型(GPT-3.5 Turbo),配置 prompt(包含用户问题和检索到的上下文);
- 添加工具节点:拖拽 "邮件发送" 节点,连接到模型节点,配置邮件参数(收件人、主题、内容模板,内容包含模型回答);
- 添加输出节点:拖拽 "结果输出" 节点,连接到模型节点,配置输出参数(模型回答);
- 连接节点:用连接线将各节点按流程顺序连接,形成完整工作流。
- 点击 "测试" 按钮,输入测试问题,验证工作流是否正常执行(检索知识库→生成回答→发送邮件)。
7.1.2 工作流应用场景
- 多步骤数据处理:如 "用户上传 Excel→数据提取→数据分析→生成报告→发送报告";
- 条件分支逻辑:如 "根据用户问题类型,分支到不同知识库(产品问题→产品知识库,技术问题→技术知识库)";
- 定时任务:如 "每天定时检索行业新闻→生成摘要→推送至企业微信群"。
7.2 自定义插件开发:扩展 Dify 功能
Dify 支持自定义插件开发,若内置插件无法满足需求,可开发专属插件(如对接企业内部系统、第三方 API)。本节将开发一个 "天气查询插件",支持根据城市名称查询实时天气。
7.2.1 插件开发步骤
- 创建插件项目
插件采用 Python 开发,需遵循 Dify 插件开发规范,项目结构如下:
- 编写插件核心逻辑(main.py)
使用第三方天气 API(如高德天气 API)实现天气查询功能:
- 编写配置文件(config.py)
- 在 Dify 中集成插件
- 登录 Dify 控制台,点击左侧导航栏 "插件"→"上传插件",选择插件项目压缩包(ZIP 格式)
界面包含 "插件压缩包上传" 区域、"插件信息预览"(显示 manifest.json 中的名称、描述、参数)、"插件测试" 区域(输入城市名称,测试插件功能)。
- 上传完成后,点击 "测试" 按钮,输入城市名称(如 "北京"),验证插件是否能正常返回天气信息;
- 测试通过后,点击 "启用" 按钮,插件即可在应用和工作流中使用。
- 插件应用
- 在应用中使用:创建应用时,添加 "工具调用" 节点,选择 "天气查询插件",配置输入参数(城市名称);
- 在工作流中使用:拖拽 "工具节点",选择 "天气查询插件",连接到其他节点(如将天气信息插入到邮件中发送)。
8. Dify 应用部署与生产优化
开发完成的 AI 应用需要部署到生产环境,并进行性能、成本、稳定性优化,确保满足企业级应用需求。
8.1 生产环境部署
8.1.1 Docker Swarm 部署(适合多节点集群)
对于生产环境,推荐使用 Docker Swarm 实现服务编排和高可用:
- 初始化 Docker Swarm
- 编写 docker-compose.prod.yml 配置文件
- 配置 HTTPS(Let's Encrypt 证书)
- 启动服务


