Agent框架横评(五):Dify我的开源LLMOps平台
一、开场:不用写代码也能做AI应用
大家好,我是老金。
有没有想过不用写代码也能做出AI应用?
Dify就是这样的平台:
- 可视化编排
- 一键部署
- 运营分析
今天聊聊Dify。
二、Dify是什么
2.1 定位
Dify是一个开源LLMOps平台,让开发者可以:
- 可视化创建AI应用
- 编排Prompt和工作流
- 部署和运营
- 分析日志和数据
核心理念:让AI应用开发像搭积木一样简单
2.2 特点
| 特点 | 说明 |
|---|---|
| 开源 | MIT协议,可自托管 |
| 可视化 | 拖拽编排 |
| 多模型 | 支持主流LLM |
| RAG | 内置知识库 |
| API | 一键生成API |
2.3 界面预览
┌─────────────────────────────────────────────────────────┐
│ Dify 工作台 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 应用列表 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ 聊天助手 │ │ Agent │ │ 工作流 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 可视化编辑器 │ │
│ │ │ │
│ │ [开始] → [LLM] → [知识库] → [结束] │ │
│ │ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
三、应用类型
3.1 Chatflow(对话流)
适合:客服、助手、问答
┌─────────────────────────────────────────────────────────┐
│ Chatflow │
├─────────────────────────────────────────────────────────┤
│ │
│ 开始 → 关键词识别 │
│ ↓ │
│ ┌───┴───┐ │
│ ↓ ↓ │
│ 知识库 LLM │
│ ↓ ↓ │
│ └───┬───┘ │
│ ↓ │
│ 结束 │
│ │
└─────────────────────────────────────────────────────────┘
3.2 Workflow(工作流)
适合:内容生成、数据处理、自动化
┌─────────────────────────────────────────────────────────┐
│ Workflow │
├─────────────────────────────────────────────────────────┤
│ │
│ [开始] → [代码执行] → [LLM] → [条件分支] │
│ ↓ ↓ ↓ │
│ [错误处理] [知识库] [A分支/B分支] │
│ ↓ ↓ │
│ [LLM] [LLM] │
│ ↓ ↓ │
│ [结束A] [结束B] │
│ │
└─────────────────────────────────────────────────────────┘
3.3 Agent
适合:复杂任务、工具调用
┌─────────────────────────────────────────────────────────┐
│ Agent │
├─────────────────────────────────────────────────────────┤
│ │
│ 用户输入 │
│ ↓ │
│ LLM推理 │
│ ↓ │
│ ┌────────────────────────┐ │
│ │ 工具选择 │ │
│ │ 🔍搜索 │ 💻代码 │ 📁文件 │ │
│ └────────────────────────┘ │
│ ↓ │
│ 工具执行 │
│ ↓ │
│ 结果处理 │
│ ↓ │
│ 响应输出 │
│ │
└─────────────────────────────────────────────────────────┘
四、快速创建应用
4.1 创建聊天助手
# Docker部署
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker-compose up -d
# 访问
# http://localhost:80
4.2 可视化配置
# 步骤1:创建应用
1. 点击「创建应用」
2. 选择「聊天助手」
3. 输入应用名称:「技术客服」
# 步骤2:配置Prompt
你是一个技术客服助手。
职责:
- 回答技术问题
- 提供代码示例
- 指引文档阅读
规则:
- 回答简洁明了
- 代码要有注释
- 不会就说不知道
# 步骤3:关联知识库
1. 上传文档(PDF/TXT/MD)
2. 向量分段设置
3. 关联到应用
# 步骤4:发布
点击「发布」→ 生成API
4.3 API调用
import requests
# 调用Dify API
response = requests.post(
"https://your-dify.com/v1/chat-messages",
headers={
"Authorization": "Bearer app-xxx",
"Content-Type": "application/json"
},
json={
"query": "如何部署Docker应用?",
"user": "user_123",
"response_mode": "blocking" # blocking 或 streaming
}
)
print(response.json())
五、知识库
5.1 上传文档
支持的格式:
- PDF
- Word (.docx)
- TXT
- Markdown
- HTML
- CSV
上传步骤:
1. 进入「知识库」
2. 点击「创建知识库」
3. 上传文档
4. 配置分段规则
5. 等待向量化完成
5.2 分段配置
分段模式:
- 自动分段(推荐)
- 自定义分段
自动分段规则:
- 最大长度:500字符
- 重叠长度:50字符
- 智能识别标题
自定义分段:
- 按段落
- 按句子
- 固定长度
5.3 检索设置
检索设置:
- 相似度阈值:0.6
- 返回数量:5
- 召回模式:
- 向量检索(推荐)
- 全文检索
- 混合检索(向量+全文)
六、工作流编排
6.1 节点类型
| 节点 | 功能 |
|---|---|
| LLM | 调用大模型 |
| 知识库 | 检索文档 |
| 条件 | 分支判断 |
| 代码执行 | 自定义逻辑 |
| 模板转换 | 格式化输出 |
| HTTP请求 | 调用外部API |
| 变量赋值 | 修改变量 |
| 迭代 | 循环处理 |
| 文档提取器 | 解析文档 |
| 变量聚合器 | 合并变量 |
6.2 工作流示例
# 自动回复邮件工作流
[开始]
↓
[LLM-提取意图]
↓
[条件分支]
├── 投诉 → [知识库-投诉处理] → [LLM-生成回复] → [结束]
├── 咨询 → [知识库-产品文档] → [LLM-生成回复] → [结束]
└── 其他 → [LLM-通用回复] → [结束]
6.3 代码节点
// 代码节点 - 数据处理
// 输入变量: user_message
// 输出变量: processed_message
const keywords = ['紧急', '马上', '立刻'];
const isUrgent = keywords.some(k => user_message.includes(k));
return {
processed_message: user_message.trim(),
is_urgent: isUrgent,
sentiment: isUrgent ? 'negative' : 'neutral'
};
七、Agent配置
7.1 工具配置
内置工具:
- Bing搜索
- Google搜索
- DDG搜索
- Wikipedia搜索
- 网络抓取
自定义工具:
- HTTP请求
- API调用
7.2 Agent提示词
# Agent配置
角色:你是一个数据分析助手
能力:
1. 可以搜索最新数据
2. 可以执行Python代码
3. 可以生成可视化图表
工作流程:
1. 理解用户需求
2. 获取相关数据
3. 分析数据
4. 生成结论和建议
限制:
- 只处理数据分析相关问题
- 代码必须可执行
- 图表必须清晰
7.3 迭代配置
Agent迭代设置:
- 最大迭代次数:10
- 超时时间:60秒
- 允许工具循环:是
- 反思机制:是
八、运营分析
8.1 数据看板
Dify提供的数据指标:
- 用户对话数
- Token消耗
- 响应时间
- 知识库命中率
- 用户满意度
- 高频问题
8.2 日志管理
日志功能:
- 对话日志
- 完整日志
- 错误日志
- 导出功能
8.3 标注管理
标注功能:
- 手动标注对话
- 优化回答
- 训练模型
九、部署方式
9.1 Docker部署
# docker-compose.yml
version: '3'
services:
api:
image: langgenius/dify-api
environment:
- SECRET_KEY=your-secret-key
- INIT_DATA=True
ports:
- "5001:5001"
web:
image: langgenius/dify-web
ports:
- "80:80"
db:
image: postgres:15-alpine
environment:
- POSTGRES_PASSWORD=dify
- POSTGRES_DB=dify
volumes:
- db_data:/var/lib/postgresql/data
weaviate:
image: semitechnologies/weaviate
ports:
- "8080:8080"
volumes:
db_data:
9.2 云服务
官方云服务:
- dify.ai (托管服务)
- 免费额度有限
- 按量付费
第三方托管:
- AWS
- 阿里云
- 腾讯云
十、与同类对比
10.1 vs LangChain
| 方面 | Dify | LangChain |
|---|---|---|
| 编码量 | 少 | 多 |
| 上手难度 | 低 | 高 |
| 定制能力 | 有限 | 灵活 |
| 适合人群 | 非程序员 | 开发者 |
| 部署 | 简单 | 复杂 |
10.2 vs Coze
| 方面 | Dify | Coze |
|---|---|---|
| 部署 | 可自托管 | 仅云端 |
| 开源 | 是 | 否 |
| 费用 | 自己承担 | 按需付费 |
| 定制 | 源码可控 | 有限 |
十一、优缺点分析
11.1 优点
| 优点 | 说明 |
|---|---|
| 零代码 | 可视化操作 |
| 开源免费 | 可自托管 |
| 部署简单 | Docker一键 |
| RAG内置 | 知识库功能完善 |
| API生成 | 一键生成API |
11.2 缺点
| 缺点 | 说明 |
|---|---|
| 定制有限 | 复杂逻辑受限 |
| 性能 | 有额外开销 |
| 文档 | 部分不完善 |
十二、总结
适用人群
| 人群 | 推荐度 |
|---|---|
| 非程序员 | ⭐⭐⭐⭐⭐ |
| 产品经理 | ⭐⭐⭐⭐⭐ |
| 创业公司 | ⭐⭐⭐⭐ |
| 企业 | ⭐⭐⭐⭐ |
| 深度开发者 | ⭐⭐⭐ |
框架评分
| 维度 | 评分 |
|---|---|
| 易用性 | 10/10 |
| 功能完整性 | 8/10 |
| 部署难度 | 8/10 |
| 性能 | 7/10 |
| 扩展性 | 6/10 |
下期预告
下一篇:Agent框架横评(六):国产框架对比——Dify、Coze、FastGPT哪家强?
相关阅读
- Agent框架横评(四):CrewAI让Multi-Agent协作像搭乐高一样简单
- Agent框架横评(三):LlamaIndex我的RAG知识库专家
- Agent框架横评(二):LangChain我的LLM应用瑞士军刀
正文完