dify:开源 LLMOps平台。

news2024/11/18 19:45:24

单纯笔记:

一、关于 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、对话聊天

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1683700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vite+ts+mock+vue-router+pinia实现vue的路由权限

0.权限管理 前端的权限管理主要分为如下&#xff1a; 接口权限路由权限菜单权限按钮权限 权限是对特定资源的访问许可&#xff0c;所谓权限控制&#xff0c;也就是确保用户只能访问到被分配的资源 1.项目搭建 创建vite项目 yarn create vite配置别名 npm install path -…

不用从头训练,通过知识融合创建强大的统一模型

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大型语言模型&#xff08;LLMs&#xff09;的开发和训练是一个复杂且成本高昂的过程。数据需求是一个主要问题&#xff0c;因为训练这些模型需要大量的标注数据来保证其准确性和泛化能力&#xff1b;计算资源也是一个…

关于基础的流量分析(1)

1.对于流量分析基本认识 1&#xff09;简介&#xff1a;网络流量分析是指捕捉网络中流动的数据包&#xff0c;并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 2&#xff09;在我们平时的考核和CTF比赛中&#xff0c;基本每次都有…

【Linux取经路】进程通信——共享内存

文章目录 一、直接原理1.1 共享内存的的申请1.2 共享内存的释放 二、代码演示2.1 shmget2.1.1 详谈key——ftok 2.2 创建共享内存样例代码2.3 获取共享内存——进一步封装2.4 共享内存挂接——shmat2.5 共享内存去关联——shmdt2.6 释放共享内存——shmctl2.7 开始通信2.7.1 pr…

安全攻防基础

一、安全是什么&#xff1f;就是三个基础原则 安全就是保护数据 1. 机密性 对未授权的主体不可见 开发人员不能拥有敏感数据的访问权限 密钥要复杂 显示器伤的数据被别有用心的人窥探 2. 完整性 没授权的人不可修改数据 3. 可用性 被授权的主体可读 二、如何解决安全问题…

Rust面试宝典第14题:旋转数组

题目 给定一个数组&#xff0c;将数组中的元素向右移动k个位置&#xff0c;其中k是非负数。要求如下&#xff1a; &#xff08;1&#xff09;尽可能想出更多的解决方案&#xff0c;至少有三种不同的方法可以解决这个问题。 &#xff08;2&#xff09;使用时间复杂度为O(n)和空间…

微服务远程调用 RestTemplate

Spring给我们提供了一个RestTemplate的API&#xff0c;可以方便的实现Http请求的发送。 同步客户端执行HTTP请求&#xff0c;在底层HTTP客户端库(如JDK HttpURLConnection、Apache HttpComponents等)上公开一个简单的模板方法API。RestTemplate通过HTTP方法为常见场景提供了模…

VisualStudio2022的使用

Visual Studio 2022 的安装、卸载和使用方法详解 一、安装Visual Studio 2022 1. 下载Visual Studio 2022 要安装Visual Studio 2022&#xff0c;需要先下载安装程序。可以从微软的官方网站&#xff08;Visual Studio下载页面&#xff09;下载免费的社区版&#xff08;Commun…

非平稳信号的傅里叶变换与短时傅里叶变换

一、仿真一个非平稳的时间序列。 N 10000; t 0:N-1; z1 4.2*sin(2*pi/20.*t5); z2 2.2*sin(2*pi/100.*(10.001*t).*t8); w1 randn(length(t),1); yz1z2w1; figure;plot(y,LineWidth,1.5);grid on; ylabel(Signal); xlabel(Time); 二、傅里叶变换&#xff08;FFT&#xff…

网创教程:WordPress插件网创自动采集并发布

网创教程&#xff1a;WordPress插件网创自动采集并发布 使用插件注意事项&#xff1a; 如果遇到404错误&#xff0c;请先检查并调整网站的伪静态设置&#xff0c;这是最常见的问题。需要定制化服务&#xff0c;请随时联系我。 本次更新内容 我们进行了多项更新和优化&#x…

保护共享资源的方法(互斥锁)

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

一个基于vue、nuxt.js的网盘搜索项目,且持续开源和维护;目的实现人人都可以拥有自己的网盘搜索网站;

一个基于vue、nuxt.js的网盘搜索项目&#xff0c;且持续开源和维护&#xff1b;目的实现人人都可以拥有自己的网盘搜索网站&#xff1b; &#x1f310;Github地址 https://github.com/unilei/aipan-netdisk-search &#x1f310;在线体验 https://so.aicompasspro.com/

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈&#xff0c;亲爱的薅羊毛小伙伴们&#xff01; 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利&#xff01;我只花了短短两分钟&#xff0c;就搞到了一张5块钱火车票代金券&#xff0c;简直是天上掉馅饼的节奏啊&#xff01; 话不多说&#xff0c;薅羊毛的姿势给你们摆好…

202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋

202473读书笔记|《但愿呼我的名为旅人&#xff1a;松尾芭蕉俳句300》——围炉夜话&#xff0c;身顿心安&#xff0c;愿每个人都能在爱里自由驰骋 &#x1f60d;&#x1f60d;&#x1f929;&#x1f929; 译者序正文二正文三正文四正文五正文六正文七 《但愿呼我的名为旅人&…

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结 本章知识点基于模型的强化学习与无模型的强化学习方法简介无模型的强化学习方法基于模型的强化学习方法 强化学习算法的评价指标Dyna-Q算法Dyna-Q 算法的具体流程Dyna-Q 代码实践 本章知识点 基于模型的强化学习与无模型的强…

前端 CSS 经典:好看的标题动画

前言&#xff1a;好看的标题动画实现。 效果&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><…

syncthing文件夹同步与版本管理

1 前言 syncthing可以用来同步文件夹里的所有文件&#xff0c;并且有不错的版本管理&#xff0c;基本每次更改文件&#xff0c;20-40秒就被扫描到了&#xff0c;非常丝滑&#xff1b;这次以此来同步obsidian的插件和文件&#xff0c;达到多端同步&#xff1b; 我家里有一台台…

自定义横向思维导图,横向组织架构图,横向树图。可以自定义节点颜色,样式,还可以导出为图片

最近公司设计要求根据目录结构&#xff0c;横向展示。所以做了一个横向的思维导图&#xff0c;横向的树结构&#xff0c;横向的组织架构图&#xff0c;可以自定义节点颜色&#xff0c;样式&#xff0c;还可以导出为图片 话不多说&#xff0c;直接上图片&#xff0c;这个就是一…

Django自定义命令

Django自定义命令 我们知道&#xff0c;Django内部内置了很多命令&#xff0c;例如 python manage.py runserver python manage.py makemigrations python manage.py migrate我们可以在python控制台中查看所有命令 我们也可以自定义命令&#xff0c;让python manage.py执行…

如何使用甘特图来做任务管理?zz-plan甘特图的实践指南

在项目管理和任务调度中&#xff0c;甘特图是一种非常实用的工具&#xff0c;它可以帮助团队成员清晰地规划、执行和跟踪项目进度。然而&#xff0c;如何有效利用甘特图进行任务管理&#xff0c;对于许多团队来说仍然是一个挑战。本文将结合 zz-plan https://zz-plan.com/ 甘特…