上一篇 下一篇 分享链接 返回 返回顶部

Dify 近期升级盘点:Workflow、Agent、RAG 与 API 实战源码一次看懂

发布人:慈云数据-客服中心 发布时间:7小时前 阅读量:1

Dify 最新更新内容汇总|附源码

Dify 是一款开源的 LLM 应用开发平台,集成了提示词编排、Agent、工作流、知识库、RAG、模型接入、API 发布、应用监控等能力。对于希望快速构建 AI 客服、知识库问答、内容生成工具、自动化工作流以及企业级智能体系统的团队来说,Dify 已经成为非常实用的低代码 / 开源 AI 应用基础设施。

本文将围绕 Dify 近期版本中的核心更新方向进行梳理,并结合实战源码,演示如何基于 Dify API 快速开发一个可落地的 AI 应用调用示例。

说明:Dify 更新较为频繁,具体版本细节请以官方 GitHub Releases、官方文档和实际部署版本为准。本文重点从功能演进、工程使用和开发实践角度进行总结。


一、Dify 是什么?

Dify 是一个面向大模型应用开发的开源平台,它的定位不是单纯的聊天机器人,而是一个完整的 AI 应用开发、编排和交付平台。

通过 Dify,开发者可以完成以下工作:

  • 接入不同大语言模型;
  • 创建聊天助手、文本生成应用和 Agent;
  • 构建复杂的 AI Workflow;
  • 上传文档并创建知识库;
  • 配置 RAG 检索增强生成;
  • 发布 API 给业务系统调用;
  • 查看应用日志、用户反馈和调用数据;
  • 进行私有化部署,满足企业安全需求。

与传统直接调用模型 API 相比,Dify 的优势在于:
它将提示词管理、知识库检索、工具调用、流程编排、模型切换、日志监控等能力封装成了可视化平台,大幅降低了 AI 应用从 Demo 到生产的成本。


二、Dify 最新更新重点概览

从近期版本的演进方向来看,Dify 的更新主要集中在以下几个方面:

  1. 工作流能力增强
  2. Agent 能力完善
  3. 知识库与 RAG 检索优化
  4. 模型供应商支持扩展
  5. 应用发布与 API 调用体验优化
  6. 团队协作与权限管理增强
  7. 部署、性能与稳定性提升
  8. 日志、监控和调试能力增强

下面分别展开说明。


三、工作流 Workflow 能力持续增强

Dify Workflow 是近年来非常重要的功能方向。相比普通的 Chatbot,Workflow 更适合处理结构化、流程化、可控性更强的 AI 应用场景。

例如:

  • 智能合同审查;
  • 简历筛选;
  • 自动生成周报;
  • 客服工单自动分类;
  • 多步骤内容审核;
  • 多模型协同生成;
  • 文档摘要与结构化提取。

1. 节点类型更加丰富

Dify 的工作流通常包括以下节点:

  • 开始节点;
  • LLM 节点;
  • 条件判断节点;
  • 代码执行节点;
  • 知识检索节点;
  • HTTP 请求节点;
  • 模板转换节点;
  • 结束节点。

通过这些节点,开发者可以像搭积木一样构建 AI 流程。

例如,一个“客户反馈分析工作流”可以设计为:

用户输入反馈内容
        ↓
LLM 判断反馈类别
        ↓
条件分支:
  - 投诉:生成安抚话术并通知客服
  - 建议:提取产品改进点
  - 咨询:检索知识库并回答
        ↓
输出最终结果

这种方式相比单纯写 Prompt 更加稳定,因为它将复杂任务拆分为多个明确步骤,每个节点都有相对清晰的职责。


2. 支持更复杂的变量传递

在新的工作流设计中,变量系统变得更加重要。不同节点之间可以传递输入、模型输出、检索结果、HTTP 响应和代码运行结果。

这让 Dify 更接近一个 AI Native 的流程编排平台。

例如:

start.query
llm.classification_result
knowledge.retrieved_content
http.response.body
code.cleaned_data

开发者可以在后续节点中引用前面节点的输出,从而实现复杂逻辑。


3. 代码节点提升灵活性

代码节点是 Dify Workflow 中非常实用的能力。它允许开发者在低代码流程中嵌入少量代码,用于完成数据清洗、格式转换、规则判断等任务。

例如,将用户输入中的多余空格去掉,并限制最大长度:

def main(query: str) -> dict:
    cleaned = query.strip().replace("\n", " ")

    if len(cleaned) > 500:
        cleaned = cleaned[:500]

    return {
        "cleaned_query": cleaned
    }

代码节点的价值在于,它弥补了纯可视化编排的不足,让开发者可以在关键环节加入精确控制逻辑。


四、Agent 能力进一步完善

Dify 的 Agent 能力主要面向“具备工具调用和任务规划能力”的 AI 应用。

普通聊天机器人通常是:

用户提问 → 模型回答

而 Agent 更像是:

用户提出目标 → 模型分析任务 → 调用工具 → 观察结果 → 继续推理 → 输出结论

1. 工具调用更加灵活

Agent 可以调用不同工具,例如:

  • 搜索工具;
  • HTTP API;
  • 数据库查询;
  • 计算工具;
  • 自定义插件;
  • 企业内部接口。

这使得 Agent 不再局限于模型已有知识,而是可以连接真实业务系统。

例如,企业内部可以让 Agent 调用:

  • CRM 查询客户信息;
  • ERP 查询库存;
  • 工单系统创建任务;
  • 数据平台查询报表;
  • 日程系统创建会议。

2. Agent 更适合业务自动化

在企业场景中,Agent 并不只是“聊天”,而是可以执行任务。

例如:

用户:帮我查询客户 A 最近三个月的采购记录,并总结是否有流失风险。

Agent 执行:
1. 调用 CRM API 查询客户资料;
2. 调用订单系统查询采购记录;
3. 分析采购频率和金额变化;
4. 判断风险等级;
5. 输出分析报告;
6. 如风险较高,创建跟进任务。

这类能力正是 AI 应用从“问答型”走向“行动型”的关键。


五、知识库与 RAG 检索优化

知识库是 Dify 的核心能力之一。它可以将企业文档、产品手册、FAQ、制度文件、技术文档等内容导入平台,并通过向量检索实现知识问答。

1. 支持多种文档类型

常见支持的文档类型包括:

  • PDF;
  • Word;
  • Markdown;
  • TXT;
  • HTML;
  • CSV;
  • 网页内容等。

企业可以将内部资料沉淀为知识库,搭建专属 AI 助手。


2. 分段策略更加关键

RAG 效果好不好,很大程度取决于文档分段策略。

如果分段太大:

  • 检索结果不够精准;
  • 模型上下文容易浪费;
  • 回答可能不聚焦。

如果分段太小:

  • 语义不完整;
  • 上下文缺失;
  • 需要召回更多片段。

较好的实践是:

  • 按标题、段落、语义结构分段;
  • 保留章节层级信息;
  • 对 FAQ 使用问答对结构;
  • 对产品文档保留步骤顺序;
  • 控制 chunk 大小与 overlap。

3. 检索增强生成更稳定

Dify 的知识库问答通常包括以下过程:

用户问题
  ↓
向量化
  ↓
知识库检索
  ↓
召回相关片段
  ↓
拼接上下文
  ↓
大模型生成回答
  ↓
返回结果

在实际业务中,建议给知识库应用配置明确的系统提示词,例如:

你是企业内部知识库助手。
请严格根据知识库内容回答问题。
如果知识库中没有相关信息,请明确说明“当前知识库未提供相关信息”,不要编造答案。
回答时请尽量引用文档中的关键依据。

这种提示词可以显著降低幻觉风险。


六、模型供应商支持持续扩展

Dify 的一个重要优势是支持多模型接入。开发者可以根据成本、性能、响应速度和数据安全要求选择不同模型。

常见模型类型包括:

  • OpenAI 系列模型;
  • Anthropic Claude;
  • Google Gemini;
  • Azure OpenAI;
  • 阿里通义千问;
  • 百度文心;
  • 智谱 GLM;
  • Moonshot;
  • DeepSeek;
  • Ollama 本地模型;
  • OpenAI-Compatible API 模型。

多模型接入的价值

对于企业来说,多模型支持非常重要:

  1. 避免供应商锁定
    不把业务完全绑定在单一模型厂商上。

  2. 根据场景选择模型
    简单分类任务使用低成本模型,复杂推理任务使用高性能模型。

  3. 支持私有化和本地化
    对敏感数据场景,可以接入本地模型或私有云模型。

  4. 便于灰度测试
    可以对比不同模型在同一 Prompt 下的输出质量。


七、应用发布与 API 调用体验优化

Dify 不仅支持在平台内调试应用,还可以将应用发布为 API,供外部系统调用。

这意味着开发者可以把 Dify 作为 AI 应用后端,将其集成到:

  • 官网客服;
  • 企业微信机器人;
  • 飞书机器人;
  • 钉钉机器人;
  • 微信小程序;
  • 后台管理系统;
  • SaaS 产品;
  • 内部知识库门户。

八、Dify 私有化部署方式

Dify 支持 Docker Compose 部署,适合开发测试和中小规模生产环境。

1. 克隆源码

git clone https://github.com/langgenius/dify.git
cd dify/docker

2. 配置环境变量

复制环境变量文件:

cp .env.example .env

根据实际需求修改 .env,例如:

CONSOLE_API_URL=http://localhost:5001
CONSOLE_WEB_URL=http://localhost
SERVICE_API_URL=http://localhost:5001
APP_WEB_URL=http://localhost

如果需要配置模型供应商,可以在 Dify 后台界面中完成,也可以结合环境变量和平台设置进行调整。

3. 启动服务

docker compose up -d

4. 查看容器状态

docker compose ps

5. 访问控制台

默认情况下,可以通过浏览器访问:

http://localhost

进入后完成管理员初始化,即可开始创建应用。


九、附源码:使用 Python 调用 Dify Chat API

下面给出一个完整的 Python 示例,用于调用 Dify 发布后的聊天应用 API。

1. 安装依赖

pip install requests

2. Python 源码

import requests
import json


class DifyChatClient:
    def __init__(self, api_key: str, base_url: str = "https://api.dify.ai/v1"):
        self.api_key = api_key
        self.base_url = base_url.rstrip("/")
        self.headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }

    def chat(self, query: str, user: str = "demo-user", conversation_id: str = ""):
        url = f"{self.base_url}/chat-messages"

        payload = {
            "inputs": {},
            "query": query,
            "response_mode": "blocking",
            "conversation_id": conversation_id,
            "user": user
        }

        response = requests.post(url, headers=self.headers, data=json.dumps(payload))
        response.raise_for_status()

        return response.json()


if __name__ == "__main__":
    API_KEY = "替换为你的 Dify App API Key"

    client = DifyChatClient(api_key=API_KEY)

    result = client.chat("请介绍一下 Dify 的主要功能。")

    print("模型回答:")
    print(result.get("answer"))

    print("\n完整返回:")
    print(json.dumps(result, ensure_ascii=False, indent=2))

十、附源码:Node.js 调用 Dify API

如果你的业务系统使用 Node.js,也可以使用下面的方式调用。

1. 初始化项目

mkdir dify-node-demo
cd dify-node-demo
npm init -y
npm install axios

2. Node.js 源码

const axios = require("axios");

class DifyChatClient {
  constructor(apiKey, baseUrl = "https://api.dify.ai/v1") {
    this.apiKey = apiKey;
    this.baseUrl = baseUrl.replace(/\/$/, "");
  }

  async chat(query, user = "demo-user", conversationId = "") {
    const url = `${this.baseUrl}/chat-messages`;

    const payload = {
      inputs: {},
      query,
      response_mode: "blocking",
      conversation_id: conversationId,
      user
    };

    const response = await axios.post(url, payload, {
      headers: {
        Authorization: `Bearer ${this.apiKey}`,
        "Content-Type": "application/json"
      }
    });

    return response.data;
  }
}

async function main() {
  const API_KEY = "替换为你的 Dify App API Key";

  const client = new DifyChatClient(API_KEY);

  const result = await client.chat("请总结 Dify 的核心优势。");

  console.log("模型回答:");
  console.log(result.answer);

  console.log("\n完整返回:");
  console.log(JSON.stringify(result, null, 2));
}

main().catch(console.error);

十一、附源码:流式输出调用示例

在真实聊天应用中,用户体验往往要求模型边生成边输出。此时可以使用流式模式。

下面是 Python 流式调用示例。

import requests
import json


def dify_stream_chat(api_key: str, query: str):
    url = "https://api.dify.ai/v1/chat-messages"

    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    payload = {
        "inputs": {},
        "query": query,
        "response_mode": "streaming",
        "conversation_id": "",
        "user": "stream-user"
    }

    with requests.post(url, headers=headers, json=payload, stream=True) as response:
        response.raise_for_status()

        for line in response.iter_lines(decode_unicode=True):
            if not line:
                continue

            if line.startswith("data: "):
                data = line[6:]

                if data == "[DONE]":
                    break

                try:
                    event = json.loads(data)
                    if event.get("event") == "message":
                        print(event.get("answer", ""), end="", flush=True)
                except json.JSONDecodeError:
                    pass


if __name__ == "__main__":
    API_KEY = "替换为你的 Dify App API Key"
    dify_stream_chat(API_KEY, "请用三点说明 Dify 为什么适合构建 AI 应用。")

流式输出的优势是响应更快,尤其适合聊天机器人、客服助手和内容生成应用。


十二、Dify 在企业中的典型落地场景

1. 企业知识库助手

将企业制度、产品手册、技术文档、FAQ 导入 Dify 知识库,员工可以直接提问获得答案。

适合场景:

  • 新员工培训;
  • 内部 IT 支持;
  • 产品知识查询;
  • 售前资料问答;
  • 法务和财务制度查询。

2. 智能客服机器人

基于 Dify 可以构建客服机器人,接入官网、企业微信、飞书或客服系统。

常见能力包括:

  • 自动回答常见问题;
  • 根据用户问题检索知识库;
  • 判断用户意图;
  • 将复杂问题转人工;
  • 自动生成客服回复建议。

3. 内容生产工具

Dify 适合构建内容生成类应用,例如:

  • 小红书文案生成;
  • 短视频脚本生成;
  • 商品详情页生成;
  • SEO 文章生成;
  • 周报、日报、会议纪要生成。

通过 Workflow,可以将内容生产拆分为选题、提纲、正文、润色、审核等多个步骤。


4. 数据分析助手

如果结合 HTTP 工具或内部数据接口,Dify 可以作为自然语言数据分析入口。

例如:

用户:帮我分析本月销售额下降的原因。
系统:
1. 调用销售数据接口;
2. 获取区域销售数据;
3. 对比上月数据;
4. 找出下降最大的品类和区域;
5. 生成分析报告。

十三、Dify 使用建议

1. 不要只依赖一个大 Prompt

很多初学者会把所有规则都写进一个超长 Prompt 中,但这往往不稳定。更好的方式是:

  • 简单任务用 Chatbot;
  • 复杂任务用 Workflow;
  • 外部系统调用用 Agent;
  • 企业资料问答用知识库。

2. 知识库内容要定期维护

RAG 应用的质量不仅取决于模型,也取决于知识库质量。

建议:

  • 删除过期文档;
  • 合并重复内容;
  • 为重要文档添加清晰标题;
  • 使用结构化 FAQ;
  • 定期测试召回效果;
  • 对低质量回答进行反馈优化。

3. 生产环境注意安全

如果用于企业生产环境,需要关注:

  • API Key 安全;
  • 用户权限控制;
  • 数据脱敏;
  • 日志合规;
  • 模型调用成本;
  • 请求频率限制;
  • 私有化部署安全策略。

十四、总结

Dify 的更新方向非常清晰:它正在从“低代码 AI 应用构建工具”逐步演进为“企业级 AI 应用开发与编排平台”。

从最新能力来看,Dify 的核心价值主要体现在:

  • 通过 Workflow 提升复杂任务编排能力;
  • 通过 Agent 实现工具调用和任务执行;
  • 通过知识库与 RAG 降低模型幻觉;
  • 通过多模型接入增强灵活性;
  • 通过 API 发布加速业务集成;
  • 通过私有化部署满足企业安全要求;
  • 通过日志和监控提升生产可控性。

对于开发者而言,Dify 的最大优势是可以快速把 AI 想法变成可运行、可调用、可迭代的应用。
对于企业而言,Dify 的价值在于它提供了一套相对完整的 AI 应用工程化方案,能够帮助团队更快地把大模型能力接入真实业务流程。

如果你正在构建 AI 客服、知识库助手、智能体应用、内容生成工具或企业自动化工作流,Dify 都是一个非常值得关注和实践的开源平台。

目录结构
全文