当前位置: 首页 > 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…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...