跳转至

dify v1.8.1

为什么要使用 Dify

在人工智能应用开发如火如荼的今天,每一个开发者、每一个团队都面临一个核心矛盾:我们渴望快速构建功能强大、体验流畅的AI原生应用,却被复杂的工程细节、繁琐的模型调优和漫长的部署流程拖慢了脚步。我们想专注于创意和用户体验,却不得不深陷于技术实现的泥潭。

Dify 的出现,正是为了终结这种矛盾。

它不仅仅是一个工具,更是一种开发范式的革新。它让构建AI应用从“手工作坊”走向“现代化工厂”,将开发者从重复、低效的劳动中解放出来。你是否曾为了一个对话流程调试到深夜?是否曾在模型API、数据预处理、前后端联调之间疲于奔命?是否渴望快速迭代你的AI产品,却总被技术债拖累?

Dify 告诉你:是时候换一种方式了。

Dify 是什么

Dify 是一个开源的 LLM 应用开发平台。它旨在让开发者能够通过直观的图形界面,以“可视化”的方式快速构建、部署和管理基于大语言模型的 AI 应用,而无需深陷于繁杂的后端代码、基础设施维护和模型集成工作中。

你可以把它理解为你构建AI应用的“操作系统”或“工厂流水线”。它提供了从提示词编排、工作流设计、数据集管理到最终应用部署和监控的一站式服务,让你可以像搭积木一样组合出强大的AI功能。

入门示例

真实场景: 假设你是一家电商公司的开发者,需要快速为一个新上线的智能客服机器人增加“根据用户历史订单进行个性化商品推荐”的能力。

没有 Dify 时: 你需要自己编写代码调用LLM API,设计复杂的提示词来理解用户意图并查询订单数据库,处理对话状态管理,还要搭建一个后台来监控机器人的回答质量。整个过程耗时耗力。

使用 Dify 开发:

  1. 创建应用: 在 Dify 控制台创建一个新的“对话型”应用。
  2. 构建工作流: 使用可视化工作流编辑器:
    • 拖入一个“用户问题”节点作为输入。
    • 连接一个“代码”节点(或使用预置工具),编写一小段SQL查询,根据输入的用户名获取其历史订单。
    • 将查询结果和用户当前问题一起,通过一个“提示词”节点编排成清晰的指令(例如:“用户的历史订单如下:{{orders}}。请根据用户的当前问题‘{{query}}’,为其推荐相关商品。”),发送给LLM(如GPT-4)。
    • 最后用一个“回答”节点将LLM的输出返回给用户。
  3. 测试与部署: 在界面上直接与你的机器人对话测试。满意后,一键将其部署为API端点,或生成一个可嵌入的聊天窗口,集成到你的电商网站中。

整个过程,你几乎不需要写任何后端代码,而是通过图形化配置和少量的逻辑编排,就快速实现了一个复杂的功能,从而可以专注于优化推荐策略和用户体验本身。

Dify v1.8.1版本更新了什么

Dify v1.8.1 是一个以提升稳定性和开发者体验为核心的版本。它新增了从历史版本直接导出工作流DSL、支持点踩时提供具体原因等实用功能。在增强方面,优化了数据库查询性能,迁移至更现代的类型检查工具,并新增了印尼语支持。此版本还修复了若干关键问题,包括一个XSS安全漏洞和导致数据库会话“未绑定”错误的严重缺陷,为未来功能奠定了更坚实的基础。

更新日志

🌟 v1.8.1 版本新特性 🌟

欢迎来到 1.8.1 版本!🎉🎉🎉 本次发布专注于稳定性、性能改进和开发者体验增强。我们基于社区反馈构建了出色的功能并解决了关键的数据库问题。

🚀 功能

  • 从历史记录导出 DSL:能够直接从版本历史面板导出工作流 DSL。
  • 带理由的点踩功能:增强了反馈系统,允许用户在对回答点踩时提供具体原因。
  • 多模态/文件:为多模态提示消息添加了文件名支持。
  • 高级聊天文件处理:改进了高级聊天模式中的助手内容部件和文件处理。

⚡ 增强

  • 数据库查询:优化了执行部分全表扫描的 SQL 查询。
  • 类型检查:从 MyPy 迁移至 Basedpyright。
  • 印尼语支持:新增印尼语 (id-ID) 语言支持。
  • Jinja2 模板:LLM 提示的 Jinja2 模板现在支持更多变量。

🐛 修复

  • 安全/XSS:修复了 block-input 和 support-var-input 组件中的 XSS 漏洞。
  • 持久化会话管理:解决了导致出现“未绑定到会话”错误的关键数据库会话绑定问题。
  • 工作流和 UI 问题:修复了工作流发布问题,解决了 UUID v7 冲突,并处理了各种 UI 组件问题,包括模态框处理和输入框改进。

Version 1.8.1 标志着平台稳定性和开发者体验向前迈出了重要一步。迁移到现代类型检查和数据库系统,结合全面的错误修复,为未来功能奠定了更坚实的基础。

衷心感谢所有使此版本成为可能的贡献者!我们欢迎您持续反馈,以帮助我们共同持续改进平台。


升级指南

Docker Compose 部署

  1. 备份你自定义的 docker-compose YAML 文件(可选)
    cd docker
    cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
    
  2. 从 main 分支获取最新代码
    git checkout main
    git pull origin main
    
  3. 停止服务。请在 docker 目录下执行
    docker compose down
    
  4. 备份数据
    tar -cvf volumes-$(date +%s).tgz volumes
    
  5. 升级服务
    docker compose up -d
    

源码部署

  1. 停止 API 服务器、Worker 和 Web 前端服务器。
  2. 从发布分支获取最新代码:
    git checkout 1.8.1
    
  3. 更新 Python 依赖:
    cd api
    uv sync
    
  4. 然后,运行数据库迁移脚本:
    uv run flask db upgrade
    
  5. 最后,再次运行 API 服务器、Worker 和 Web 前端服务器。

变更内容

  • feat: 数据集命中测试在文档...时检索分块详细答案
  • feat: 将部分 Web API 模块迁移到 Flask-RESTX
  • chore: 优化 pnpm 版本管理并从 next lint 迁移到 eslint cli
  • Refactor: 用 exists() 替换 count() > 0 检查
  • Fix: Web 应用认证错误
  • 为 current_user 添加更多类型注解
  • 修复令牌到期时间计算错误
  • fix: JavaScript SDK 中的 files 参数在 WebAPI 中被错误地标注为 File 类型
  • fix: 工作流日志面板的圆角样式
  • feat: 将部分 Web 聊天模块迁移到 Flask-RESTX
  • refactor: 将部分 Web API 模块迁移到 Flask-RESTX
  • 功能:为工作流服务添加测试容器
  • 示例尝试移除 ignore
  • 类型测试
  • 移除额外强制转换的示例
  • chore: Plugin_daemon 服务添加 Sentry 配置
  • chore: 更新 supabase 和 pyjwt 版本并添加测试
  • 修复追踪配置
  • fix: 在聚合器节点中无法选择文件类型变量
  • feat: 为 Claude Code 优化添加 MCP 配置
  • refactor: 将中国 npm registry 配置重定位到基础镜像
  • ✨fix: ChatMessageListApi 中的 has_more 逻辑,确保在没有更多消息时行为正确。
  • 清理拼写错误的单词。
  • fix: 在 Web 应用上开始新会话时输入变量的默认值为 null
  • chore: 简化工作流详情逻辑
  • chore: 修复部分 API 描述
  • feat: 添加斜杠命令支持,优化命令选择器逻辑。
  • chore: 使用 DataFrame.map 替代已弃用的 DataFrame.applymap
  • chore: 清理导入中不必要的 mypy 抑制
  • chore: 翻译 i18n