当前位置: 首页 > 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、对话聊天

相关文章:

dify:开源 LLMOps平台。

单纯笔记&#xff1a; 一、关于 Dify dify/README_CN.md at main langgenius/dify GitHub Dify 是一款开源的大语言模型&#xff08;LLM&#xff09;应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以…...

CCF20220601——归一化处理

CCF20220601——归一化处理 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n,a[1000],sum0;scanf("%d",&n);for(int i1;i<n;i){scanf("%d",&a[i]);suma[i];}double aver1.0,b0.0,d1.0;aversum/(n*1…...

用Ai编写一个电机驱动程序

问&#xff1a;帮我写一个步进电机的控制程序&#xff0c;要有包括加减速&#xff0c;以及电机步中断处理函数。 答&#xff1a;编写一个步进电机的控制程序涉及到硬件层面的操作&#xff0c;通常需要依赖特定的硬件平台和相应的驱动程序。以下是一个简化的示例&#xff0c;它展…...

【C++入门】—— C++入门 (下)_内联函数

前言&#xff1a;在了解完前面的C基础内容后&#xff0c;马上我们就要真正不如C的学习了&#xff0c;但在之前让我们最后了解最后一点点C入门知识&#xff01;来迟的520特别篇&#xff01; 本篇主要内容&#xff1a; 内联函数 auto关键字 范围for 指针空值nullptr C入门 1. 内联…...

Java数据结构与算法(最小栈)

前言 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…...

7 Series FPGAs Integrated Block for PCI Express IP核 Advanced模式配置详解(三)

1 TL Settings Transaction Layer (TL)设置只在Advanced模式下有效。 Endpoint: Unlock and PME_Turn_Off Messages: 与端点的电源管理相关&#xff0c;允许发送解锁和电源管理事件关闭消息。 Root Port: Error Messages: Error Correctable&#xff08;错误可纠正&#xff09…...

k8s 部署mqtt简介

在Kubernetes&#xff08;K8s&#xff09;中部署MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;服务通常涉及以下几个步骤&#xff1a; 选择MQTT Broker MQTT Broker是MQTT消息传递的中间件。流行的MQTT Broker包括Mosquitto, HiveMQ, EMQ X等。你需要选择一…...

汇凯金业:量化交易中常用的数学模型有哪些

量化交易中运用了多种数学模型来识别市场的潜在机会和建立交易策略。以下是一些在量化交易中常用的数学模型&#xff1a; 1. 时间序列分析模型 时间序列分析是研究和预测数据点随时间顺序变化趋势的方法。在量化交易中&#xff0c;常用的时间序列模型包括&#xff1a; 自回归&a…...

局部直方图均衡化去雾算法

目录 1. 引言 2. 算法流程 3. 代码 4. 去雾效果 1. 引言 局部直方图算法是一种基于块的图像去雾方法&#xff0c;它将图像分割为若干个块&#xff0c;并在每个块内计算块的局部直方图。通过对各个块的直方图进行分析和处理&#xff0c;该算法能够更好地适应图像中不同区域的…...

selenium环境安装和web自动化基础

webUI自动化背景 因为web页面经常会变化&#xff0c;所以UI自动化测试的维护成本很高。不如接口的适用面广&#xff0c;所以大部分公司会做接口自动化测试&#xff0c;但是未必会做UI自动化测试&#xff1b; UI自动化测试要做也是覆盖冒烟测试&#xff0c;不会到很高的覆盖率&a…...

【UE Websocket】“WebSocket Server”插件使用记录

1. 在商城中下载“WebSocket Server”插件 该插件具有如下节点&#xff0c;基本可以满足WebSocket服务端的所有需求 2. 如果想创建一个基本的服务端&#xff0c;我们可以新建一个actor蓝图&#xff0c;添加如下节点 3. UE运行后&#xff0c;我们可以使用在线的websocket测试助手…...

spring中依赖注入(DI)是什么?

好的&#xff0c;让我以尽可能通俗易懂的方式来解释什么是依赖注入&#xff08;DI&#xff0c;Dependency Injection&#xff09;。 假设你正在制作一款游戏&#xff0c;游戏中有个角色需要使用武器。在没有依赖注入的情况下&#xff0c;这个角色可能需要自己创建一个武器。这…...

paligemma、Grounding-DINO-1.5简单无需标注无需训练直接可以使用的VLM图像到文本模型

1、paligemma 参考:https://github.com/google-research/big_vision/blob/main/big_vision/configs/proj/paligemma/README.md 模型架构: 文本与图像特征一起送入大模型 在线体验网址: https://huggingface.co/spaces/big-vision/paligemma 通过文字prompt既可与图片对话…...

FreeRTOS学习——FreeRTOS队列(下)之队列创建

本篇文章记录我学习FreeRTOS队列创建的知识。主要分享队列创建需要使用的初始化函数、队列复位函数。 需要进一步了解FreeRTOS队列的相关知识&#xff0c;读者可以参考以下文章&#xff1a; FreeRTOS学习——FreeRTOS队列&#xff08;上&#xff09;_freertos 单元素队列-CSDN博…...

js实现鼠标拖拽多选功能

实现功能 在PC端的H5页面中&#xff0c;客户拖动鼠标可以连选多个选项 效果展示 具体代码如下 <!DOCTYPE html> <html><head><title>鼠标拖拽多选功能</title><script src"https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js&quo…...

postgres_exporter 监控pg坑一:备库无延迟但是监控告警备库延迟

1.问题背景 监控告警某套pg的两个备库延迟大于300s 2.pg备库延迟告警策略 通过postgres_exporter(version 0.13.2)监控生产pg&#xff0c;延迟告警策略如下&#xff1a; pg_replication_lag_seconds{instance!~"host_ip_18801"} > 300 and ON(instance) pg_re…...

vue打包部署到springboot,通过tomcat运行

tomcat默认端口 8080springboot端口 9132vue 端口 9131 框架 项目是基于SpringBootVue前后端分离的仓库管理系统 后端&#xff1a;SpringBoot MybatisPlus前端&#xff1a;Node.js Vue element-ui数据库&#xff1a;mysql 一. 打包Vue项目 cmd中输入命令 npm run build 后…...

如何有效防止数据丢失

在数字时代&#xff0c;数据成为了个人和企业最宝贵的资产之一。不幸的是&#xff0c;数据丢失的威胁无时无刻不在潜伏着&#xff0c;无论是由于技术故障、人为错误还是恶意攻击&#xff0c;都可能对我们的数据造成不可逆转的损失。因此&#xff0c;采取有效的预防措施至关重要…...

linux命令中arj使用

arj 用于创建和管理.arj压缩包 补充说明 arj命令 是 .arj 格式的压缩文件的管理器&#xff0c;用于创建和管理 .arj 压缩包。 语法 arj(参数)参数 操作指令&#xff1a;对 .arj 压缩包执行的操作指令&#xff1b;压缩包名称&#xff1a;指定要操作的arj压缩包名称。 更多…...

UE5中搭建一个简单的海岛

本文将用UE的WaterSystem与地形搭建一个简单的海岛&#xff0c;通过WaterSystem的参数设置&#xff0c;可以更好的自定义海岸线等效果。 1.基础风貌 1.1.首先新建一个Basic基础场景&#xff0c;切换到地形编辑模式刷出一块高地&#xff0c;用于沙滩。 1.2.引入UE官方插件Wat…...

爬虫学习--12.MySQL数据库的基本操作(下)

MySQL查询数据 MySQL 数据库使用SQL SELECT语句来查询数据。 语法&#xff1a;在MySQL数据库中查询数据通用的 SELECT 语法 SELECT 字段1&#xff0c;字段2&#xff0c;……&#xff0c;字段n FROM table_name [WHERE 条件] [LIMIT N] 查询语句中你可以使用一个或者多个表&…...

js的算法-选择排序(简单选择排序)

选择排序 每一趟&#xff08;如第i趟&#xff09;在后面n-i1(i1,2,……n-1)个待排序元素中选取关键字最小的元素&#xff0c;作为有序子序列的第i 个元素&#xff0c;直到第i个元素&#xff0c;直到第n-1趟做完&#xff0c;待排序元素只剩下1个&#xff0c;就不用再选了。 快…...

Mac虚拟机工具 CrossOver 24.0.0 Beta3 Mac中文版

CrossOver是一款在Mac上运行Windows应用程序的软件&#xff0c;无需安装虚拟机或重启计算机&#xff0c;简化了操作过程&#xff0c;提高了工作效率&#xff0c;为用户带来便捷体验。前往Mac青桔下载&#xff0c;享受前所未有的便利和高效。摘要由作者通过智能技术生成 CrossOv…...

路由聚合和VRRP技术

实验拓扑图&#xff1a; 实验需求 1、内网IP地址使用172.16.0.0/16 2、SW1和SW2之间互为备份&#xff1b; 3、VRRP/stp/vlan/eth-trunk均使用&#xff1b; 4、所有pc均通过DHCP获取IP地址&#xff1b; 5、ISP只配置IP地址&#xff1b; 6、所有电脑可以正常访问ISP路由器环…...

【原创教程】三菱FX3U系列培训专题课教案

位置控制三要素 定位控制指令必须要有以下三个条件 1、位置移动速度(电机转速) 2、位置移动距离(电机的旋转圈数) 3、位置移动方向(电机的旋转方向) FX3U_PLC的高速脉冲输出端口 普通输出端口受程序控制,什么时间通,什么时间断,没有固定的通断周期 高速脉冲输出端口…...

清空了电脑回收站,之前的文件还能否恢复?

电脑已成为我们日常生活中不可或缺的一部分。我们在电脑上处理文档、保存图片、下载视频等&#xff0c;而电脑中的回收站则成为我们处理不再需要文件的一个便捷工具&#xff0c;当我们想要删除某些文档的话&#xff0c;它并不是立即从硬盘上消失&#xff0c;而是被系统移动到了…...

设计模式——职责链(责任链)模式

目录 职责链模式 小俱求实习 结构图 实例 职责链模式优点 职责链模式缺点 使用场景 1.springmvc流程 ​2.mybatis的执行流程 3.spring的过滤器和拦截器 职责链模式 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成…...

功耗相关总结

文章目录 功耗相关的使用场景MCU中低功耗的应用RTOS中低功耗应用 功耗相关的使用场景 目前越来越多的嵌入式设备采用电池进行供电&#xff0c;而不是跟台式电脑一样&#xff0c;可以一直连接着电源。在电池供电的场景下&#xff0c;对功耗的要求很高&#xff0c;工程师们尽量希…...

17款奔驰GLS450升级头等舱行政独立四座马鞍是什么样体验

五座版本&#xff1a;迈巴赫GLS480的五座版本通常指的是具有五个座位的配置&#xff0c;包括两个前排座椅和三个后排座椅。这种配置适合搭载更多乘客&#xff0c;后排座椅通常为三人座设计&#xff0c;乘坐人数较多。 四座版本&#xff1a;迈巴赫GLS480的四座版本通常指的是具…...

浏览器的下载行为基本原理

浏览器解析 在使用浏览器访问某些资源时&#xff0c;有些资源是直接下载有些资源是直接打开。例如前端的html&#xff0c;xml&#xff0c;css&#xff0c;图片等资源都是直接打开&#xff0c;而txt&#xff0c;excel等文件是直接下载。那么如何控制访问一个资源时是下载文件还…...