基于 Dify 低代码平台开发 AI 应用:从入门到生产部署
基于 Dify 低代码平台开发 AI 应用涵盖环境搭建、三种典型应用实战及生产部署优化。内容包含 Docker 快速部署与源码部署方法,详解文本摘要、私有知识库问答(RAG)及多模态图片分析三类应用的 Prompt 设计、模型配置与 API 集成。此外还介绍工作流编排、自定义插件开发以及生产环境的 Docker Swarm 集群部署与 HTTPS 配置,帮助开发者掌握企业级 AI 应用构建能力。

基于 Dify 低代码平台开发 AI 应用涵盖环境搭建、三种典型应用实战及生产部署优化。内容包含 Docker 快速部署与源码部署方法,详解文本摘要、私有知识库问答(RAG)及多模态图片分析三类应用的 Prompt 设计、模型配置与 API 集成。此外还介绍工作流编排、自定义插件开发以及生产环境的 Docker Swarm 集群部署与 HTTPS 配置,帮助开发者掌握企业级 AI 应用构建能力。

在人工智能技术飞速发展的今天,企业和开发者对 AI 应用的需求日益增长。然而,传统 AI 应用开发面临着诸多痛点:一是技术门槛高,需要掌握大模型 API 调用、prompt 工程、知识库构建等多领域知识;二是开发周期长,从需求分析到功能落地往往需要数周甚至数月;三是维护成本高,模型迭代、数据更新、权限管理等工作繁琐;四是集成难度大,不同模型、工具、数据源的整合需要大量定制化开发。
Dify 作为一款开源低代码 AI 应用开发平台,恰好解决了这些痛点。它具备以下核心优势:
本文将以 "理论 + 实战" 的形式,带领读者从 Dify 环境搭建开始,逐步开发文本摘要、私有知识库问答、多模态图片分析三类典型 AI 应用,并讲解工作流设计、插件开发、生产部署与优化等高级内容,最终帮助读者掌握基于 Dify 快速构建企业级 AI 应用的能力。
在开始开发前,我们需要先理解 Dify 的核心概念与架构设计,这将帮助我们更高效地使用平台。
Dify 采用分层架构设计,确保系统的灵活性、可扩展性和稳定性,架构分为四层:
Dify 支持两类模型,满足不同场景需求:
Dify 提供两种部署方式:Docker Compose 快速部署(适合新手)和本地源码部署(适合二次开发),本节将详细讲解两种部署流程。
Docker Compose 部署无需复杂的依赖配置,只需几分钟即可完成 Dify 启动,适合快速体验和生产环境使用。
以 Ubuntu 22.04 为例,执行以下命令安装依赖:
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装 Docker
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker --version
docker-compose --version
# 创建 Dify 目录
mkdir -p /opt/dify && cd /opt/dify
# 下载 docker-compose.yml 文件
wget https://raw.githubusercontent.com/langgenius/dify/main/docker-compose.yml
# 下载环境变量配置文件
wget https://raw.githubusercontent.com/langgenius/dify/main/.env.example -O .env
编辑.env 文件,修改关键配置(如端口、数据库密码):
vim .env
常用配置项说明:
# 后台启动所有服务
docker-compose up -d
# 查看服务启动状态
docker-compose ps
启动成功后,输出应显示所有服务(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)",表示启动成功。
打开浏览器,输入 http://服务器 IP:端口(如 http://192.168.1.100:8000),进入 Dify 登录界面,如图 1 所示:

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

界面顶部为导航栏(包含首页、应用、知识库、工作流、插件、设置),左侧为功能菜单,中间为控制台首页,显示应用数量、知识库数量、最近访问的应用列表,右侧为快速操作按钮(新建应用、新建知识库)。
若需要对 Dify 进行二次开发(如定制界面、扩展功能),可采用本地源码部署方式。
git clone https://github.com/langgenius/dify.git
cd dify
# 进入后端目录
cd api
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 初始化数据库
cp .env.example .env
# 编辑.env 文件,配置数据库、Redis 连接信息
vim .env
# 执行数据库迁移
flask db upgrade
# 启动后端服务
flask run --host=0.0.0.0 --port=5001
# 进入前端目录
cd ../web
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env
# 编辑.env 文件,设置 REACT_APP_API_URL 为后端服务地址
vim .env
# 启动前端开发服务
npm start
前端服务启动后,访问 http://localhost:3000,后端服务地址为 http://localhost:5001。
若启动时提示 "端口已被占用",可修改.env 文件中的 PORT 配置(Docker 部署)或启动命令中的--port 参数(源码部署),选择未被占用的端口(如 8001、5002)。
执行 docker-compose logs -f 查看日志,定位失败原因:
文本摘要应用是最基础的 AI 应用之一,功能为 "用户输入长文本,AI 自动生成简洁摘要"。本节将详细讲解基于 Dify 开发文本摘要应用的完整流程,包括应用创建、prompt 设计、模型配置、API 集成等步骤。
界面顶部为 "新建应用" 标题,中间为应用类型选择区,包含 "文本生成"、"问答"、"多模态交互" 三个选项,每个选项下方有功能描述;右侧为应用配置区,包含 "应用名称"、"应用描述"、"应用图标" 输入框。
prompt 设计直接影响 AI 摘要的质量,需明确模型的角色、任务、输出格式和约束条件。
你是一名专业的文本摘要工程师,擅长提取文本核心信息并生成简洁、准确的摘要。请按照以下规则处理用户提供的文本:
1. 摘要需包含文本的核心主题、关键人物/事件、主要结论(若有);
2. 避免遗漏重要信息,同时不添加文本中没有的内容;
3. 根据用户选择的摘要长度调整内容详略:
- 短摘要(100 字以内):仅保留核心主题和关键结论;
- 中摘要(100-300 字):包含核心主题、关键事件、主要结论;
- 长摘要(300 字以上):详细描述文本结构、核心内容、关键细节、主要结论;
4. 摘要语言需与用户输入文本语言一致(如用户输入中文,摘要也为中文);
5. 输出格式:先说明摘要长度类型,再输出摘要内容,示例:
【短摘要】
本文介绍了人工智能技术在医疗领域的应用现状,包括疾病诊断、药物研发等场景,指出当前技术面临的数据安全和伦理问题,建议加强行业监管。
在编辑器中点击 "添加变量",创建两个变量:
最终用户提示模板为:
需要摘要的文本:{{text}}
摘要长度要求:{{summary_length}}
配置完成后的 prompt 设计界面
界面左侧为 prompt 编辑器,分为 "系统提示" 和 "用户提示" 两部分,系统提示区域显示上述设计的规则文本,用户提示区域显示包含两个变量的模板;右侧为变量管理区,显示 text 和 summary_length 两个变量的配置信息(类型、提示语、默认值),下方有 "预览" 按钮可查看用户输入界面效果。
界面顶部为模型类型选择区(API 模型 / 开源模型),中间为模型列表(OpenAI、Anthropic、阿里云等),当前选中 "OpenAI GPT-3.5 Turbo";右侧为模型参数配置区,包含 "API 密钥"、"温度"、"最大 Token 数"、"超时时间" 等参数输入框。
界面左侧为用户输入区,包含 "文本内容" 输入框(多行)和 "摘要长度" 下拉选择框;右侧为 AI 响应区,显示 "等待输入" 提示;底部有 "提交" 和 "清空" 按钮。
2024 年以来,人工智能技术进入高速发展阶段,尤其是生成式 AI 的应用场景不断拓展。在医疗领域,AI 辅助诊断系统的准确率已达到 95% 以上,可帮助医生快速识别肺癌、糖尿病等疾病;在教育领域,AI 助教能够根据学生的学习数据制定个性化学习计划,提升学习效率;在工业领域,AI 质检系统可实现 24 小时不间断检测,将产品缺陷率降低 30%。然而,AI 技术的快速发展也带来了一系列挑战,如数据隐私泄露、算法偏见、就业结构变化等问题。为此,全球多个国家已开始制定 AI 监管政策,欧盟的《人工智能法案》于 2024 年 5 月正式生效,对高风险 AI 应用实施严格监管;美国也推出了《AI 风险管理框架》,指导企业规范 AI 应用。专家预测,未来 5 年,AI 技术将与各行业深度融合,形成新的产业生态,同时监管体系将逐步完善,推动 AI 技术健康发展。
【中摘要】
2024 年生成式 AI 应用场景持续拓展,医疗领域 AI 辅助诊断准确率超 95%,可快速识别多种疾病;教育领域 AI 助教能制定个性化学习计划;工业领域 AI 质检系统可 24 小时检测,降低产品缺陷率 30%。但 AI 发展面临数据隐私泄露、算法偏见、就业结构变化等挑战,欧盟《人工智能法案》已生效,美国推出《AI 风险管理框架》。专家预测未来 5 年 AI 将与各行业深度融合,监管体系也将完善,推动 AI 健康发展。
Dify 为每个应用自动生成 API 接口,可将文本摘要工具集成到网站、APP、小程序等第三方系统。
import requests
import json
# 配置 API 信息
API_KEY = "你的 Dify 应用 API 密钥"
API_URL = "http://192.168.1.100:8000/v1/applications/65f8a7b2-3c4d-4e5f-8a9b-0c1d2e3f4a5b/completions"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
def generate_summary(text, summary_length):
"""
调用 Dify 文本摘要 API 生成摘要
:param text: 需要摘要的文本内容
:param summary_length: 摘要长度(短/中/长)
:return: 摘要结果或错误信息
"""
# 构造请求体
payload = {
"inputs": {
"text": text,
"summary_length": summary_length
},
"query": text, # 用于 Dify 日志跟踪,可与 text 一致
"user": "user_001" # 用户名,用于区分不同用户的请求
}
try:
# 发送 POST 请求
response = requests.post(API_URL, headers=HEADERS, data=json.dumps(payload), timeout=30)
# 检查响应状态码
response.raise_for_status() # 若状态码非 200,抛出异常
# 解析响应结果
result = response.json()
return result["output"]["text"]
except requests.exceptions.RequestException as e:
return f"API 调用失败:{str(e)}"
# 测试代码
if __name__ == "__main__":
# 测试文本 "2024 年以来,人工智能技术进入高速发展阶段,尤其是生成式 AI 的应用场景不断拓展...(同 4.2.4 中的测试文本)"
test_text =
summary = generate_summary(test_text, )
()
(summary)
图 8:API 调用代码运行结果界面
界面为 Python 终端运行结果,显示 "文本摘要结果:",下方为 AI 生成的中摘要内容,无错误信息,表明 API 调用成功。
const axios = require('axios');
// 配置 API 信息
const API_KEY = "你的 Dify 应用 API 密钥";
const API_URL = "http://192.168.1.100:8000/v1/applications/65f8a7b2-3c4d-4e5f-8a9b-0c1d2e3f4a5b/completions";
async function generateSummary(text, summaryLength) {
try {
const response = await axios.post(
API_URL,
{
inputs: {
text,
summary_length: summaryLength
},
query: text,
user: "user_001"
},
{
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
timeout: 30000
}
);
return response.data.output.text;
} catch (error) {
return `API 调用失败:${error.message}`;
}
}
// 测试
generateSummary("测试文本...", "中摘要(100-300 字)")
.then(summary => .(, summary))
.( .(err));
若需要修改应用的前端界面(如调整颜色、添加公司 logo),可通过 Dify 的 "交互设置" 标签页进行配置:
应用开发完成后,可通过 Dify 的 "发布" 功能对外提供服务:
在实际应用中,很多 AI 问答场景需要基于企业私有数据(如产品手册、内部文档、行业报告),此时需要结合检索增强生成(RAG)技术。本节将开发一个 "产品手册问答 AI 应用",支持用户基于上传的产品手册提问,AI 结合手册内容给出精准回答。
RAG 技术流程:
首先需要创建知识库并上传产品手册,Dify 提供完整的知识库管理功能。
界面包含 "知识库名称"、"知识库描述" 输入框,"文档处理设置"(分块策略、嵌入模型),"向量数据库" 选择(内置 Chroma / 外部向量库如 Pinecone),下方有 "创建" 按钮。
点击 "上传文档" 按钮,选择本地的产品手册 PDF 文件(示例:某款智能手机产品手册),进入文档上传与处理界面。
界面左侧显示上传的文档名称、大小、格式,右侧为文档处理进度(上传中→解析中→分块中→嵌入中→完成),下方显示处理后的文本块数量、嵌入模型、分块策略信息。
文档处理完成后,系统会显示 "处理成功",并列出处理后的文本块数量(如 100 个文本块)。
你是一款产品手册问答 AI,负责基于用户上传的产品手册内容回答问题。请按照以下规则处理:
1. 仅基于知识库中的产品手册内容回答,不添加外部知识;
2. 若问题超出手册范围,明确告知用户 "该问题不在产品手册范围内,无法回答";
3. 回答需引用手册内容,在回答末尾标注引用来源(格式:【引用:文档名称,页码 X】);
4. 语言需简洁、准确,避免使用专业术语堆砌,确保用户易懂。
创建变量 question(问题内容),类型为 "短文本",提示用户 "请输入关于产品手册的问题"。
界面顶部为知识库选择区,当前选中 "产品手册知识库";中间为检索参数配置区,包含 "检索 Top K"、"相似度阈值"、"上下文拼接方式";右侧为检索测试区,可输入测试问题,查看检索结果。
在检索测试区输入问题(如 "这款手机的电池容量是多少?"),点击 "检索" 按钮,系统会显示检索到的文本块(包含内容、相似度得分、来源),验证检索结果是否准确。
进入 "模型配置" 标签页,选择模型为 "OpenAI GPT-3.5 Turbo",配置参数:
界面左侧为用户提问区,包含 "问题" 输入框和 "提交" 按钮;右侧为 AI 回答区,显示回答内容和引用来源;下方为 "相关文档" 列表,显示检索到的文本块。
这款智能手机支持快充功能,其快充功率为 66W。根据产品手册描述,使用原装充电器时,30 分钟可充电至 80%,完全充满需约 45 分钟。
【引用:智能手机产品手册,页码 12】
回答下方会显示引用的文档片段,用户可查看原文验证准确性。
与文本摘要应用相比,带 RAG 的 API 调用无需额外配置,Dify 会自动处理检索流程,只需在请求体中指定知识库 ID 即可。
Python API 调用代码示例:
import requests
import json
# 配置 API 信息
API_KEY = "你的产品问答应用 API 密钥"
API_URL = "http://192.168.1.100:8000/v1/applications/78a9b0c1-2d3e-4f5a-6b7c-8d9e0f1a2b3c/chat-messages"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
def product_qa(question, user_id):
"""
调用产品手册问答 API
:param question: 用户问题
:param user_id: 用户 ID(区分不同用户)
:return: 回答结果、引用来源
"""
payload = {
"inputs": {
"question": question
},
"query": question,
"user": user_id,
"knowledge_base_id": "89c0d1e2-3f4a-5b6c-7d8e-9f0a1b2c3d4e" # 知识库 ID
}
try:
response = requests.post(API_URL, headers=HEADERS, data=json.dumps(payload), timeout=60)
response.raise_for_status()
result = response.json()
# 提取回答和引用来源
answer = result["output"]["text"]
sources = [f"【{source['document_name']},页码{source['page']}】" for source in result["retrieval_contexts"][0]["sources"]]
return f"{answer}\n{' '.join(sources)}"
except requests.exceptions.RequestException as e:
return
__name__ == :
question =
result = product_qa(question, )
()
(result)
运行代码,输出结果包含回答和引用来源,与 Web 测试界面一致。
Dify 支持知识库的全生命周期管理:
若 RAG 问答效果不理想(如回答不准确、引用错误),可通过以下方式优化:
随着多模态模型(如 GPT-4V、Claude 3 Vision)的发展,AI 应用已从纯文本扩展到图片、音频、视频等领域。本节将开发一个 "图片内容分析 AI 应用",支持用户上传图片,AI 分析图片内容并生成描述,同时回答与图片相关的问题。
首先需要在 Dify 中配置多模态模型(GPT-4V),确保支持图片分析功能。
界面顶部为模型类型选择(API 模型 / 开源模型),当前选择 "API 模型"→"OpenAI"→"GPT-4V (Vision)";中间为模型参数配置区,包含 "API 密钥"、"最大 Token 数"、"超时时间";下方为 "图片处理设置"(支持的图片格式、最大大小)。
界面包含 "应用名称"、"应用描述" 输入框,"模型选择"(已选择 GPT-4V),"交互设置"(图片上传功能开启、问题输入框配置),下方有 "创建" 按钮。
多模态 prompt 需要包含图片处理指令和文本生成规则,进入 "prompt 设计" 标签页:
你是一名专业的图片内容分析师,擅长分析图片中的场景、物体、文字、颜色、人物等元素。请按照以下规则处理:
1. 首先生成图片详细描述,包含:
- 场景(如室内/室外、家庭/办公/自然);
- 主要物体(名称、数量、颜色、位置);
- 人物(数量、动作、穿着、表情,若有);
- 文字(图片中的文字内容,若有);
- 整体氛围(如明亮/昏暗、温馨/严肃);
2. 若用户有提问,结合图片内容回答问题,确保回答基于图片实际内容;
3. 若图片内容不清晰或无法识别,明确告知用户;
4. 语言需简洁、有条理,分点描述(使用 1.2.3.格式)。
上传的图片:{{image}}
用户问题(可选):{{question}}
界面左侧为用户交互区,包含 "图片上传" 按钮(显示 "点击上传或拖拽文件")、"问题输入框"、"提交" 按钮;右侧为 AI 响应区,显示 "等待上传图片" 提示;下方为图片预览区(上传后显示)。
一、图片详细描述
1. 场景:室内静物场景,背景为白色桌面,无其他装饰元素;
2. 主要物体:
- 苹果:1 个,红色,位于图片左侧;
- 香蕉:2 根,黄色,位于图片中间,呈弯曲状;
- 橙子:1 个,绿色(未完全成熟),位于图片右侧;
3. 人物:无;
4. 文字:无;
5. 整体氛围:明亮、简洁,突出水果主体。
二、问题回答
图片中的水果及颜色如下:
1. 苹果:红色;
2. 香蕉:黄色;
3. 橙子:绿色。
多模态 API 调用需要处理图片文件(二进制数据),需将图片转换为 Base64 编码或通过表单上传。Dify 支持两种方式,本节以 Base64 编码为例。
Python API 调用代码示例:
import requests
import json
import base64
# 配置 API 信息
API_KEY = "你的图片分析应用 API 密钥"
API_URL = "http://192.168.1.100:8000/v1/applications/90a1b2c3-4d5e-6f7a-8b9c-0d1e2f3a4b5c/multimodal-completions"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
def image_analysis(image_path, question=None):
"""
调用图片内容分析 API
:param image_path: 图片本地路径
:param question: 用户问题(可选)
:return: 分析结果
"""
# 将图片转换为 Base64 编码
with open(image_path, "rb") as image_file:
image_base64 = base64.b64encode(image_file.read()).decode("utf-8")
# 构造请求体
payload = {
"inputs": {
"image": {
"type": "base64",
"data": image_base64,
"filename": image_path.split("/")[-1] # 图片文件名
},
"question": question or "请分析图片内容"
},
"query": question or "图片分析请求",
"user": "user_003"
}
try:
response = requests.post(API_URL, headers=HEADERS, data=json.dumps(payload), timeout=60)
response.raise_for_status()
result = response.json()
return result[][]
requests.exceptions.RequestException e:
__name__ == :
image_path =
question =
analysis_result = image_analysis(image_path, question)
()
(analysis_result)
代码说明:
Dify 的工作流和插件功能可满足复杂业务场景需求,本节将介绍如何通过工作流设计复杂流程,以及如何开发自定义插件。
工作流支持拖拽式设计复杂业务逻辑,例如 "用户提问→检索知识库→调用模型→发送邮件通知" 的完整流程。
界面左侧为节点库(包含 "触发节点"、"模型节点"、"知识库节点"、"工具节点"、"条件节点"、"输出节点");中间为画布,用于拖拽节点并连接;右侧为节点配置区,显示当前选中节点的参数配置。
设计 "用户提问→知识库检索→模型回答→邮件通知" 流程:
添加触发节点:拖拽 "用户输入触发" 节点到画布,配置触发参数(用户输入变量:question);
添加知识库节点:拖拽 "知识库检索" 节点,连接到触发节点,配置知识库 ID 和检索参数(Top K=5);
添加模型节点:拖拽 "模型调用" 节点,连接到知识库节点,选择模型(GPT-3.5 Turbo),配置 prompt(包含用户问题和检索到的上下文);
添加工具节点:拖拽 "邮件发送" 节点,连接到模型节点,配置邮件参数(收件人、主题、内容模板,内容包含模型回答);
添加输出节点:拖拽 "结果输出" 节点,连接到模型节点,配置输出参数(模型回答);
连接节点:用连接线将各节点按流程顺序连接,形成完整工作流。
点击 "测试" 按钮,输入测试问题,验证工作流是否正常执行(检索知识库→生成回答→发送邮件)。
Dify 支持自定义插件开发,若内置插件无法满足需求,可开发专属插件(如对接企业内部系统、第三方 API)。本节将开发一个 "天气查询插件",支持根据城市名称查询实时天气。
插件采用 Python 开发,需遵循 Dify 插件开发规范,项目结构如下:
weather_plugin/
├── __init__.py
├── main.py # 插件核心逻辑
├── config.py # 配置文件
└── manifest.json # 插件描述文件
编写插件描述文件(manifest.json):
{
"name": "天气查询插件",
"description": "根据城市名称查询实时天气",
"version": "1.0.0",
"author": "Dify 开发者",
"type": "tool",
"parameters": [
{
"name": "city",
"type": "string",
"required": true,
"description": "城市名称(如北京、上海)"
}
],
"outputs": [
{
"name": "weather_info",
"type": "string",
"description":
使用第三方天气 API(如高德天气 API)实现天气查询功能:
import requests
from config import AMAP_API_KEY
class WeatherPlugin:
def __init__(self):
self.base_url = "https://restapi.amap.com/v3/weather/weatherInfo"
self.api_key = AMAP_API_KEY
def run(self, parameters):
"""
插件执行入口
:param parameters: 输入参数(包含 city)
:return: 天气信息
"""
# 获取城市名称
city = parameters.get("city")
if not city:
raise ValueError("城市名称不能为空")
# 调用高德天气 API
params = {
"key": self.api_key,
"city": city,
"extensions": "base", # 基础天气信息
"output": "json"
}
try:
response = requests.get(self.base_url, params=params, timeout=10)
response.raise_for_status()
data = response.json()
# 解析天气数据
if data["status"] != "1":
raise Exception(f"天气查询失败:{data.get('info', '未知错误')}")
weather_data = data["lives"][0]
weather_info = (
f"城市:\n"
)
{: weather_info}
Exception e:
Exception()
# 高德天气 API 密钥(需在高德开放平台申请:https://lbs.amap.com/)
AMAP_API_KEY = "你的高德天气 API 密钥"
在 Dify 中集成插件
登录 Dify 控制台,点击左侧导航栏 "插件"→"上传插件",选择插件项目压缩包(ZIP 格式)。
界面包含 "插件压缩包上传" 区域、"插件信息预览"(显示 manifest.json 中的名称、描述、参数)、"插件测试" 区域(输入城市名称,测试插件功能)。
上传完成后,点击 "测试" 按钮,输入城市名称(如 "北京"),验证插件是否能正常返回天气信息;
测试通过后,点击 "启用" 按钮,插件即可在应用和工作流中使用。
插件应用
开发完成的 AI 应用需要部署到生产环境,并进行性能、成本、稳定性优化,确保满足企业级应用需求。
对于生产环境,推荐使用 Docker Swarm 实现服务编排和高可用:
# 在管理节点执行
docker swarm init --advertise-addr 管理节点 IP
version: '3.8'
services:
api:
image: langgenius/dify-api:latest
deploy:
replicas: 2 # 部署 2 个副本,实现负载均衡
restart_policy:
condition: on-failure
environment:
- PORT=5000
- DB_HOST=db
- DB_PORT=5432
- DB_USER=dify
- DB_PASSWORD=你的复杂密码
- DB_NAME=dify
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=你的 Redis 密码
- OPENAI_API_KEY=你的 OpenAI API 密钥
- STORAGE_TYPE=s3 # 生产环境推荐使用 S3 存储文件
- S3_ACCESS_KEY=你的 S3 Access Key
- S3_SECRET_KEY=你的 S3 Secret Key
- S3_BUCKET=dify-storage
-
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d your-dify-domain.com -d api.your-dify-domain.com
# 配置 Nginx,将 HTTP 请求重定向到 HTTPS
docker stack deploy -c docker-compose.prod.yml dify
部署完成后,使用 docker service ls 检查服务状态,确认所有服务正常运行。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online