Dify平台实战¶
概述¶
Dify是一个开源的LLM应用开发平台,提供可视化的AI应用构建工具,支持RAG、Agent、工作流等功能。
平台介绍¶
# Dify核心功能
1. 可视化编排
- 拖拽式工作流
- 无需编码
2. RAG引擎
- 文档导入
- 向量检索
3. Agent能力
- 工具调用
- 多轮对话
4. 模型支持
- OpenAI、Claude等
- 本地模型
快速开始¶
Docker部署¶
# 克隆仓库
git clone https://github.com/langgenius/dify.git
cd dify/docker
# 启动服务
docker-compose up -d
# 访问
# 前端:http://localhost:3000
# API:http://localhost:5001
创建应用¶
RAG应用构建¶
1. 导入知识库¶
# 支持的文档格式
- PDF、Word、TXT
- Markdown
- 网页链接
- Notion同步
# 配置
- 分段大小:500-1000字符
- 重叠:50-100字符
- 嵌入模型:text-embedding-3-small
2. 创建聊天助手¶
# 应用配置
模型:GPT-5.5
提示词: |
你是智能助手,基于以下知识库回答问题。
如果知识库中没有相关信息,请说明。
知识库内容:{{context}}
用户问题:{{question}}
知识库:选择已导入的知识库
温度:0.3
3. API调用¶
import requests
# Dify API调用
def chat_with_dify(query, conversation_id=None):
url = "http://localhost:5001/v1/chat-messages"
headers = {
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json"
}
data = {
"inputs": {},
"query": query,
"response_mode": "blocking",
"conversation_id": conversation_id or "",
"user": "user-123"
}
response = requests.post(url, headers=headers, json=data)
return response.json()
# 多轮对话
conversation_id = None
while True:
query = input("用户: ")
result = chat_with_dify(query, conversation_id)
print(f"助手: {result['answer']}")
conversation_id = result['conversation_id']
Agent应用¶
工具配置¶
# 内置工具
- 搜索引擎(Google、Bing)
- 网页抓取
- 代码执行
- 图像生成
# 自定义工具
1. 创建API工具
- 输入API文档
- 配置参数
2. 创建代码工具
- 编写Python函数
- 定义输入输出
Agent配置¶
# Agent配置示例
模型:GPT-5.5
提示词: |
你是智能助手,可以使用以下工具:
- search: 搜索互联网
- calculator: 数学计算
请根据用户需求选择合适的工具。
工具:启用search和calculator
最大迭代:5
工作流¶
创建工作流¶
# 节点类型
1. 开始节点
- 定义输入参数
2. LLM节点
- 调用大模型
3. 知识检索节点
- 查询知识库
4. 条件节点
- 分支逻辑
5. 代码节点
- 自定义逻辑
6. HTTP节点
- 调用外部API
7. 结束节点
- 定义输出
工作流示例:文档分析¶
# 工作流配置
开始:
输入:文档URL
LLM节点1:
提示词:提取文档的主要内容
知识检索:
查询:基于提取的内容
LLM节点2:
提示词: |
基于知识库和文档内容,生成分析报告。
文档内容:{{llm1.output}}
知识库内容:{{retrieval.output}}
结束:
输出:分析报告
部署与集成¶
嵌入网页¶
<!-- 嵌入Dify聊天窗口 -->
<script>
window.difyChatbotConfig = {
token: 'your-app-token'
}
</script>
<script
src="https://cdn.dify.ai/chatbot/embed.js"
id="dify-chatbot"
defer>
</script>
API集成¶
# Python SDK
from dify import DifyClient
client = DifyClient(api_key="your-api-key")
client.base_url = "http://localhost:5001/v1"
# 聊天
response = client.chat(
query="你好",
inputs={},
response_mode="blocking",
user="user-123"
)
最佳实践¶
# Dify使用建议
1. 知识库优化
- 合理分段
- 定期更新
- 测试检索效果
2. 提示词工程
- 明确角色
- 提供示例
- 处理边界情况
3. 工作流设计
- 模块化
- 错误处理
- 日志记录
4. 监控运维
- 性能监控
- 成本控制
- 反馈收集
下一步学习¶
- Prompt Engineering - 优化提示词
- RAG检索增强生成 - 深入RAG技术
- Coze平台实战 - 对比其他平台