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 的技术架构主要包括以下几个关键组成部分:
- 关键技术栈支持:Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG(Retrieval-Augmented Generation)引擎以及灵活的 Agent 框架。
- 可视化编排和运营:Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能,使得开发者能够在数天内完成 AI 应用的开发,或将 LLM 快速集成到现有应用中,并进行持续运营和改进。
- 技术栈:AI 的技术栈主要包括 Python 编程语言、TensorFlow 和 Keras 深度学习框架、以及 NLP 领域的常用库,如 NLTK 和 spaCy 等。这些技术栈的选择使得 Dify.AI 具有高度的灵活性和可扩展性。
- 开箱即用的应用模版和编排框架:Dify 为开发者提供了健全的应用模版和编排框架,使开发者可以基于它们快速构建大型语言模型驱动的生成式 AI 应用,并且可以随时按需无缝扩展,驱动业务增长。
- 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平台。
单纯笔记: 一、关于 Dify dify/README_CN.md at main langgenius/dify GitHub Dify 是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以…...

CCF20220601——归一化处理
CCF20220601——归一化处理 代码如下: #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编写一个电机驱动程序
问:帮我写一个步进电机的控制程序,要有包括加减速,以及电机步中断处理函数。 答:编写一个步进电机的控制程序涉及到硬件层面的操作,通常需要依赖特定的硬件平台和相应的驱动程序。以下是一个简化的示例,它展…...

【C++入门】—— C++入门 (下)_内联函数
前言:在了解完前面的C基础内容后,马上我们就要真正不如C的学习了,但在之前让我们最后了解最后一点点C入门知识!来迟的520特别篇! 本篇主要内容: 内联函数 auto关键字 范围for 指针空值nullptr C入门 1. 内联…...
Java数据结构与算法(最小栈)
前言 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 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: 与端点的电源管理相关,允许发送解锁和电源管理事件关闭消息。 Root Port: Error Messages: Error Correctable(错误可纠正)…...
k8s 部署mqtt简介
在Kubernetes(K8s)中部署MQTT(Message Queuing Telemetry Transport)服务通常涉及以下几个步骤: 选择MQTT Broker MQTT Broker是MQTT消息传递的中间件。流行的MQTT Broker包括Mosquitto, HiveMQ, EMQ X等。你需要选择一…...
汇凯金业:量化交易中常用的数学模型有哪些
量化交易中运用了多种数学模型来识别市场的潜在机会和建立交易策略。以下是一些在量化交易中常用的数学模型: 1. 时间序列分析模型 时间序列分析是研究和预测数据点随时间顺序变化趋势的方法。在量化交易中,常用的时间序列模型包括: 自回归&a…...

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

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

【UE Websocket】“WebSocket Server”插件使用记录
1. 在商城中下载“WebSocket Server”插件 该插件具有如下节点,基本可以满足WebSocket服务端的所有需求 2. 如果想创建一个基本的服务端,我们可以新建一个actor蓝图,添加如下节点 3. UE运行后,我们可以使用在线的websocket测试助手…...
spring中依赖注入(DI)是什么?
好的,让我以尽可能通俗易懂的方式来解释什么是依赖注入(DI,Dependency Injection)。 假设你正在制作一款游戏,游戏中有个角色需要使用武器。在没有依赖注入的情况下,这个角色可能需要自己创建一个武器。这…...

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队列的相关知识,读者可以参考以下文章: FreeRTOS学习——FreeRTOS队列(上)_freertos 单元素队列-CSDN博…...

js实现鼠标拖拽多选功能
实现功能 在PC端的H5页面中,客户拖动鼠标可以连选多个选项 效果展示 具体代码如下 <!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,延迟告警策略如下: pg_replication_lag_seconds{instance!~"host_ip_18801"} > 300 and ON(instance) pg_re…...

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

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

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

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

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...