当前位置: 首页 > news >正文

Docker 快速部署 Dify + 应用构建完整流程

目录

  • 一、环境配置
    • 1. Linux环境
    • 2. Windows环境
  • 二、Dify部署
    • 1. 代码准备
    • 2. 修改环境变量 .env 文件
    • 3. 修改 docker-compose.yaml 文件
    • 4. 启动Docker容器
    • 5. 访问Dify
  • 三、Dify应用
    • 1. 接入大模型
      • 1.1 模型类型
      • 1.2 接入模型
    • 2. 构建应用
      • 2.1 应用类型
      • 2.2 构建应用方式
      • 2.3 创建面试官助手

  • 使用 Docker Compose 快速部署 Dify 1.4.0 版本

一、环境配置

1. Linux环境

# 安装 Docker,Docker 19.03 or later
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
# 安装 docker-compose,Docker Compose 1.28 or later
curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 验证安装
docker -v
docker-compose -v
# 如失效,自行百度~

2. Windows环境

  • 可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop。
  • 也可以直接在 WSL 2 中安装命令行版本的 Docker。
  • 建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。
  • 机器要求:CPU >= 2 Core,RAM >= 4 GiB

二、Dify部署

1. 代码准备

# 克隆 Dify 源代码至本地环境,根据需要选择版本
git clone https://github.com/langgenius/dify.git --branch 1.4.0

2. 修改环境变量 .env 文件

# 进入 Dify 源代码的 Docker 目录
cd dify/docker
# 复制环境配置文件
cp .env.example .env
# 修改.env环境配置文件,本次部署使用Milvus向量库,需更改.env文件中的VECTOR_STORE值为milvus
VECTOR_STORE=milvus
# 确保`.env` 文件中的 Milvus 配置
MILVUS_URI=http://host.docker.internal:19530
# docker-compose.yaml文件milvus-standalone 服务中的环境变量配置common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true}表示启用授权功能,需要设置用户名和密码,否则会报错
# 连接用户名,默认为root
MILVUS_USER=root
# 连接密码,默认为Milvus
MILVUS_PASSWORD=Milvus
  • 注意,通过指定VECTOR_STORE=milvus ,Dify 会在 docker 中调出 Milvus Standalone 服务器。即可以通过http://localhost:19530 从 Docker 外部访问服务器,其他 Dify 容器要想在 Docker 环境内与之对话,也需要连接到特殊的 DNS 名称host.docker.internal 。因此,我们将http://host.docker.internal:19530 设置为MILVUS_URI

3. 修改 docker-compose.yaml 文件

  • 由于默认镜像地址国内无法访问,需更换业务服务和基础组件的镜像地址
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-api:1.4.0
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-web:1.4.0
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/postgres:15-alpine
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-sandbox:0.2.12
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-plugin-daemon:0.0.10-local
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu/squid:latest
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:latest
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/quay.io/coreos/etcd:v3.5.5
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/minio/minio:RELEASE.2023-03-20T20-16-18Z
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/milvusdb/milvus:v2.5.0-beta

4. 启动Docker容器

# 如果版本是 Docker Compose V2,使用以下命令
docker compose up -d
# 如果版本是 Docker Compose V1,使用以下命令
docker-compose up -d
# 检查是否所有容器都正常运行
docker compose ps
  • 根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 $ docker compose version 命令检查版本

  • 所有容器均已启动,包括 3 个业务服务 api / worker / web,以及 7 个基础组件 milvus / milvus-minio/ db / redis / nginx / ssrf_proxy / sandbox,如下:
    在这里插入图片描述

  • 注意:每次修改编辑 .env 文件中的环境变量值(自定义配置),都需要重启Dify(docker compose down,docker compose up)

5. 访问Dify

  • 先前往管理员初始化页面设置管理员账户,管理员拥有的最大权限,可用于创建应用和管理 LLM 供应商等
  • 设置完成后可访问 Dify 主页面
# 设置管理员账户
# 本地环境 
http://localhost/install 
# 服务器环境 
http://your_server_ip/install
# 访问Dify
# 本地环境 
http://localhost 
# 服务器环境 
http://your_server_ip

在这里插入图片描述

三、Dify应用

1. 接入大模型

1.1 模型类型

  • 在 Dify 中,按模型的使用场景将模型分为以下 4 类:
  1. 系统推理模型(llm 文本生成模型)。 在创建的应用中,用的是该类型的模型。智聊、对话名称生成、下一步问题建议用的也是推理模型。系统推理模型供应商包括OpenAI、Azure OpenAI Service、Anthropic、Hugging Face Hub、Replicate、Xinference、OpenLLM、讯飞星火、文心一言、通义千问、Minimax、ZHIPU(ChatGLM)等。
  2. Embedding 模型(text_embedding 文本 Embedding 模型)。在知识库中,将分段过的文档做 Embedding 用的是该类型的模型。在使用了知识库的应用中,将用户的提问做 Embedding 处理也是用的该类型的模型。已支持的 Embedding 模型供应商包括OpenAI、ZHIPU(ChatGLM)、Jina AI(Jina Embeddings)等。
  3. Rerank 模型。Rerank 模型用于增强检索能力,改善 LLM 的搜索结果。已支持的 Rerank 模型供应商包括Cohere、Jina AI(Jina Reranker)等。
  4. speech2text 语音转文字模型。
  5. tts 文字转语音模型。
  6. moderation 敏感内容审查模型,提供内容审查功能,确保不会输出包含有争议的内容,比如暴力,性和非法行为等内容。

1.2 接入模型

  • 在 Dify 的 设置 — 模型供应商 页面内添加并配置所需要的模型,本次接入模型为通义千问(接入自有模型的模型供应商),接入自有模型的供应商后,Dify 会自动接入该供应商下的所有模型。

  • 模型配置具体步骤为:进入设置-模型供应商-安装模型供应商(通义千问)-从阿里云百炼获取 API Key-配置API KEY即可完成模型配置,配置完模型后,就可以在应用中使用这些模型了。
    在这里插入图片描述

  • 系统模型配置

在这里插入图片描述

2. 构建应用

2.1 应用类型

  • 在 Dify 中,一个“应用”是指基于大语言模型构建的实际场景应用。通过创建应用,你可以将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式,也包含了具体的交付物。一个应用为开发者交付了:
    • 封装友好的 API,可由后端或前端应用直接调用,通过 Token 鉴权
    • 开箱即用、美观且托管的 WebApp,你可以 WebApp 的模板进行二次开发
    • 一套包含提示词工程、上下文管理、日志分析和标注的易用界面
  • Dify 中提供了五种应用类型:
    • 聊天助手:基于 LLM 构建对话式交互的助手
    • 文本生成应用:面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等
    • Agent:能够分解任务、推理思考、调用工具的对话式智能助手
    • Chatflow对话流:适用于定义等复杂流程的多轮对话场景,具有记忆功能的应用编排方式
    • Workflow工作流:适用于自动化、批处理等单轮生成类任务的场景的应用编排方式

2.2 构建应用方式

  • 基于应用模板创建(新手推荐):可以从导航选择 「工作室 」,在应用列表内选择 「从模板创建」
  • 创建一个空白应用:可以从导航选择 「工作室」 ,在应用列表内选择 「从空白创建 」
  • 通过 DSL 文件(本地/在线)创建应用:Dify DSL 是由 Dify.AI 所定义的 AI 应用工程文件标准,文件格式为 YML。该标准涵盖应用在 Dify 内的基本描述、模型参数、编排配置等信息。

2.3 创建面试官助手

  • 首页选择创建空白应用,填上应用名称(面试官助手),应用类型选择聊天助手
  • 编排应用,创建应用后会自动跳转到应用概览页。点击左侧菜单 编排 来编排应用
  • 填写提示词:提示词用于约束 AI 给出专业的回复,让回应更加精确。你可以借助内置的提示生成器,编写合适的提示词。提示词内支持插入表单变量,例如 {{input}}。提示词中的变量的值会替换成用户填写的值。
    在这里插入图片描述
http://www.dtcms.com/a/411450.html

相关文章:

  • 矩形碰撞检测
  • 队列+宽搜(BFS)-103.二叉树的锯齿形层序遍历-力扣(LeetCode)
  • 使用Eigen矩阵库,计算Ax = B (m>n)矩阵的方法
  • MIT 6.S081 文件系统的基本结构 (Lab10:File system)
  • 跨境电商建站公司北京建设安全网络平台87
  • 【读书笔记】深入理解JVM C1~3
  • Spring Boot携手Leaflet,点亮省级旅游口号WebGIS可视化之路
  • 第一次备考怎么记笔记?三步模板直接用​
  • 网站建设基础筹备宁河做网站公司
  • 中小型网站建设与管理总结免费h5生成网站
  • 有哪些做的好的汽配零配件网站代理网站哪个好
  • 2025GUI项目实践:Unity编辑模式下GUI运行
  • C语言:10行杨辉三角形
  • 软件开发和网站建设哪个好广西建筑培训网
  • GPU微架构演进分析--从SIMT到Scalar-Vector-Tensor计算的混合配比与调度
  • app应用网站源码建设通会员多少钱一个月
  • 分布式 WebSocket 架构设计与实现:跨节点实时通信解决方案
  • 君临天下游戏网站开发者专业的东莞网站排名
  • MHC-Net
  • 分布式专题——23 Kafka日志索引详解
  • 上海殷行建设网站天津宏宇网站建设
  • 作为 PHP 开发者,我第一次用 Go 写了个桌面应用
  • 档案网站的建设方案网站建设需要服务器么
  • Weblogic 任意文件上传漏洞(CVE-2018-2894)
  • C++11部分
  • springboot房地产销售管理系统的设计与实现(代码+数据库+LW)
  • 做寂网站房地产网站做编辑刚刚入行
  • 网站设计哪家比较好wordpress放弃php
  • 百度收录排名好的网站我建设的网站打开很慢
  • Spring为什么推荐使用构造函数进行依赖注入??