为什么会有Dify?
近年来大规模语言模型的崛起,带来了一个新兴的概念LLMOps(Large Language Model Operations),LLMOps是一个涵盖了大型语言模型(如GPT系列)开发、部署、维护和优化的一整套实践和流程。
LLMOps 的目标是确保高效、可扩展和安全地使用这些强大的 AI 模型来构建和运行实际应用程序。它涉及到模型训练、部署、监控、更新、安全性和合规性等方面。
用一句话描述,LLMOps有助于提升大语言模型在实际应用中的效率和表现。在众多的LLMOps应用中,有一款在Github上拥有54.9K Star的开源项目备受欢迎,这就是Dify, 官方给出的表述如下:
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
Dify 一词源自 Define + Modify,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you)。
使用Dify LLMOps 平台后会有什么效果
步骤 |
未使用LLMOps平台 |
使用Dify LLMOps平台 |
时间差异 |
开发应用前&后端 |
集成和封装 LLM 能力,花费较多时间开发前端应用 |
直接使用 Dify 的后端服务,可基于 WebApp 脚手架开发 |
-80% |
Prompt Engineering |
仅能通过调用 API 或 Playground 进行 |
结合用户输入数据所见即所得完成调试 |
-25% |
数据准备与嵌入 |
编写代码实现长文本数据处理、嵌入 |
在平台上传文本或绑定数据源即可 |
-25% |
应用日志与分析 |
编写代码记录日志,访问数据库查看 |
平台提供实时日志与分析 |
-70% |
数据分析与微调 |
技术人员进行数据管理和创建微调队列 |
非技术人员可协同,可视化模型调整 |
-60% |
AI 插件开发与集成 |
编写代码创建、集成 AI 插件 |
平台提供可视化工具创建、集成插件能力 |
-50% |
在使用 LLMOps 平台如 Dify 之前,基于 LLM 开发应用的过程可能会非常繁琐和耗时。开发者需要自行处理各个阶段的任务,这可能导致效率低下、难以扩展和安全性问题。引入 Dify 这样的 LLMOps 平台后,基于 LLM 开发应用的过程将变得更加高效、可扩展和安全。
Dify的竞争力在哪里
在LLMOps领域,Dify是业界内备受关注的一款产品,作为一款开源项目在Github中拥有56.5K的Star, 那Dify的竞争力究竟在哪里?
- 工作流 : Dify 支持在可视化的画布上快速构建出一个可以执行自动化任务的 AI 应用;
- 支持大多数市面上流行的 AI 模型 :包括 ChatGPT、Mistral、Llama3 以及通义千问等;
- 直观简洁的Prompt IDE:可以用于制作提示、比较模型性能以及向基于聊天的应用程序添加文本转语音等附加功能;
- RAG 功能 :广泛的RAG功能,涵盖从文档摄取到检索的所有内容,并支持从PDF、PPT和其他常见文档格式中提取文本。
- 代理功能:Dify 内置了 50 多个工具 ,例如 Google Search、DELL·E、Stable Diffusion 和 WolframAlpha,也可以自定义工具。可以基于LLM函数调用或ReAct定义代理,并为代理添加预构建或自定义工具
- LLMOps :支持监控和分析应用程序日志和性能。可以根据生产数据和注释不断改进提示、数据集和模型监控和分析应用程序日志和性能;
- 后端即服务:Dify 的所有产品 都附带相应的 API ,因此我们也可以很轻松地将 Dify 集成到自己的业务中去。
如何快速部署Dify
计算巢提供了快速部署Dify的解决方案,有单机版和高可用版两种方案,单机版通过Docker Compose快速部署Dify, 此种部署方式不具备高可用、可伸缩的特性,不适合生产环境下使用,推荐用于开发测试。高可用版提供了部署Dify的最佳实践,基于阿里云ACK部署的Dify支持高可用、弹性伸缩等能力,且同时支持集成云数据库, 可以实现Dify稳定、高性能部署,推荐用于生产环境。这里主要介绍部署高可用版的详细步骤:
- 提示填写部署参数: 模板选择"高可用版",配置Kubernetes, 如果想使用已有的ACK集群,需要选择ACK集群Id,为了提高部署成功率和稳定性,推荐使用新建容器集群,如果选择已有ACK,最后需要手动进行服务访问配置。 若选择"新建容器集群",需要配置节点规格、节点密码等。
- 配置Postgres数据库,可以选择开源的Postgres,也可以选择阿里云的云数据库Postgres,如果选择新建云数据库,需要进行相关配置
- 配置Reids数据库,可以选择开源的redis,也可以选择阿里云的云数据库Postgres,如果选择新建云数据库,需要进行相关配置
- 配置向量数据库,可以选择开源的Weaviate,也可以选择阿里云的AnalyticDB数据库,如果选择新建云数据库,需要进行相关配置,注意这里需要填写AK/SK信息用于访问AnalyticDB, 建议使用Ram子账号的AK/SK,Ram子账号需要配置AliyunGPDBFullAccess权限。
- 配置网络参数,可以选择新建专有网络, 也可以选择已有专有网络,选择两个可用区,提高服务可用性。
- 进行服务相关配置,如果您有可用的域名,可填写您自己的域名,否则默认使用计算巢提供的测试域名,测试域名需要绑定host后使用,否则无法访问。 如果需要开启TLS配置,需要上传TLS证书 建议开启高可用配置,开启后可以提高应用的容灾能力和对峰值负载的处理能力。Helm配置推荐保持默认,部署成功后可修改Helm配置。
- 数据填写完成后可以看到对应询价明细,确认参数后点击下一步:确认订单。 确认订单完成后同意服务协议并点击立即创建 进入部署阶段。
- 等待部署完成后就可以开始使用服务,进入服务实例详情可查看使用说明和Dify访问页面,若选择新建ACK集群,需要按照使用说明的提示绑定host或配置解析后使用。
如果选择已有ACK集群进行部署,为了避免对您已有集群的访问配置产生影响,需要手动配置访问入口, 推荐两种方式
- 方式一: 通过负载均衡访问,按照如下步骤进行配置 配置完成后,您会看到ack-dify服务的外部IP地址(External IP),将该外部IP地址输入浏览器地址栏即可访问Dify服务。
- 方式二: 通过配置Ingress访问,按照如下步骤进行配置 首先集群中安装Nginx Ingress Controller组件,再配置相关路由,按照如下步骤配置 配置完成后,您会看到Ingress的端点,将此端点对域名绑定host或配置解析后,即可通过域名访问Dify。
如何更新 Dify 版本
Dify 版本不断迭代,如果已经部署的 Dify 想升级新版本,可以在计算巢控制台“修改配置”来更新 Helm 的配置
修改其中 api 和 web 的版本号,可实现 Dify 版本的更新,注意:一定是有效的版本号。
如何使用Dify
访问Dify地址,设置管理员账号密码后即可以登录使用。
这里快速构建一个聊天应用来介绍如何使用Dify:
- 模型配置:点击头像,选择设置,弹出设置对话框,点击模型供应商,即可以配置访问模型的API Key,这里以通义千问为例
- 创建应用:Dify支持聊天助手、文本生成应用、Agent、工作流4种类型应用,这里创建一个聊天应用
建一个空白应用,在应用里面就可以选择模型,可以设置机器人的提示词、变量等
- 配置知识库:Dify 也 支持创建知识库 ,点击页面顶部的知识库 Tab,在对应的页面按照以下步骤创建一个新的知识库
我们还可以将知识库接入到刚刚创建好的应用中去,回答的结果引用我们知识库中的内容。
- 发布使用:应用创建并编排好之后,点击右上角的发布按钮进行发布
除此之外 Dify 还额外提供了三个功能给我们,分别是:
- 运行 :会打开一个新的页面,页面 url 地址是 dify 为这个应用生成的一个唯一的 url 链接;
- 嵌入网站 :就是提供三种嵌入方式: 以 iframe 的形式将 AI 应用集成到自己的网站中去 、通过 script 脚本的方式将一段代码 copy 到网站代码中以及通过浏览器插件的形式来集成
- 访问 API :提供接口的形式,将 AI 应用接入到其他的产品中。
以上就是 Dify 的部署及基础使用。