【LLM】Dify 0.6.10 在Windows系统上本地化部署

news2025/1/17 21:38:49

【LLM】Dify 0.6.10 在Windows系统上本地化部署

文章目录

  • 【LLM】Dify 0.6.10 在Windows系统上本地化部署
    • 一、参考资料
    • 二、Dify 概述
        • 1、Dify开源项目功能介绍(RAG流水线,Agent工具接入,Prompt配置和工作流编排,大模型接入,LLMOps,BaaS)
        • 2、技术特点
        • 3、系统架构设计
    • 三、Dify 0.6.10 本地化部署前后端
        • 1、配置虚拟机基础环境(这里使用的是`Ubuntu 20.04`的镜像):
        • 2、部署Dify中间件:postgre,redis, weaviate、sandbox、squid中间件
        • 3、部署后端服务
        • 4、部署前端服务
        • 5、功能演示

一、参考资料

  • dify项目主页:https://dify.ai/,https://dify.ai/zh,https://github.com/langgenius/dify
  • dify官方文档:https://docs.dify.ai/user-guide/creating-dify-apps/creating-an-application
  • dify云端体验:https://cloud.dify.ai/explore/apps
  • dify chatFlow节点介绍:https://docs.dify.ai/features/workflow/node
  • dify 技术栈介绍:https://docs.dify.ai/v/zh-hans/getting-started/readme/features-and-specifications
  • dify 应用案例:https://docs.dify.ai/v/zh-hans/learn-more/use-cases

也可以了解下Dify的竞品FastGPT:快速了解 FastGPT | FastGPT

二、Dify 概述

1、Dify开源项目功能介绍(RAG流水线,Agent工具接入,Prompt配置和工作流编排,大模型接入,LLMOps,BaaS)

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流编排、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。以下是其核心功能列表:

  • 1)工作流编排在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。

    Dify工作流分为两种类型:

    • Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。

    • Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。

    具体参考工作流 | 中文 | Dify

  • 2)全面的模型支持:与数百种专有 / 开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。完整的支持模型提供商列表可在此处找到。

  • 3)Prompt IDE: 用于制作提示词、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。

  • 4)RAG Pipeline: 广泛的RAG功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。

  • 5)Agent 智能体: 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DELL·EStable DiffusionWolframAlpha 等。

    具体参考 工具 | 中文 | Dify

  • 6)LLMOps: 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。

  • 7)后端即服务: 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中

Note:知识点补充

1、什么是RAG?R -> A -> G

参考LLM之RAG理论(六)| 高级RAG指南和技巧,大语言模型落地的关键技术:RAG

RAG中的核心组件:检索(Retrieval)、增强(Augmentation)、生成(Generation)

  • RAG中的检索(Retrieval)从哪里找?找的范围?

    检索技术相关的一些关键概念和方法包括检索策略、检索粒度、检索方法、检索效率和外部数据源等;

  • RAG中的增强(Augmentation)数据增强,调整数据分布等

    增强技术相关的一些关键概念和方法包括文本修正、知识融合、上下文增强、控制生成风格、多模态增强、实时更新等;

  • RAG中的生成(Generation)使用哪类生成模型?(文本/图像/视频)基于什么prompt/任务来生成的?(是知识解答,还是对话风格,还是对话质量评估)

    生成相关的一些关键概念和技术包括生成模型、文本生成、控制生成、多模态生成、对话生成、评估生成等;

2、什么是Agent智能体?:能够自主完成某个特定任务,比如问题解答,画图等

3、什么是LLMOps?LLM + Ops一体化)

参考大模型时代的模型运维与部署:LLMops-腾讯云开发者社区-腾讯云,大模型时代,一个充满机遇的赛道——LLMOps,20 分钟带你搞懂 LLMOps !!

  • LLMOps 的概念可以分解为 LLM 和 Ops 两部分,其中LLM是指大语言模型,即大模型;Ops 则是指平台和工具。LLMOps的完整定义是基于大模型的应用程序的生命周期管理平台或者工具。
    大模型的构建主要分为三个阶段:

    • 第一个阶段是预训练阶段

      在预训练阶段,数据集通过预训练产生预训练模型,这个过程是千模大战的主战场,各类开源闭源的大模型都是通过这个阶段产生的。

    • 第二个阶段是微调阶段

      微调阶段是指特定领域的数据集,在预训练模型的基础上,通过 finetune 手段产生特定领域的模型。

    • 第三个阶段是应用开发阶段

      应用开发阶段只是在预训练模型和特定领域模型的推理功能基础上,为其喂入我们的输入,经过提示工程进行指令编排,最终产生我们所需要的大模型输出。

    大模型应用平台主要关注的是模型微调和应用开发阶段。
    大模型应用的生命周期包括开发、部署、配置和运维。我们着重提出了配置的阶段,prompt engine提示工程。与传统的应用程序不同,配置阶段在大模型里面是非常重要非常核心的阶段

  • 生产中LLM存在的痛点

    • LLM很昂贵:大语言模型的训练非常昂贵,因为它需要对新数据集进行持续的实验和重新训练,以防止模型变得陈旧。更要命的是,推理成本很高。

    • 微调很难:只有少数公司足够成熟,能够不断微调他们的模型并保持数据管道的健康,尤其是在今天大多数数据跨代码、服务、产品团队甚至组织共享的情况下。LLM尽管拥有很多优点,但在生产环境中可能会成为噩梦——你不能只是训练一次然后永远不变。

    • LLM会产生幻觉:这是LLM的一个主要问题,因为它可以传播大量的错误信息。此外,试图理解幻觉发生的原因是困难的,因为LLM推导其输出的方式是一个黑盒子。但是我们知道数据质量、生成方法还有上下文输入会影响幻觉。

    • 规模化和延迟问题客户端编排要比服务器端编排简单得多,真正的挑战是解决现代应用程序的规模化的需求。想象一下,在分布式系统中训练和部署LLM,要考虑到企业级应用缓存、限流和认证授权等一系列关键问题,如何确保系统稳定性、安全性和性能带来了巨大的运营挑战。

    • 隐私和安全:我们已经看到了关于LLM的多个安全问题的实例(比如三星内部数据泄露事件),提示注入已经成为一种流行且有效的绕过LLM基本安全防护的攻击工具。可以预见,在LLM技术栈各个层面加强安全措施之前,企业端的应用不会迅速增长。

  • 下图是海外市场的生态现状,涵盖了整个LLMOps基础设施技术栈的各个领域:

    • 客户端编排工具:这些框架帮助开发者在客户端集成生成式AI应用,将已部署的模型与外部软件API和其他基础模型相连,并促进用户与应用的互动

    • 向量/数据管理工具:利用LLM的一种有效方法是从上下文生成它的数学表示——嵌入(embedding),然后在这些嵌入之上开发ML应用程序, 例如搜索、聚类、推荐、异常检测等

    • 服务器端编排工具:服务器端编排包括在后端执行的代码片段,即用于运行模型的服务器——部署、训练、推理、监控和安全

      • 部署:在考虑利用基础模型时,企业可以使用外部模型或部署自己的模型

      • 可观察性:在生产系统中,我们能够观察、评估、优化和调试代码是至关重要的。由于LLM的黑盒性质,可观察性问题变得更加严重。可观察性包括跟踪和理解性能,识别故障、停机、停机时间,评估系统健康,以及解释输出——解释模型为何做出某个决定等等

      • 隐私/安全:随着严格的隐私和安全法律的发布,我们需要提供准确评估模型公平性、偏见和毒性的工具,以及安全防护栏。企业现在越来越关注训练数据的提取、损坏的训练数据以及专有敏感数据的泄露。除此之外,LLM就像传统的机器学习模型一样容易受到对抗性攻击。因此,我们需要可以保护免受提示注入、数据泄露和有毒语言生成的产品;通过匿名化保证数据隐私;为LLM提供访问控制(例如RBAC);实施对抗性训练和防御蒸馏等等。

2、技术特点
LLM 推理引擎Dify Runtime ( 自 v0.4 起移除了 LangChain)
商业模型支持10+ 家,包括 OpenAI 与 Anthropic新的主流模型通常在 48 小时内完成接入
MaaS 供应商支持7 家,Hugging Face,Replicate,AWS Bedrock,NVIDIA,GroqCloud,together.ai,OpenRouter
本地模型推理 Runtime 支持6 ,Xoribits(推荐),OpenLLM,LocalAI,ChatGLM,Ollama,NVIDIA TIS
OpenAI 接口标准模型接入支持∞ 家
多模态技术ASR 模型GPT-4V 规格的富文本模型
预置应用类型对话型应用文本生成应用(即将下线)
Agent
工作流
群组(Q2 即将推出)
Prompt 即服务编排广受好评的可视化的 Prompt 编排界面,在同一个界面中修改 Prompt 并预览效果
编排模式
- 简易模式编排
- Assistant 模式编排
- Flow 模式编排
- Multi-Agent 模式(Q2 即将推出)
Prompt 变量类型
- 字符串
- 单选枚举
- 外部 API
- 文件(Q2 即将推出)
Agentic Workflow 特性行业领先的可视化流程编排界面,所见即所得的节点调试,可插拔的 DSL,原生的代码运行时,构建更复杂、可靠、稳定的 LLM 应用。支持节点
- LLM
- 知识库检索
- 问题分类
- 条件分支
- 代码执行
- 模板转换
- HTTP 请求
- 工具
RAG 特性首创的可视化的知识库管理界面,支持分段预览和召回效果测试。 索引方式
- 关键词
- 文本向量
- 由 LLM 辅助的问题-分段模式
检索方式
- 关键词
- 文本相似度匹配
- 混合检索
- N 选 1 模式
- 多路召回
召回优化技术
- 使用 ReRank 模型
ETL 技术支持对 TXT、Markdown、PDF、HTML、DOC、CSV 等格式文件进行自动清洗,内置的 Unstructured 服务开启后可获得最大化支持。支持同步来自 Notion 的文档为知识库。
向量数据库支持Qdrant(推荐),Weaviate,Zilliz
Agent 技术ReAct,Function Call
工具支持
- 可调用 OpenAI Plugin 标准的工具
- 可直接加载 OpenAPI Specification 的 API 作为工具
内置工具
- 30+ 款(截止 2024 Q1)
日志支持,可基于日志进行标注
标注回复基于经人类标注的 Q&A 对,可用于相似度对比回复
可导出为供模型微调环节使用的数据格式
内容审查机制OpenAI Moderation 或外部 API
团队协同工作空间与多成员管理支持
API 规格RESTful,已覆盖大部分功能
部署方式Docker,Helm

Note

postgreSQL:https://aws.amazon.com/cn/rds/postgresql/what-is-postgresql/
向量库

  • weaviate:https://weaviate.io/developers/weaviate/configuration/persistence

  • Qdrant:https://qdrant.tech/documentation/

前端

  • React框架 - Next.js:https://nextjs.org/,https://www.nextjs.cn/docs/getting-started

后端

  • Python Flask
3、系统架构设计

三、Dify 0.6.10 本地化部署前后端

官网提供的源码部署文档:Local Source Code Start | English | Dify

官网在Windows系统上部署中间件时,建议使用的是WSL2 + Docker Desktop,由于习惯使用VMWare,这里还是使用虚拟机来部署中间件

而前端项目这里使用

部署步骤如下:

1、配置虚拟机基础环境(这里使用的是Ubuntu 20.04的镜像):
  • 配置SSH:https://blog.csdn.net/devshilei/article/details/139149783

  • 安装Docker

    • 安装docker-CE:https://docs.docker.com/engine/install/ubuntu/,https://blog.csdn.net/qq_39500197/article/details/134754930

      如果docker官网的签名密钥一直不生效,可以使用国内的docker仓库,参考https://www.cnblogs.com/weizhxa/p/12048416.html

      sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
      
    • 配置docker镜像源加速器:修改/etc/docker/daemon.json后重启docker,https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6

  • 安装Node.js:下载tar包安装并在/etc/profile配置环境变量即可https://www.jianshu.com/p/7c11f1355cf5

  • 配置代理(github可能访问不通,需要配置代理):修改/etc/profile并重新加载

    export http_proxy=http://192.168.0.101:7890/
    export https_proxy=http://192.168.0.101:7890/
    export socks_proxy=socks://192.168.0.101:7890/
    export ftp_proxy=ftp://192.168.0.101:7890/
    
2、部署Dify中间件:postgre,redis, weaviate、sandbox、squid中间件
git clone https://github.com/langgenius/dify.git
cd docker
docker-compose -f docker-compose.middleware.yaml up -d

执行该脚本完成镜像安装后,会启动关于该镜像的容器

此时docker容器已经完成端口的映射,并对外暴露该端口(执行iptables -L可查看):

Note:如果有些镜像源下载失败,配置下新的镜像源,单独用docker pull xxx看是否可以拉取

3、部署后端服务

Windows本地通过conda env虚拟环境安装 flask 环境(windows默认不支持sed,需要下载exe)

conda create --name dify python=3.10
conda activate dify

cd api
cp .env.example .env
openssl rand -base64 42
sed -i 's/SECRET_KEY=.*/SECRET_KEY=<your_value>/' .env


pip install -r requirements.txt

修改数据库的IP地址(这一步需要先部署好中间件,数据库才能初始化成功)

修改.env中的DB_HOST(虚拟机的IP):

再进行数据库迁移

flask db upgrade 

此时就可以在控制台启动后端服务了:

flask run --host 0.0.0.0 --port=5001 --debug
4、部署前端服务

由于在Windows系统中部署前端时,npm run build执行没问题,但是npm run start就报错了:

PS E:\china_unicom_project\gpt\dify\dify\web> npm run start

> dify-web@0.6.9 start
> copy -r .next/static .next/standalone/.next/static && copy -r public .next/standalone/public && cross-env PORT=3000 HOSTNAME=127.0.0.1 node .next/standalone/server.js

系统找不到指定的文件。

修改了package.json后虽然能启动,但是前端服务找不到文件:

因此这里还是在Linux上去部署前端服务,并向外开放端口。

cd web
npm install  // 如果执行很慢,可以在root/npm/logs路径下查看npm install的打印日志

先在虚拟机上telnet下是否能连上主机上的后端服务

若可以则修改.env.example所指向的后端服务地址

接着打包并启动前端服务

npm run build
npm run start

接着修改防火墙配置,开放3000端口:

# 添加防火墙规则
firewall-cmd --zone=public --add-port=3000/tcp --permanent

#重启防火墙
firewall-cmd --reload

接着查看开放端口:firewall-cmd --list-ports

5、功能演示

工作流编排

在这里插入图片描述

创建知识库

在这里插入图片描述

大模型接入和Prompt IDE

在这里插入图片描述

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

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

相关文章

浅析嵌入式实时系统中信号量的概念

目录 概述 1. 认识信号量 1.1 定义信号量 1.2 信号量的类型 1.2.1 二值信号量 1.2.2 计数信号量 1.2.3 互斥信号量 1.2.3.1 认识互斥信号量 1.2.3.2 互斥信号量的其他特性 2 典型信号量的使用 2.1 等待和信号同步 2.2 多任务等待和信号同步 2.3 信用跟踪同步 2.…

stm32MP135裸机编程:使用USB/UART烧录程序到SD卡并从SD卡启动点亮一颗LED灯

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf STM32CubeProgrammer v2.16.0 烧录需要的二进制文件1 烧录到SD卡需要哪些文件 参考《轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序》&#xff0c;烧录需要的SD卡文件如下&#xff1a; &a…

多模态大模型思路

最近看了一篇苏神的文章&#xff0c;对多模态LLM的设计思考很有启发&#xff0c;总结如下&#xff0c;原文可参考“闭门造车”之多模态模型方案浅谈 - 科学空间|Scientific Spaces 多模态模型要解决什么问题 视频生成、文生图这些内容&#xff0c;图文混合的双模态输入输出&a…

CTF-PWN-kernel-UAF

文章目录 参考slub 分配器kmem_cache_cpukmem_cache_node[ ]冻结和解冻分配释放 fork绑核Kmalloc flag和slub隔离CISCN - 2017 - babydriver检查babtdriver_initstruct cdevalloc_chrdev_regioncdev_initownercdev_add_class_createdevice_create babyopenbabyreleasebabyreadb…

机器视觉系统-同轴光源大小选择技巧

同轴光源多用于检测光滑平面产品上的缺陷&#xff0c;同样利用上述的方法计算得出光源尺寸。 实际上&#xff0c;同轴光源可理解为没有孔的开孔面光&#xff0c;因此可等效为发光面相等的面光源&#xff0c;如下图&#xff1a; 如图所示&#xff0c;同轴光源的效果与开孔面光的…

LeetCode 算法:缺失的第一个正数c++

原题链接&#x1f517;&#xff1a;缺失的第一个正数 难度&#xff1a;困难⭐️⭐️⭐️ 题目 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输…

Gradio.NET 的简单入门使用

1、最近在网络上由发现了一个好完的东西。 2、Gradio.NET通过简单的C# Web API几行代码就可以实现一网页界面。 3、Python中也有一个Gradio&#xff0c;功能好像都差不多哦&#xff0c;不废话了&#xff0c;我们来开始实操。 4、在Visual Studio 2022 中创建一个 ASP.NET Cro…

Seq2seq、编码器解码器神经网络

目录 一、Seq2seq 简介二、编码器三、解码器四、编码器-解码器的训练 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 需掌握的前提知识&#xff1a; LSTM、词嵌入 本文参考&#xff1a;【官方双语】编码、解码神经网…

《软件定义安全》之五:软件定义的安全架构

第5章 软件定义的安全架构 1.软件定义安全架构 安全控制平台&#xff0c;主要负责安全设备的资源池化管理、各类安全信息源的收集和分析、与客户业务系统对接&#xff0c;以及相应安全应用的策略解析和执行。 安全应用是根据特定的安全需求所开发的程序&#xff0c;它利用安全…

Mysql的InnoDB介绍

目录 show engines查看搜索殷勤&#xff0c;默认InnoDB。 Mysql为什么使用InnoDB作为默认存储引擎 InnoDB主要包括内存结构和磁盘结构 内存结构包含: 磁盘结构中包括: 为什么设计成内存结构和磁盘结构两部分 使用InnoDB存储引擎创建的表&#xff0c;对应的数据文件在哪里…

堆排序经典问题【TopK】

前言 在上文我们讲了堆排序的实现&#xff08;点此调整&#xff09;&#xff0c;我们先简单回顾一下。 在进行堆排序之前&#xff0c;需要建一个堆&#xff0c;由于排序是将堆顶数据与堆底交换&#xff0c;所以排升序建大堆&#xff0c;降序建小堆。 堆排序的代码 //向下调整…

Nginx+Tomcat负载均衡、动静分离群集方案

一、Tomcat简介 在现代 Web 服务架构中&#xff0c;Tomcat 和 Nginx 是两个至关重要的组件&#xff0c;负责处理用户请求并实现高性能的服务。本篇博客将深入探讨这些技术的原理和部署配置方法。 最初是由Sun的软件构架师詹姆斯邓肯戴维森开发。安装Tomcat后&#xff0c;安装…

一文细谈SNN的基本数学原理,LIF模型,STDP与STBP学习方法

首先本文是读完 如何看待第三代神经网络SNN&#xff1f;详解脉冲神经网络的架构原理、数据集和训练方法 原创-CSDN博客 一文通俗入门脉冲神经网络(SNN)第三代神经网络-CSDN博客 两篇文章的总结&#xff0c;文章仅用于学习。 本文主要讨论STDP和STBP方法。 我们都知道&…

Zynq学习笔记--AXI4-Stream到视频输出IP是如何工作的?

目录 1. 简介 2. 原理详解 2.1 示例工程 2.2 AXI4-Stream to Video Out 3. Master/Slave Timing Mode 3.1 Slave Timing Mode 3.2 Master Timing Mode 4. 总结 1. 简介 本文主要介绍了 AXI4-Stream 到视频输出 的内容。其中&#xff0c;示例工程展示了一个具体的设计&…

CSS id选择器

目录 任务描述 相关知识 id选择器 id选择器语法 类选择器与id选择器的区别 编程要求 任务描述 在本关中&#xff0c;你将通过id选择器的方式完成页面菜单栏样式布局&#xff0c;栏目导航等任务。 完成任务之后&#xff0c;基本页面效果如下&#xff1a; 动态效果如下&am…

瑞昱半导体AMB82 MINI SD卡加载模型RTSP视频流AI识别图像和声音分类

AMB82 MINI Arduino的方法迭代更新十分及时&#xff0c;github维护也十分频繁。最新推出的4.0.7版本开始支持SD卡加载模型。有的网友装了4.0.6版本是看不到摄像头和模型加载选项的。 用这个实例来呈现RTSP视频流AI识别图像&#xff0c;同时展示对声音进行分类效果。 SDK升级到…

XUbuntu24.04之制作ISO镜像启动盘(二百四十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【数据结构与算法 经典例题】括号匹配问题

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法 经典例题》C语言 期待您的关注 ​​ 目录 一、问题描述 二、解题思路 &#x1f343;破解之道 &#x1f343;…

基于大模型的360度全景图像生成技术:L-MAGIC

在数字技术的浪潮中,我们迎来了一项革命性的创新——L-MAGIC,一个能够基于一张普通照片和简单文字描述,快速生成360度全方位全景画面的系统。L-MAGIC不仅提供了沉浸式的视觉体验,还融合了多种素材和技术手段,让全景图像的生成变得更加丰富和真实。 技术亮点 1. 多角度视…

小熊家务帮day19-day21 订单模块2(取消订单,退款功能等)

目录 1 订单退款功能1.1 需求分析1.2 接口分析1.3 退款流程分析1.4 表结构设计1.5 取消未支付订单实现1.5.1 接口开发Controller层开发Service层开发 1.5.2 接口测试 1.5 取消已支付订单实现 1 订单退款功能 1.1 需求分析 用户下单成功可以取消订单&#xff0c;在订单的不同状…