私有化部署体验 Dify!

黄老邪 爬虫与AI前沿 2024年08月28日 14:09

简介

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。

功能比较

图片

使用 Dify

1、Dify 云服务版:任何人都可以零设置尝试。它提供了自部署版本的所有功能,并在沙盒计划中包含 200 次免费的 GPT-4 调用。

2、Dify Premium:是一款 AWS AMI 产品,允许自定义品牌,并可作为 EC2 一键部署到你的 AWS VPC 上。前往 AWS Marketplace 进行订阅并使用,它适合以下场景:

  • 在中小型企业内,需在服务器上创建一个或多应用程序,并且关心数据私有化。
  • 你对 Dify Cloud 订阅计划感兴趣,但所需的用例资源超出了计划内所提供的资源。
  • 你希望在组织内采用 Dify Enterprise 之前进行 POC 验证。

3、Dify 社区版:即开源版本,你可以通过以下两种方式之一部署 Dify 社区版。

  • Docker Compose 部署
  • 本地源码启动

基本信息

1、在线体验:https://dify.ai/

2、开源地址:https://github.com/langgenius/dify

3、官方文档:https://docs.dify.ai/v/zh-hans

核心功能列表

1、工作流:在画布上构建和测试功能强大的 AI 工作流程。

2、全面的模型支持:与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。 完整的支持模型提供商列表可在此处找到。

图片

3、Prompt IDE: 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。

4、RAG Pipeline: 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。

5、Agent 智能体: 可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。

  • Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DALL·E、Stable Diffusion 和 WolframAlpha 等。

6、LLMOps: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。

7、后端即服务: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。

Dify 私有化部署

系统要求

在安装 Dify 之前,请确保您的机器满足以下最低系统要求:

  • CPU >= 2 Core
  • RAM >= 4GB

快速启动

首先,克隆 Dify 源代码至本地,然后进入 docker 目录,复制一份环境变量,采用默认端口,一键启动:

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
图片

如果报错:

Error response from daemon: Get "https://registry-1.docker.io/v2/": EOF

请修改daemon.json文件,设置国内镜像。

"registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/"
  ]
  • Linux:vim /etc/docker/daemon.json
  • Mac:vim /Users/oscar/.docker/daemon.json

启动成功后,你会发现共有 9 个容器:

  • 3 个业务服务:api、worker、web
  • 6 个基础组件:weaviate、db、redis、nginx、ssrf_proxy、sandbox
图片

内存占用共计 1790 M,所以至少确保有一台 2G 内存的机器。

图片

因为项目中启动了一个容器 nginx 将 web 服务转发到 80 端口,所以在浏览器中,直接输入公网 IP 即可,设置一下管理员的账号密码,进入应用主界面。图片

图片
图片

接入大模型

设置里找到模型供应商,这里已经支持了上百款模型,我这里主要先接入了三款有免费额度的模型。图片

图片按照提示接入大模型图片

Dify 接入 Ollama 部署的本地模型

Ollama 是一个本地推理框架客户端,可一键部署如 Llama 2, Mistral, Llava 等大型语言模型。 Dify 支持接入 Ollama 部署的大型语言模型推理和 embedding 能力。

载并启动 Ollama

1、下载 Ollama:访问 https://ollama.ai/download,下载对应系统 Ollama 客户端。

2、运行 Ollama 并与 Llava 聊天

ollama run llava

启动成功后,ollama 在本地 11434 端口启动了一个 API 服务,可通过 http://localhost:11434 访问。

3、在 Dify 中接入 Ollama 在 设置 > 模型供应商 > Ollama 中填入:

图片
  • 模型名称:llava

  • 基础 URL:http://127.0.0.1:11434,此处需填写可访问到的 Ollama 服务地址。

(1)、若 Dify 为 docker 部署,建议填写局域网 IP 地址,如:http://192.168.1.100:11434 或 docker 宿主机 IP 地址,如:http://172.17.0.1:11434。

(2)、若为本地源码部署,可填写 http://localhost:11434。

  • 模型类型:对话

  • 模型上下文长度:4096

  • 模型的最大上下文长度,若不清楚可填写默认值 4096。

  • 最大 token 上限:4096:模型返回内容的最大 token 数量,若模型无特别说明,则可与模型上下文长度保持一致。

  • 是否支持 Vision:是(当模型支持图片理解(多模态)勾选此项,如 llava。)

点击 "保存" 校验无误后即可在应用中使用该模型。

Embedding 模型接入方式与 LLM 类似,只需将模型类型改为 Text Embedding 即可。

创建工作流

回到主页,点击创建空白应用,这里的聊天助手和文本生成应用,是功能最为单一的 LLM 应用,都不支持工具和知识库的接入。

图片Agent 和 工作流的区别:

  • Agent:智能体,基于大语言模型的推理能力,可以自主选择工具来完成任务,相对简单。
  • 工作流:以工作流的形式编排 LLM 应用,提供更多的定制化能力,适合有经验的用户。图片通常,我们需要 Agent 和 工作流配合使用,Agent 负责对话理解,Workflow 处理具体的定制功能。