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

dify:开源 LLMOps平台。

单纯笔记:

一、关于 Dify


dify/README_CN.md at main · langgenius/dify · GitHub

Dify 是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。它支持多种大型语言模型,如 Claude3、OpenAI,同时与多个模型供应商合作,确保开发者能根据需求选择最适合的模型。平台提供了强大的数据集管理功能,允许用户上传、管理文本和结构化数据,以及通过可视化工具简化 Prompt 编排和应用运营,大大降低了 AI 应用开发的复杂度。Dify.AI 的开放性和低门槛设计使得即使非技术人员也能轻松创建和运营 AI 应用。此外,它支持多种应用场景,如智能客服和文本生成,满足不同行业的需求。Dify.AI 的综合能力使其成为开发者快速构建和运营 AI 应用的理想选择。本文我们会带大家一起通过 Dify 集成 Bedrock Claude3 来开启生成式 AI 之旅。

Dify 的核心理念是通过可声明式的 YAML 文件定义 AI 应用的各个方面,包括 Prompt、上下文和插件等。Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能。这些功能使得开发者能够在数天内完成 AI 应用的开发,或将 LLM 快速集成到现有应用中,并进行持续运营和改进,创造一个真正有价值的 AI 应用。Dify是一个开源的项目,源码地址:https://github.com/langgenius/dify,本文将介绍如何搭建对应的环境(本地源码启动的方式)。

二、技术架构


Dify.AI 的技术架构主要包括以下几个关键组成部分:

  1. 关键技术栈支持:Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG(Retrieval-Augmented Generation)引擎以及灵活的 Agent 框架。
  2. 可视化编排和运营:Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能,使得开发者能够在数天内完成 AI 应用的开发,或将 LLM 快速集成到现有应用中,并进行持续运营和改进。
  3. 技术栈:AI 的技术栈主要包括 Python 编程语言、TensorFlow 和 Keras 深度学习框架、以及 NLP 领域的常用库,如 NLTK 和 spaCy 等。这些技术栈的选择使得 Dify.AI 具有高度的灵活性和可扩展性。
  4. 开箱即用的应用模版和编排框架:Dify 为开发者提供了健全的应用模版和编排框架,使开发者可以基于它们快速构建大型语言模型驱动的生成式 AI 应用,并且可以随时按需无缝扩展,驱动业务增长。
  5. Dify Orchestration Studio:这是一个可视化编排生成式 AI 应用的专业工作站,提供了一个集成的环境,使开发者能够更加高效地构建和管理他们的 AI 应用。

通过这些技术架构的组成部分,Dify.AI 为开发者提供了一个全面、灵活且易于使用的平台,以支持生成式 AI 应用的快速开发和部署。

dify/README_CN.md at main · langgenius/dify · GitHub

三、部署dify


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

    CPU >= 2 Core
    RAM >= 4GB

目前 Dify 提供三种部署方式——Docker,本地,以及 K8s,用户可以结合自己的需求来进行选择

1、Docker compose 的方式来进行部署。

安装 Docker 环境

centos 8安装docker环境:docker实践(1) 入门到深入原理以及实践部署_docker深入-CSDN博客

centos 7可以使用这个部署:

sudo yum install docker
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo systemctl start docker
sudo systemctl enable docker
docker-compose version
>> Docker Compose version v2.26.1

下载 Dify 代码,

通过 docker compose 拉起环境

git clone https://github.com/langgenius/dify.git

通过 docker compose 拉起环境

cd dify/docker
docker-compose up -d

待几分钟后,环境被拉起来,可以看到类似下面的输出:

如果本地已经安装nginx占用80端口,修改docker-compose的nginx端口映射:

查看进程信息

sudo docker ps

登陆Dashboard

如上面的信息后,则环境已经部署完毕,通过查看 http://{public IP}/ 地址后,通过初始的配置账户后,登录后可以看到以下 Dashboard 信息。

 

如果是第一次访问,可以点击设置管理员账户,否则直接输入邮箱,密码登录即可。

2、源码本地部署

1)、前端环境搭建

Web 前端服务启动需要用到 Node.js v18.x (LTS) 、NPM 版本 8.x.x 或 Yarn。
1.环境安装 NodeJS + NPM

 可参考:https://blog.csdn.net/qq_29579625/article/details/135319105

2).启动步骤

(1)进入 web 目录 cd web
(2)安装依赖包 npm install
(3)配置环境变量。在当前目录下创建文件 .env.local,并复制.env.example中的内容
(4)构建代码 npm run build
(5)启动 web 服务 npm run start
(6)访问:访问 http://127.0.0.1:3000(如果无法访问,需要使用部署api的虚机IP进行访问,记得同步修改 .env.local中的ip地址)


3)、后端环境搭建


1.环境安装


我采用的是在win10上安装虚拟机,在虚拟机上部署docker,之所以采用这种方式,是因为在win10上安装docker desktop一直没有成功。window上创建虚拟机就不再具体讲解,可参考:https://blog.csdn.net/qq_19309473/article/details/123391749

1.1 docker安装

不建议直接使用yum install docker进行安装,后续会报docker版本相关的错误,可采用如下方式安装
打开终端,以root权限登录或使用sudo命令来执行以下命令。

1、首先,更新YUM包索引以确保获取最新的软件包信息:
sudo yum update

2、添加Docker的YUM存储库。Docker官方提供了一个YUM存储库,可以使用以下命令添加:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3、安装Docker引擎。使用以下命令安装Docker及其依赖项:
sudo yum install docker-ce docker-ce-cli containerd.io

4、启动Docker服务并设置开机自启动:
sudo systemctl start docker
sudo systemctl enable docker

5、确保Docker已经正确安装并运行,可以运行以下命令来检查Docker版本:
docker --version
如果显示了Docker的版本信息,说明安装成功。

这些步骤将会在你的系统上安装Docker,你现在就可以使用docker命令来管理容器和镜像了。

1.2 docker-compose安装

首先确保系统已经安装上了docker

1、下载tar包并上传至服务器解压
下载地址:https://package-all-1257309290.cos.ap-beijing.myqcloud.com/docker_compose_install.tar.gz
tar zxf docker_compose_install.tar.gz

2、安装docker-compose
解压后得到一个docker_compose_install
cd docker_compose_install
docker_compose_install文件夹里面有四个文件
执行compose的安装脚本
bash compose-install.sh

3、验证
docker-compose -version
可以使用了

如果docker没有安装的话
那么执行docker-install.sh脚本安装即可
bash docker-install.sh


1.3 Anaconda 安装

1.下载Anaconda安装脚本
下载路径:https://repo.anaconda.com/archive/index.html

2、通过scp上传到虚机上,安装
(1) bash Anaconda3-2023.09-0-Linux-x86_64.sh
(2)查看安装协议,按下enter查看,如果enter之后不想查看,直接ctrl+c即可到下一步
在这里插入图片描述
(3)是否接受协议,输入yes


(4)是否自动化conda环境


大致内容如下:
每次启动终端,是否自动激活conda环境,默认环境通常是base,
自动激活会更新系统配置文件,启动终端时,会提示你激活的是哪个conda环境
如果不希望每次启动终端都激活conda环境,执行命令:conda config --set auto_activate_base false
如果开始选择自动化初始conda,但后来不决定这么做,可以执行命令:conda init --reverse $SHELL
在这里插入图片描述
(5)测试安装
重新打开窗口,conda list 验证conda是否安装成功

1.4 Python 3.10.x 安装

#创建名为 dify 的 Python 3.10 环境
conda create --name dify python=3.10
#切换至 dify Python 环境
conda activate dify
1.5 git 安装

yum git install


1.6 PostgreSQL, Redis 安装

PostgreSQL的安装可参照:https://blog.csdn.net/weixin_41989013/article/details/132715406
Redis安装可按照:https://www.cnblogs.com/xiaobug/p/13928438.html

2.启动步骤

2.1 进入 api 目录
cd api

2.2 复制环境变量配置文件
cp .env.example .env

2.3 生成随机密钥,并替换 .env 中 SECRET_KEY 的值
openssl rand -base64 42
sed -i ‘s/SECRET_KEY=.*/SECRET_KEY=<your_value>/’ .env

2.4 安装依赖包
pip install -r requirements.txt,这个在执行时,可能存在某些依赖包无法安装的情况,可以先找到requirements.txt中无法安装的依赖,先删除,后面再单独安装。

2.5 执行数据库迁移将数据库结构迁移至最新版本。
flask db upgrade

2.6 启动 API 服务
flask run --host 0.0.0.0 --port=5001 --debug

四、部署llama3玩转dify


先部署llama3

具体部署参考上面文档。

1、增加ollam模型:

模型名称固定为:llama3:70b和llama3:8b

2、发布模型

在应用选择模型进行发布:

3、对话聊天

相关文章:

  • Android Retrofit 封装模版
  • 物体检测算法-R-CNN,SSD,YOLO
  • 苍穹外卖①
  • Unity数据持久化2——XML
  • JavaScript 中的变量声明方式及其应用场景
  • MySQL学习之DQL语句(数据查询语言)
  • MySQL——表的约束
  • 使用Flask ORM进行数据库操作的技术指南
  • 卷积神经网络(CNN)详细介绍及其原理详解
  • 力扣279. 完全平方数
  • 赶紧收藏!2024 年最常见 20道 Redis面试题(四)
  • 《Python编程从入门到实践》day37
  • 小林coding笔记
  • 英语学习笔记24——Give me/us/him/her/them some ...
  • 5.23小结
  • “大数据应用场景”之隔壁老王(连载四)
  • 【5+】跨webview多页面 触发事件(二)
  • Android组件 - 收藏集 - 掘金
  • Apache Spark Streaming 使用实例
  • JS数组方法汇总
  • js算法-归并排序(merge_sort)
  • Python - 闭包Closure
  • Python_OOP
  • React 快速上手 - 07 前端路由 react-router
  • Redis的resp协议
  • Spring Boot MyBatis配置多种数据库
  • win10下安装mysql5.7
  • 大数据与云计算学习:数据分析(二)
  • 代理模式
  • 京东美团研发面经
  • 力扣(LeetCode)21
  • 前端自动化解决方案
  • 如何设计一个微型分布式架构?
  • 十年未变!安全,谁之责?(下)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 在Mac OS X上安装 Ruby运行环境
  • 《天龙八部3D》Unity技术方案揭秘
  • MPAndroidChart 教程:Y轴 YAxis
  • #laravel 通过手动安装依赖PHPExcel#
  • #QT项目实战(天气预报)
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (Java)【深基9.例1】选举学生会
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (五)c52学习之旅-静态数码管
  • .NET CORE Aws S3 使用
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .ui文件相关
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法