跳转至

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

创建应用

# 步骤

1. 登录Dify平台
2. 点击"创建应用"
3. 选择应用类型:
   - 聊天助手
   - 文本生成
   - Agent
   - 工作流
4. 配置模型和参数
5. 发布应用

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. 监控运维
   - 性能监控
   - 成本控制
   - 反馈收集

下一步学习

  1. Prompt Engineering - 优化提示词
  2. RAG检索增强生成 - 深入RAG技术
  3. Coze平台实战 - 对比其他平台