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

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之  使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

目录

AGI 之 【Dify】 之  使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

一、简单介绍

二、Docker 下载安装

三、Dify 下载安装,及部署

附录:一些报错问题处理

一、启动容器报错 Get "https://registry-1.docker.io/v2/": net/http: request canceled

二、docker compose up -d 的时候,docker-db-1 总是重启 Restarting,无法正常 Running


一、简单介绍

AGI,即通用人工智能(Artificial General Intelligence),是一种具备人类智能水平的人工智能系统。它不仅能够执行特定的任务,而且能够理解、学习和应用知识于广泛的问题解决中,具有较高的自主性和适应性。AGI的能力包括但不限于自我学习、自我改进、自我调整,并能在没有人为干预的情况下解决各种复杂问题。

Dify 是一个开源的大语言模型(LLM)应用开发平台,它旨在简化和加速生成式 AI 应用的创建和部署。这个平台结合了后端即服务(Backend as Service, BaaS)和 LLMOps 的理念,为开发者提供了一个用户友好的界面和一系列强大的工具,使他们能够快速搭建生产级的 AI 应用。

Dify 的核心功能包括:

  1. 低代码/无代码开发:通过可视化的方式允许开发者轻松定义 Prompt、上下文和插件等,无需深入底层技术细节。
  2. 模块化设计:采用模块化的设计,每个模块都有清晰的功能和接口,可以根据需求选择性地使用。
  3. 丰富的功能组件:包括 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,帮助开发者从原型到生产的全过程。
  4. 支持多种大语言模型:已支持 OpenAI GPT 系列等模型,并计划进一步扩展。
  5. 数据处理和特征工程工具:提供了数据清洗、特征选择、特征变换等功能,帮助开发者更好地准备数据。
  6. 集成外部知识源:允许自定义 API 接入外部知识源,让大型语言模型深入理解企业知识和业务。

Dify 提供了四种基于 LLM 构建的应用程序,可以针对不同的应用场景和需求进行优化和定制,包括聊天助手、文本生成、智能代理和工作流程。此外,Dify 还支持从 Notion 导入数据,并设置同步,使得数据在 Notion 更新后便自动同步到 Dify。Dify 中存在知识库数据集的单独 API,这与他的服务 API 不同,可以单独使用数据集的 API。

Dify 适合各种技术背景的开发者使用,即使是没有编程基础的用户也能快速上手并参与到 AI 应用的定义和数据运营过程中。作为一个开源项目,Dify 在 GitHub 上有活跃的社区支持,鼓励用户贡献和分享经验。

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 的主要特点包括:

  1. 轻量级:Docker 容器与其他虚拟化技术相比,占用的资源更少,启动速度更快。

  2. 可移植性:Docker 容器可以在不同的机器、数据中心或云服务提供商之间轻松移动。

  3. 环境一致性:Docker 确保应用在不同环境之间具有一致性,从而减少了“在我机器上可以运行”的问题。

  4. 快速部署:Docker 容器的启动时间通常只需几秒钟,这使得部署应用变得更加迅速。

  5. 微服务架构:Docker 容器非常适合微服务架构,每个服务可以独立运行在自己的容器中。

  6. 版本控制和团队协作:Docker 容器可以与现代的 DevOps 工具链紧密结合,支持持续集成和持续部署(CI/CD)。

  7. 隔离性:每个容器都是相互隔离的,运行在自己的环境中,拥有自己的文件系统。

  8. 安全性:容器提供了一个额外的安全层,因为它们运行在用户空间,并且可以利用 Linux 内核的安全特性。

Docker 使用客户端-服务器架构,使用 Docker 守护进程来管理容器。Docker 客户端与守护进程通信,而守护进程负责构建、运行和分发容器。用户可以通过命令行接口(CLI)、Docker Compose(用于定义和运行多容器 Docker 应用的工具)或图形用户界面(GUI)与 Docker 交互。

注意 Dify Docker部署有部署要求,不过目前一般的电脑都符合要求:

二、Docker 下载安装

Docker Windows 版本下载地址:Windows | Docker Docs

为了在 Windows 系统上部署 Dify,你需要先安装 Docker Desktop。

Windows 中的 Docker 可以依赖于两种环境:Hyper-V(虚拟环境)和 WSL(Windows Linux 子系统)。

其中,利用 WSL 环境的部署方案,这需要你从 Microsoft Store 下载一个 Linux 发行版。

如果你的电脑无法使用 Microsoft Store 下载,比如生产环境电脑,那么可以选择使用基于 Hyper-V 的部署方法。启用 Hyper-V 环境的两种方法,下面介绍启用 Hyper-V 环境的方法,任选其一操作即可:

1、以管理员权限打开 PowerShell 控制台

2、输入如下命令即可

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All 

3、或者使用 “启用或关闭 Windows 功能”,找到并勾选“Hyper-V”,然后点击“确定”按钮以启用该功能

4、开启 Hyper-V 功能,会提示重启电脑,这时候重启电脑即可

5、下载 Docker ,根据需要选择下载即可

6、下载好Docker ,双击安装即可

值得注意的是如果使用 Hyper-V ,则需要取消勾选第一项

三、Dify 下载安装,及部署

Dify 官网:Dify.AI · 生成式 AI 应用创新引擎

Dify 进行 Docker Compose 部署可以参考:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose

1、进入 Dify  官网,如图点击进入 Github ,克隆或者下载代码

2、下载好后,Shift + 鼠标右键,打开 Powershell

3、在 Powershell 中,进入 Dify 源代码的 Docker 目录 ,复制环境配置文件

命:1:cd .\docker\

命令2:cp .env.example .env

4、这里就要启动 Docker,确定当前的 Docker  版本

根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。

你可以通过命令:docker compose version 检查版本

  •     如果版本是 Docker Compose V2,使用以下命令:docker compose up -d
  •     如果版本是 Docker Compose V1,使用以下命令:docker-compose up -d

5、这里是 V2 版本,使用 docker compose up -d 命令来启动容器

运行命令后,开始会拉取数据,然后会看到类似以下的输出,显示所有容器的状态和端口映射:

6、运行完之后,输入 命令可以看到运行的服务

命令:docker compose ps

7、docker 界面也运行正常

8、在浏览器上,输入 http://localhost/install ,这时候也会正常显示设置管理员账号界面

输入信息,配置登录账号

9、在浏览器上,输入 http://localhost/signin,这时候也会正常显示登陆界面,登陆即可

10、登录之后,在工作室创建你的应用,开始玩转 Dify 吧

附录:一些报错问题处理

一、启动容器报错 Get "https://registry-1.docker.io/v2/": net/http: request canceled

Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

分析可能原因:

1)这个是因为源的问题,我们可以使用国内的镜像源。具体操作为:找到C:\Users\Administrator.docker\daemon.json(或者C:\Users\你的用户名.docker\daemon.json)文件

(如果.docker文件下没有daemon.json文件,就自己手动新增)

2)然后添加以下内容:

{"registry-mirrors": ["https://docker.211678.top","https://docker.1panel.live","https://hub.rat.dev","https://docker.m.daocloud.io","https://do.nark.eu.org","https://dockerpull.com","https://dockerproxy.cn","https://docker.awsl9527.cn"]
}

3)保存后重启docker,重启操作为在打开docker Desktop的前提下,点击电脑右小角的小图标,点击“Restart ”,版本不同可能显示不同。

二、docker compose up -d 的时候,docker-db-1 总是重启 Restarting,无法正常 Running

此时 http://localhost/install 界面也一直在转圈,网页一直加载中

docker-db-1 相关日志如下:

running bootstrap script ... 2024-10-14T04:20:59.355405500Z The files belonging to this database system will be owned by user "postgres".
2024-10-14 12:20:59 This user must also own the server process.
2024-10-14 12:20:59 
2024-10-14 12:20:59 The database cluster will be initialized with locale "en_US.utf8".
2024-10-14 12:20:59 The default database encoding has accordingly been set to "UTF8".
2024-10-14 12:20:59 The default text search configuration will be set to "english".
2024-10-14 12:20:59 
2024-10-14 12:20:59 Data page checksums are disabled.
2024-10-14 12:20:59 
2024-10-14 12:20:59 fixing permissions on existing directory /var/lib/postgresql/data/pgdata ... ok
2024-10-14 12:19:58 2024-10-14 04:19:58.620 UTC [63] FATAL:  data directory "/var/lib/postgresql/data/pgdata" has invalid permissions
2024-10-14 12:19:58 2024-10-14 04:19:58.620 UTC [63] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
2024-10-14 12:19:58 child process exited with exit code 1
2024-10-14 12:19:58 initdb: removing contents of data directory "/var/lib/postgresql/data/pgdata"
2024-10-14 12:20:59 creating subdirectories ... ok
2024-10-14 12:20:59 selecting dynamic shared memory implementation ... posix
2024-10-14 12:20:59 selecting default max_connections ... 20
2024-10-14 12:21:00 selecting default shared_buffers ... 400kB
2024-10-14 12:21:00 selecting default time zone ... UTC
2024-10-14 12:21:00 creating configuration files ... ok
2024-10-14 12:21:00 2024-10-14 04:21:00.539 UTC [63] FATAL:  data directory "/var/lib/postgresql/data/pgdata" has invalid permissions
2024-10-14 12:21:00 2024-10-14 04:21:00.539 UTC [63] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).
2024-10-14 12:21:00 child process exited with exit code 1
2024-10-14 12:21:00 initdb: removing contents of data directory "/var/lib/postgresql/data/pgdata"
2024-10-14 12:21:00 running bootstrap script ...

解决方式之一如下

1、在 dify/docker 文件夹下找到 docker-compose.yaml

2、找到文件夹中的 volumes/db/data ,替换为 postgres-data,如下图

(不同版本,内容可能有些不一样)

3、最后在末尾,添加上 postgres-data

4、保存上面修改,然后在 powershell down 一下 容器

命令:docker compose down -v

5、之后,再次重新启动一下容器

命令:docker compose up

6、docker-db-1 运行正常了

相关文章:

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 一、简单介绍 二、Docker 下载安…...

机器学习摘下诺奖桂冠

前言 近日,2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家,如今却将全球范围内对机器学习和神经网络的研究和开发作为了一…...

营销邮件软件:提升邮件营销效率必备工具!

营销邮件软件选择技巧?免费高效的邮件营销软件推荐? 如何高效地管理和优化邮件营销活动成为了企业面临的一大挑战。营销邮件软件成为提升邮件营销效率的必备工具。MailBing将深入探讨营销邮件软件的功能、优势以及如何选择合适的工具。 营销邮件软件&a…...

鸿蒙开发 四十五 鸿蒙状态管理(嵌套对象界面更新)

当运行时的状态变量变化,UI重新渲染,在ArkUI中称为状态管理机制,前提是变量必须被装饰器修饰。不是状态变量的所有更改都会引起刷新,只有可以被框架观测到的更改才会引起UI刷新。其中boolen、string、number类型,可观察…...

第 6 章:vue-router

1. router 相关理解 1.1 vue-router 的理解 vue 的一个插件库,专门用来实现 SPA 应用 1.2 对 SPA 应用的理解 单页 Web 应用(single page web application,SPA)。整个应用只有一个完整的页面。点击页面中的导航链接不会刷新页…...

PaddleOCR模型转换、部署全流程(Ubuntu系统)_随记2

本篇衔接文章1、环境流程需要看随记1就可以 PaddleOCR环境搭建、模型训练、推理、部署全流程(Ubuntu系统)_随记1 一、ONNX导出 1、环境准备 主要参考官方技术文档:官方技术文档 未完做完更新... 参考:PaddleOCR-PP-OCRv4推理详解…...

Tableau 2024.3 发布!表格可视化项扩展、空间参数和 Cloud 管理器等,助力企业大规模分析

在升级至最新版前,先来详细一览 Tableau 2024.2 的最新特性吧~ Tableau 发布新版本啦!作为今年的收官之作,Tableau 2024.3 在延续经典之余,也为用户带来了不少惊喜,让企业数据分析之旅更加丰富多彩。 使用 Tableau Cl…...

即时通讯增加kafka渠道

此次给im服务增加kafka渠道&#xff0c;刚好最近有对SpringCloudStream进行了解&#xff0c;刚好用来练练手 增加kafka渠道 pom.xml 引入stream相关依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-strea…...

建造者模式和工厂模式的区别

工厂模式和建造者模式都是创建型设计模式&#xff0c;它们的主要作用都是为了简化对象的创建过程&#xff0c;但是它们在设计意图和实现细节上有着显著的区别。 总结区别&#xff1a; 关注点不同&#xff1a; 工厂模式关注的是对象的创建。建造者模式关注的是对象的构造过程…...

GEE数据集——ERA5-陆地每日汇总--ECMWF气候再分析数据集

目录 简介 数据集说明 Dataset Availability Dataset Provider Collection Snippet 空间信息 Resolution Bands Table 变量 代码 代码链接 结果 引用 许可 网址推荐 0代码在线构建地图应用 机器学习 简介 注&#xff08;2024-04-19&#xff09;&#xff1a; …...

Spring Boot 中的 @RequestMapping 和 Spring 中的 @RequestMapping 有什么区别?

在Spring框架中&#xff0c;RequestMapping注解用于映射Web请求到处理器&#xff08;Controller&#xff09;的方法上。在Spring Boot中&#xff0c;这个注解的使用方式和目的与Spring框架中是完全相同的。RequestMapping注解可以用于类或方法上&#xff0c;以声明请求的映射。…...

PROFINET开发或EtherNet/IP开发嵌入式归一板有用于工业称重秤

这是真实案例。然而&#xff0c;客户选择不展示其品牌名称。 Anybus嵌入式解决方案帮助工业称重设备制造商连接到任何工业网络。多网络连接使称重设备能够轻松访问不同的控制系统&#xff0c;从而加快上市时间。 我们最终找到了HMSNetworks的Anybus解决方案。他们的成熟技术和专…...

【Kafka】Kafka源码解析之producer过程解读

从本篇开始 打算用三篇文章 分别介绍下Producer生产消费&#xff0c;Consumer消费消息 以及Spring是如何集成Kafka 三部分&#xff0c;致于对于Broker的源码解析&#xff0c;因为是scala语言写的&#xff0c;暂时不打算进行学习分享。 总体介绍 clients : 保存的是Kafka客户端…...

深度学习笔记20_数据增强

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 一、我的环境 1.语言环境&#xff1a;Python 3.9 2.编译器&#xff1a;Pycharm 3.深度学习环境&#xff1a;TensorFlow 2.10.0 二、GPU设置…...

模板变量与php变量对比做判断

${item.create_name}如何与php变量对比 在PHP中&#xff0c;您可以通过将字符串内嵌到双引号中来将模板变量 ${item.create_name} 与PHP变量进行对比。如果您有一个PHP变量 $phpVariable 并且想要检查它是否与 ${item.create_name} 相同&#xff0c;您可以使用 str_replace 函…...

C语言 | Leetcode C语言题解之第485题最大连续1的个数

题目&#xff1a; 题解&#xff1a; int findMaxConsecutiveOnes(int* nums, int numsSize) {int maxCount 0, count 0;for (int i 0; i < numsSize; i) {if (nums[i] 1) {count;} else {maxCount fmax(maxCount, count);count 0;}}maxCount fmax(maxCount, count);…...

C语言复习概要(六)

公主请阅 1. 深入理解数组与指针在C语言中的应用1.1 数组名的理解 2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序的实现5. 二级指针6. 指针数组7. 指针数组模拟二维数组8.总结 1. 深入理解数组与指针在C语言中的应用 数组与指针是C语言的核心概念之一&#xff0c;理解…...

PyQt 入门教程(2)搭建开发环境

文章目录 一、搭建开发环境1、安装PyQt5与pyqt5-tools2、配置QtDesigner3、配置Pyuic4、配置Pyrcc 一、搭建开发环境 1、安装PyQt5与pyqt5-tools PyQt5&#xff1a; PyQt的开发库。Pyqt5-tools&#xff1a; 它是一个包含多种工具的工具包&#xff0c;旨在帮助开发者更方便地使…...

Flink Kubernetes Operator

Flink Kubernetes Operator是一个用于在Kubernetes集群上管理Apache Flink应用的工具。 一、基本概念 Flink Kubernetes Operator允许用户通过Kubernetes的原生工具&#xff08;如kubectl&#xff09;来管理Flink应用程序及其生命周期。它简化了Flink应用在Kubernetes集群上的…...

【最新华为OD机试E卷-支持在线评测】字符统计及重排(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...