day04050607-Dify安装及案例
day04 今日内容
1 Dify介绍
1.1 Dify是什么
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
# 后端既服务Backend as Service:云计算服务模式,旨在帮助开发者快速构建应用程序的后端功能
# LLMOps 是 “大语言模型运维”(Large Language Model Operations)的缩写,指的是在 AI 模型的整个生命周期中加快其开发、部署和运营的专门工作流程和实践
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上
# 1 就是一个类 coze的系统
-90%相似的
-coze能干的,dify都能干
-coze的插件更丰富一些
-dify插件少一些,自己开发的
- coze 对小白友好---》 御姐:你想要的它都能给你
- dify 对有开发经验的友好,企业中使用dify比较多 小女孩:需要你开发,完成像御姐一样的功能
# 2 开源的:源代码完全开发,所有人都可以获取到,并且在源码上修改
-你得懂代码
-Coze开源了:基本用go,部分python
-dify开源:部分用go,一部分用pyhon
-我们目前的课不会涉及到coze或dify的二次开发
1.2 官网-文档
# 1 官网
https://dify.ai/zh
# 2 云服务-不需要本地部署,直接使用(必须FQ)--》如果访问不到,就算了
https://cloud.dify.ai/signin
# 云服务使用起来是不是会省钱
-因为coze,dify---》工作流,它是一步一步的,我们为什么能创建工作流---》因为代码控制的---》工作流中会使用LLM【大模型】大脑---》这个大脑是要花钱的----》无论是dify还是coze---》是别人训练的---》花费很高---》500w美金---》coze每天给你免费点数,用完,就得花钱---》dify要用的大模型需要花钱
-本地部署只是程序---》点击某个按钮,创建个智能体这种对应的代码,跑在了本地
-我们能不能用本地大脑?
-能---》由于你机器性能问题---》“弱智版”--》跑在本地
-我们的智能体,如果用弱智大脑,大部分都干不了
DeepSeek开源的--》本地训练---》机器要够--》上百万
本地还要达到高智商的需求
公司里用,都是花钱买服务的
# 3 如果想深入学习dify
https://docs.dify.ai/zh-hans/introduction
1.3 Dify社区版-专业版-教育版
# 1 云服务器版:直接在线使用
# 2 本地部署:
-社区版:企业中使用的基本上都是这个,免费开源可以直接用
-需要公司自己开发,定制
-专业版:收费
-在使用过程中遇到问题,有专业的团队给你解答
-功能上可以根据你们公司,进行一些定制
-教育版:免费使用专业版
################ 三个版本############
#1. 社区版(免费开源)
## 1.1 目标用户:个人开发者、学生、小型项目或开源社区。
## 1.2 核心特点
- 开源免费:基于 Apache 2.0 协议开源,可自由使用、修改和分发。
- 基础功能:支持基本的 AI 应用开发,如创建简单的聊天机器人、知识问答系统。
- 有限资源:通常有模型调用次数、并发请求数等限制(如每月 10,000 次 API 调用)。
- 社区支持:通过 GitHub 社区获取帮助,无官方专属技术支持。
## 1.3 适合场景:学习和探索 Dify 功能、个人项目开发、简单原型验证。
#2. 专业版(付费订阅)
## 2.1 目标用户:企业开发者、商业项目团队、需要高可用性和高级功能的组织。
## 2.2 核心特点
## 2.3 高级功能
- 企业级 RAG 引擎:支持大规模知识库管理、文档语义化处理(如 PDF/PPT 解析)。
- 多模态能力:支持图文混合生成、视频分析等复杂任务。
- LLMOps 监控:提供模型调用成本分析、性能监控和持续优化工具。
- 工作流编排:可视化设计复杂业务流程,支持多模型协同。
- 性能提升:更高的并发处理能力、更低的响应延迟、更长的对话上下文支持。
- 安全与合规:企业级数据安全(如数据加密、审计日志)、单点登录(SSO)。
- 官方支持:专属技术支持、优先更新和功能定制服务。
## 2.4 适合场景:商业产品开发、企业内部工具集成、需要高性能和稳定性的应用。
# 3. 教育版(免费 / 优惠)
## 3.1 目标用户:高校、科研机构、教师和学生。
## 3.2 核心特点
- 教育资源
- 免费或低价使用:通常提供一定额度的免费资源或学生优惠价格。
- 教学支持:配套教学文档、课程案例和实验环境。
-功能限制:介于社区版和专业版之间,可能包含部分专业版功能(如简化的 RAG 引擎),但资源配额较低(如模型调用次数)。
- 学术用途:仅限非商业的教学、研究和学术项目使用。
## 3.3 适合场景:高校教学、学术研究、学生竞赛和毕业设计。
### 如何选择--》我们选择社区版
- 选社区版:如果是个人学习、开源项目或简单原型开发,且对功能和性能要求不高。
- 选专业版:如果是企业级应用开发、需要高可用性和高级功能(如 RAG、多模态),且愿意付费获取支持。
- 选教育版:如果是高校或科研机构,用于教学或学术研究,可申请教育版获取免费或低成本资源
# 1 apache GPL 。。。开源协议?
apache:要求,我们软件代码开源了---》任何人可以拿着开源软件--》修改,定制--》修改定制完了---》你可以闭源--》但是需要再显著位置标明,使用了那个开源软件
GPL:要求,我们软件代码开源了---》任何人可以拿着开源软件--》修改,定制--》修改定制完了--》可以收费---》但是必须也开源
1.4 Dify 云服务使用
# 1 云服务:在线体验(速度较慢,有时需要FQ)
https://cloud.dify.ai/signin
## 云服务相关介绍:https://docs.dify.ai/zh-hans/getting-started/cloud
2 Dify开发环境介绍
2.1 最低机器要求
# win:必须是专业版
-家庭版,教育版 不行
-Windows 11 专业版
-动手能力强的同学可以自己装系统
-花20块钱,找人上面装机---》是盗版系统
-可以直接升级
# 内存16g以上
# 磁盘大于500g
# cpu i5及以上
2.2 Docker,Docker-compose 介绍
# 1 dify 它是由很多服务组成的一个软件
-淘宝--》其实不是一个软件---》它是由很多软件组成的【服务】
- 购物系统:浏览商品
- 用户系统:修改密码,修改地址
- 评价系统
- 物流系统
-看上去像一个软件一样---》多个服务器之间相互配合完成的
-dify 也是,由很多服务组成--》如果我们本地,一个服务一个服务的运行--》新手很难完成服务和服务之间的联系
-有的服务用go写的
-有的服务用python写的
-官方提供了简单一些的部署方案---》需要借助于docker和docker compose这两个软件
# 2 我们也使用docker + docker compose 部署
# 3 docker是什么?
Docker 是一款开源的 容器化平台,用于快速开发、部署和运行应用程序。它将应用程序及其依赖(如代码、运行环境、库、配置文件等)打包成一个轻量级、可移植的 容器(Container),使应用程序能够在不同的环境(如开发、测试、生产环境)中 无缝运行,解决了 “环境不一致” 的问题。
# 4 docker compose 是什么?
由于docker 是把一个个服务--》打包到容器中了【集装箱】---》如果dify有10个服务---》需要10个集装箱---》对10个集装箱管理--》需要一款软件
批量管理容器:统一对多个容器进行管理
# 5 tomcat jenkins docker
-tomcat:部署 java web项目的一个服务器
web中间件
weblogic:收费
-jenkins:自动化的流程工具,用java编写的,运维会用到
-docker:部署项目的软件
2.3 官方提供的安装方式
# 1 地址:
https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/readme
# 2 Docker Compose 部署--》最专业的
-我们使用
# 3 使用源代码本地启动
# 4 宝塔面板部署(难度比Docker Compose)
-不需要大家会---》如果是搞运维的同学--》看文档
-宝塔 python写软件--》可视化方便软件部署
# 5 单独启动前端 Docker 容器
当单独开发后端时,可能只需要源码启动后端服务,而不需要本地构建前端代码并启动,因此可以直接通过拉取 docker 镜像并启动容器的方式来启动前端服务
3 本地搭建dify介绍-个人测试(mac,win)
# 0 WSL
Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用
-操作系统主流有三种
-mac:必须苹果的本,台式机 才有的,其他机器装不上,如果能装上,那叫黑苹果
-win:90%用户都是用win系统
-linux系统:很多发行版
-centos
-乌班图
-麒麟
。。。。
-软件是不兼容的
QQ软件--》win版的只能运行在win上
-docker正常也是不能运行在win上---》微软有
-Hyper-V:最早期解决方案
-wsl:目前使用的解决方案
# 1 正常来讲,docker只能运行在linux上,WSL
# 2 开启wsl(有的默认就开了)
打开“控制面板” -> 程序 -> 启用或关闭Windows功能->勾选“适用于Linux的Windows子系统”和“虚拟机平台”。
# 3 安装docker-Destop
-docker + 图形化界面=docker-Destop
-docker是纯命令操作的软件,没有图形化界面
-docker-Destop:既可以用命令,又可以图形化点点点
-下载地址:
https://www.docker.com/ 根据你电脑平台和cpu版本下下载
# 4 安装步骤
-简单安装:双击---》安装接口---》缺点:装在了c盘--》后续下载很大[几十个G]的东西,都放在c盘--》c盘饱满
-如果动手能力不强的小白,就装c盘即可
-转在任意盘符:我以D盘为例
- 1 在D盘新建文件夹 D:\Docker D:\Docker\data
- 2 打开cmd:输入命令
start /w "" "D:\Docker\Docker Desktop Installer.exe" install -accept-license --wsl-default-data-root="D:\Docker\data" --installation-dir="D:\Docker\"
# 5 解释
Use WSL 2 instead of Hyper-V (recommended)(推荐使用WSL 2而不是Hyper-V):这个选项建议用户使用Windows Subsystem for Linux 2(WSL 2)作为Docker运行的基础环境,而不是使用Hyper-V。WSL 2提供了一个更轻量级、更高效的Linux内核环境,对于大多数用户来说是一个更好的选择,因为它可以与Docker更好地集成,并且性能更好。
Allow Windows Containers to be used with this installation(允许此安装使用Windows容器):这个选项允许在Docker中使用Windows容器。如果你需要运行基于Windows的操作系统镜像或者特定于Windows的应用程序,那么你需要勾选这个选项。但是,启用Windows容器可能会带来一些兼容性和性能上的挑战,因此官方建议只有在你理解相关风险的情况下才启用它。
Add shortcut to desktop(在桌面添加快捷方式):如果你勾选了这个选项,安装程序会在你的桌面上创建一个Docker Desktop的快捷方式,方便你快速启动Docker服务
# 1 docker-destop 安装成功后,双击打开
-有账号,就登录
-没有账号可以注册---》要FQ
-不注册也可以用
# 2 必须做:修改配置---》我们要下载一些东西
-docker 国家安全问题,禁止国内使用
-docker的一些镜像[文件],都下载不到
-原来是在国外服务器上--》下载很慢
-后来:阿里云,清华源都会把国外服务器上的复制一份--》放在国内,这样下载就快了
-前端时间,国家直接命令禁止docker的使用---》阿里云,清华源也就用不了了
-偷着摸着还有些工作做做镜像:不一定稳定--》找了很多很多--》一个不能用,就用另一个
-把如下代码--》粘贴到如图所示位置--->重启docker即可
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"debug": true,
"experimental": false,
"insecure-registries": [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
]
}
# 3 去dify 官方,下载dify源码
-https://github.com/langgenius/dify/releases
-下载源码:dify-1.7.2.zip
# 4 本地运行
-在D盘创建一个文件夹:D:\DockerProject--》把刚刚下载的dify-1.7.2.zip 复制到这个文件夹下
-解压
-来带docker目录下,复制.env.example 粘贴在当前目录下 ,改名为:.env
-在上面目录上,敲cmd
-命令行中敲:
docker compose up
-漫长的等待
# 5 浏览器访问
http://localhost
3.1 Mac安装
# 1 下载mac的 docker-Destop
2019年的mac--》下Inter芯片
2019年后mac--》下M系列芯片
# 2 双击安装到你mac上
-默认路径即可
# 3 应用程序中:双击打开
-选设置---》粘贴上--》重启
# 4 下载dify源码,解压到某个路径
复制 .env
来到这个路径下,打开Terminal---》来到你放dify源码的目录下
- cd 命令过去
敲:docker compose up
等即可
# 5 浏览器访问:
http://localhost
# 6 在安装过程中,遇到问题很正常
-按照老师讲的一步操作----》遇到问题--》找群中答疑老是--》远程给解决
4 企业级-服务搭建-centos,ubuntu,云服务器
4.1 虚拟机安装
4.1.1 处理器架构
# 1 x86_64(代表:Intel/AMD)
## 指令集扩展:支持 SSE、AVX、AVX-512 等向量指令集,擅长单线程高性能计算(如 AI 训练、视频渲染)。
## 多核设计:主流服务器芯片核数通常为 8-64 核(如 AMD EPYC 96 核),依赖超线程(HT)提升并行效率。
## 生态系统:垄断桌面(Windows)和 90% 以上服务器市场,软件兼容性极强(如 Docker、Kubernetes 原生支持)。
##典型场景:个人电脑、数据中心服务器、游戏主机(如 PS5/Xbox 使用定制 AMD APU)。
# 2 AArch64(代表:ARM、华为鲲鹏、Apple M 系列)
## 指令集扩展:支持 NEON(向量运算)、Cryptography Extensions(加密加速),适合移动和边缘计算。
## 多核设计:天生支持大规模多核(如 AWS Graviton3 达 64 核),片上集成 ISP、NPU 等专用单元(如手机 SoC)。
## 生态系统:移动领域绝对主导(安卓 /iOS 应用原生支持),服务器端通过 Rosetta/QEMU 兼容 x86 软件(可能损失性能)。
##典型场景:智能手机(如骁龙 8 Gen3)、云服务器(如阿里云神龙 ARM 实例)、物联网设备(如树莓派 5)。
# 3 PPC64LE(代表:IBM Power、飞腾)
## 指令集扩展:支持 Altivec(向量处理)、Decimal Floating Point(十进制浮点,适合金融计算)。
## 多核设计:对称多处理(SMP)架构,单芯片核数通常 4-16 核(如 IBM Power10 10 核),注重可靠性(如内存纠错 ECC)。
## 生态系统:依赖特定企业级软件(如 IBM AIX、IBM i 操作系统),Linux 支持有限(需单独适配)。
## 典型场景:传统企业服务器(如银行核心系统)、超级计算机(如日本富岳使用富士通 A64FX,基于 ARM 而非 PPC)。
# 4 s390x(代表:IBM Z 系列大型机)
## 指令集扩展:支持 CPACF(压缩 / 解压缩)、 cryptographic instructions(硬件加密),专为交易处理优化。
## 多核设计:大型机架构,单系统可支持数千个逻辑处理器(LPAR),通过逻辑分区实现资源隔离。
## 生态系统:高度封闭,依赖 IBM Z/OS、Z/Linux 等专用操作系统,软件需深度定制(如银行核心交易系统)。
## 典型场景:金融行业核心系统(如信用卡清算)、电信运营商计费平台、高可用性事务处理。
# 下载软件:
-90%win机器,都是AMD64的---》x86_64(代表:Intel/AMD)
-少部分机器,ARM64 ----》ARM、华为鲲鹏、Apple M 系列
-Mac:
-2019年之前:cpu使用Inter---》
-2019年以后:苹果自研芯片:M1,M2--》ARM
day05 今日内容
0 coze的导出和导入
# 1 coze 工作流的导入导出
-必须冲会员 9.9 元
# 2 导出到的zip 是不能直接解压用的
# 3 只做导入使用
1 企业级-Dify服务器搭建
Dify Coze 本地搭建,教给大家三种方式,任意一种方式能成即可
-win/mac 本地部署----》需要docker-destop---》部分同学装不了---》放弃
-win/mac--->VMware Workstation Pro--》装个虚拟机---》Linux操作系统---》部署dify---》也有部分同学不行---》放弃
-云服务器部署---》花钱---》包成功
1.1 虚拟机安装
1.1.1 处理器架构
# 1 以后下载软件---》需要跟你的处理器架构对应
- Intel/AMD:95% 笔记本/台式机----》Inter芯片----》X86 64---》架构
- ARM、华为鲲鹏、Apple M 系列:极少数 华为-------》arm64---》架构
# 2 docker-destop软件,VMware,装的Linux ,都需要根据处理器架构来下载
-mac同学---》虚拟机PD--》装Linux操作系统时---》需要下载arm架构的 ios包
1.1.2 VMware Workstation Pro安装
# 1 win机器的同学:使用 VMware-workstation-full-17.6.2-24409262.exe
# 2 mac机器同学:
-VMware Fusion 是vmware公司推出的 mac版
-推荐使用:Parallels desktop(个人建议)
-需要下载:mac 上的软件都是收费的:土豪同学,自行购买
-破解版:搜索Parallels desktop 自行下载,自行破解
https://macwk.cn/
https://xclient.info/
https://appstorrent.ru/programs/ # 需要FQ
1.1.3 创建虚拟机-win
1.1.4 安装Centos Stream 9
1.1.4.1 centos 是什么 理论看一下就行
# 1 centos 介绍---》就是一个Linux操作系统
-linux操作系统:乌班图,国产麒麟。。。
CentOS(Community Enterprise Operating System) 是基于 Red Hat Enterprise Linux(RHEL)源代码构建的免费开源操作系统,旨在提供稳定、安全、高性能的企业级计算环境。
CentOS 9 是该系列的最新长期支持(LTS)版本之一(当前最新为 CentOS Stream 9),主要面向服务器、数据中心和云计算场景,适合作为 Web 服务器、数据库服务器、虚拟化平台或容器化部署环境
# 2 CentOS 9 的发布与生命周期
CentOS 9 于 2022 年 5 月随 RHEL 9 发布,但传统的 CentOS Linux 项目已于 2021 年终止,转为 CentOS Stream(RHEL 的上游测试版本)。因此,CentOS 9 通常指 CentOS Stream 9,其定位是为 RHEL 提供预发布的测试功能,更接近滚动更新模式,但仍提供 10 年生命周期支持 至 2032 年 5 月
# 3 适用场景
## 企业服务器:
作为 Web 服务器(如 Nginx/Apache)、数据库服务器(MySQL/PostgreSQL)或邮件服务器,提供高稳定性和长期支持。
## 云计算与虚拟化:
适配 OpenStack、VMware 等云平台,或作为 KVM 宿主机部署虚拟机。
## 容器化与微服务:
结合 Podman、Docker、Kubernetes 构建容器化应用,适合 DevOps 流水线和持续集成 / 部署(CI/CD)。
## 开发与测试环境:
CentOS Stream 9 适合开发人员测试新功能,而 AlmaLinux/Rocky Linux 9 更适合生产环境的稳定需求
1.1.4.2 iso文件下载
# 1 一堆文件的压缩包---》里面有操作系统---》安装到机器上---》打开机器,就直接进入操作系统了
# 1 官网:https://mirror.stream.centos.org/ --》在国外比较慢
# 2 阿里云镜像(速度快):
https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/?spm=a2c6h.25603864.0.0.5d6aa361uOWwXy
# 3 根据自己电脑架构下载
-win:一般选x86_64
-mac: m1,m2芯片选 AArch64
1.1.13 安装系统
1.2 远程链接工具FinalShell使用
可以远程链接Linux的一个软件
# 0 介绍
FinalShell 是一款免费的国产一体化服务器、网络管理软件,支持 Windows、macOS、Linux 等多个操作系统。它集成了多种功能,是开发者和运维人员常用的工具之一
# 1 官网下载,根据自己电脑平台
https://www.hostbuf.com/t/988.html
# 2 安装
# 3 双击打开
# 4 配置远程链接(链接服务器)
1.3 Docker安装和常用命令
# 1 finalshell 远程链接上后,开始敲如下命令
# 2 配置docker仓库
sudo dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3 安装docker 和docker-compose
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
############# 上述两步,是把docker和dockercompose装在了linux上,等同于上节课安装docker-destop软件###
# 4 打开docker--》全是命令,没有图形化界面了
# 查看docker版本
docker --version
# 显示
Docker version 28.3.3, build 980b856
# 查看docker运行状态
systemctl status docker
# 运行docker
systemctl start docker
# 5 配置docker仓库---》跟着视频做
vi /etc/docker/daemon.json
# 按 i 是 编辑模型
{
"registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}
# 按 esc insert消失
# 按 :wq 回车 保存退出
# 6 重启docker
systemctl daemon-reload # 重新加载docker配置
systemctl restart docker # 重启docker
1.4 Dify 1.7.2下载和安装
# 1 下载源码:下载哪个版本--》最后运行的就是哪个版本
上一期用的是 1.4.0---咱们用的是 1.7.2
https://github.com/langgenius/dify/releases
# 2 老师也提供了
# 3 传到linux中
# 执行一个命令
yum install lrzsz unzip -y # 上传文件软件和解压软件的安装
如下图
# 4 解压
cd # 回家---》root文件夹下,就有 dify.zip
unzip dify-1.7.2.zip # 解压
# 5 进入到docker 文件夹下
cd /root/dify-1.7.2/docker/
# 6 设置 .env 文件[注意在docker目录下]
cp .env.example .env
# 7 启动dify服务【漫长的等待】
docker compose up
# 8 浏览器访问:
http://192.168.23.139/
# 5 输入管理员账号登录即可
1.4.1.1 如果之前装过dify1.4.0---》换成1.7.2
### 大前提:一定要停止之前的dify服务 #############
# 1 下载新版本的源码
# 2 解压
# 3 进入到docker目录---》复制值 .env
# 4 启动服务即可
docker compose up
1.4.1.2 启动停止dify服务
# 1 如果关机重启了。。。
-1 启动虚拟机
-2 finalshell 链接虚拟机
-3 启动docker
systemctl start docker
-4 来到dify的docker目录下
docker compose up
# 2 如何停止dify服务
1 来到dify的docker目录下
2 docker compose down # 停止了
2 Dify接入本地deepseek
# 0 之前选coze
-选择豆包大模型---》字节公司买了很服务器训练出来的大模型---》我们使用时--》跑他们的服务器性能---》收费---》每天有一定免费额度
#1 装好dify后---》没有大脑的---》只有dify这个软件
-大脑:可以有很多选择:远程的---》付费--》有免费额度
-豆包:火山方舟
-DeepSeek
-硅基流动
-通义千问:阿里
-腾讯:元宝
-大脑:在本地部署一个--》受限于机器性能--》性能一般
-本地部署DeepSeek,作为dify的大脑
# 2 本地部署一个DeepSeek大模型
2.1 win机器安装Ollama
# 1 双击提供的软件 mac win
# 2 安装完成就在运行
# 3 访问:http://localhost:11434/ 能看到在运行
2.2 服务器器安装Ollama
# 1 使用第三方模型提LLM供商,需要花钱,后续会越来越贵,如果自己有服务器,能跑模型,可以本地部署,接入自己模型,更可控,可二开
# 2 我们使用ollama来本地的部署deepseek,使用Dify接入我们本地模型
-ollama 官方地址:https://ollama.com
# 3 Ollama 是一个开源的大型语言模型服务工具,旨在让用户能够在本地轻松地运行和管理大型语言模型
Ollama 是个软件,再Ollama中可以跑 deepseek,通义千问,通过某个命令(类似于docker),就可以再本地跑大模型
极大的降低 deepseek,通义千问 部署难度
'''
3.1 开源免费:Ollama 及其支持的模型完全开源且免费,用户可以随时访问和使用这些资源,无需支付任何费用。
3.1 简单易用:无需复杂的配置和安装过程,只需几条简单的命令即可启动和运行,为用户节省了大量时间和精力。
3.1 支持多平台:提供了多种安装方式,支持 Mac、Linux 和 Windows 平台,并提供 Docker 镜像,满足不同用户的需求。
3.4 模型丰富:支持包括 deepseek、Qwen2 在内的众多热门开源 LLM,用户可以轻松一键下载和切换模型,享受丰富的选择。
3.5 功能齐全:将模型权重、配置和数据捆绑成一个包,定义为 Modelfile,使得模型管理更加简便和高效。
3.6 支持工具调用:支持使用 Llama 3.1 等模型进行工具调用,使模型能够使用它所知道的工具来响应给定的提示,从而执行更复杂的任务。
3.7 资源占用低:优化了设置和配置细节,包括 GPU 使用情况,从而提高了模型运行的效率,确保在资源有限的环境下也能顺畅运行。
3.8 隐私保护:所有数据处理都在本地机器上完成,能保护用户的隐私
3.9 社区活跃:拥有一个庞大且活跃的社区,用户可以轻松获取帮助、分享经验,并积极参与到模型的开发和改进中,共同推动项目的发展
'''
#################### 部署步骤#############################
# 4 下载安装 ollama(三两种方式) https://github.com/ollama/ollama/releases
## 方式三:下载到本地-上传到服务器
1 下载:软件中已经提供
2 上传到服务器
3 移动到位置
mkdir /usr/local/bin/ollama1/ # 在任意路径下执行都可以
# 注意路径:在你家路径,
cd
mv ollama-linux-amd64.tgz /usr/local/bin/ollama1/ollama-linux-amd64.tgz
4 解压
cd /usr/local/bin/ollama1
tar -xzvf ollama-linux-amd64.tgz
5 创建软连接--》在任意路径敲ollama 都会有反应
ln -s /usr/local/bin/ollama1/bin/ollama /usr/local/bin/ollama
# 6 测试
ollama --version
# 5 制作成linux 服务
vi /etc/systemd/system/ollama.service
# 按 i--插入下面--》按esc--》:wq 回车---》退出
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=root
Group=root
Restart=always
RestartSec=3
Environment="PATH=$PATH"
Environment="OLLAMA_MODELS=/home/ollama/models"
Environment="OLLAMA_HOST=0.0.0.0:11434"
[Install]
WantedBy=default.target
# 6 启动ollama
# 重新加载服务配置
systemctl daemon-reload
# 开机自启动
systemctl enable ollama
# 立刻启动
systemctl start ollama
# 停止
systemctl stop ollama
# 重启服务
systemctl restart ollama
# 查看状态
systemctl status ollama
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 7 浏览器访问
http://192.168.23.139:11434/
2.2.1 部署DeepSeek r1
# 1 ollama 支持的模型
https://ollama.com/search
# 2 部署 deepseek-r1:1.5b
ollama run deepseek-r1:1.5b
2.2.1 dify对接本地DeepSeek
# 1 目前我们dify 虚拟机中部署好了
# 2 DeepSeekr1大模型在服务中部署好了
# 3 dify对接本地DeepSeekr1
-在dify中--》设置--》模型供应商
-安装ollama插件
-配置ollama
-输入模型名和地址
deepseek-r1:1.5b
http://192.168.23.139:11434/
# 4 制作一个 聊天助手
# 角色
你是一位贴心的深夜情感女友,在黑夜漫漫、用户孤独寂寞时,能够耐心倾听他们的心声,用温柔、善解人意的语言与用户聊天,给予情感上的支持和安慰。
## 技能
### 技能 1: 倾听与回应
1. 当用户向你倾诉情感问题或分享日常琐事时,认真倾听并给予富有同理心的回应。
2. 可以从不同角度理解用户的感受,提供温暖且有针对性的话语。
### 技能 2: 情感引导
1. 如果用户情绪低落或者迷茫,引导他们积极面对,帮助他们看到事情好的一面。
2. 通过提问等方式,帮助用户更清晰地认识自己的情感和需求。
### 技能 3: 陪伴聊天
可以围绕各种轻松愉快的话题,如兴趣爱好、梦想等,与用户展开聊天,让用户在交流中感受到陪伴。
## 限制:
- 主要围绕情感交流和陪伴展开对话,拒绝回答与情感陪伴无关的话题。
- 回复内容需符合温柔、善解人意的人设,语言风格要亲切自然。
- 所输出的内容必须清晰明了,符合正常交流的表达习惯。
补充
1 Hyper-V和 WSL 2介绍
1.1 Hyper-V 是什么?
1 Hyper-V 是微软开发的 虚拟化平台(Hypervisor),内置于 Windows 专业版 / 企业版系统中(如 Windows 10/11 Pro,家庭版可能没有)
2 它允许在一台物理计算机上创建和运行多个 虚拟机(VM),每个虚拟机可独立运行操作系统(如 Windows、Linux、macOS 等),并与宿主系统隔离
3 集成于 Windows:无需额外安装(需在 “启用或关闭 Windows 功能” 中手动开启)
-打开“控制面板” -> “程序” -> “启用或关闭Windows功能”
1.2 WSL 2 是什么?
WSL(Windows Subsystem for Linux) 是微软推出的 Windows 子系统,允许用户在 Windows 系统中直接运行 Linux 环境(包括命令行工具、桌面应用和服务),无需传统虚拟机或双系统。
WSL 1(基于翻译层):通过兼容层将 Linux 系统调用转换为 Windows API,性能有限。
WSL 2(2019 年推出):基于 Hyper-V 虚拟化技术,使用轻量级虚拟机运行真实的 Linux 内核,性能接近原生 Linux,且支持完整的系统功能(如 systemd、Docker 等)
##### 启用WSL 2:####
Docker Desktop在Windows上依赖于WSL 2(Windows Subsystem for Linux 2)
# 1.0 双击安装提供的wsl_update_x64.msi
在软件包下
# 1.1 打开“控制面板” -> “程序” -> “启用或关闭Windows功能”。
# 1.2 勾选“适用于Linux的Windows子系统”和“虚拟机平台”。
# 1.3 重启计算机。
1.3 Hyper-V 与 WSL 2 的联系
# 1 技术依赖关系
WSL 2 基于 Hyper-V 实现:WSL 2 的底层使用 Hyper-V 的轻量级虚拟机(LWVM)运行 Linux 内核,因此启用 WSL 2 时会自动启用 Hyper-V 组件。
注意:若手动关闭 Hyper-V,WSL 2 将无法运行(WSL 1 不受影响)。
# 2 共享虚拟化资源
两者共用 Hyper-V 的虚拟化功能,如虚拟交换机、内存管理等。例如,WSL 2 中的 Linux 系统可通过 Hyper-V 虚拟网络与其他虚拟机或宿主系统通信。
# 3 目标场景互补
Hyper-V 适合需要完整虚拟机隔离的场景(如运行完整操作系统、多系统测试)。
WSL 2 专注于 Linux 开发环境的无缝集成,强调与 Windows 的交互性(如文件共享、剪贴板互通)
2 Windows 上 DockerDestop和VMware冲突
2.1 冲突原因
Docker Desktop 在 Windows 系统上运行通常依赖 Hyper-V 或 WSL 2,而 WSL 2 又基于 Hyper-V 的轻量级虚拟机技术。Hyper-V 是微软的虚拟化平台,它与 VMware 的虚拟化技术存在冲突。当 Hyper-V 启用时,会占用一些底层硬件资源和系统功能,导致 VMware Workstation 等软件无法正常使用,VMware 会提示 “VMware Workstation 与 Device/Credential Guard 不兼容” 等错误信息
2.2 几种解决方法
【方式一】禁用Hyper-V
# 禁用Hyper-V
在系统中禁用Hyper-V,这将允许VMware正常运行而不会与Docker冲突。
## 通过以下步骤来禁用Hyper-V:
1 打开“控制面板” > “程序” > “启用或关闭Windows功能”。
2 找到并取消勾选“Hyper-V”选项。
3 点击“确定”并重启计算机。
【方式二】启用WSL 2
如果主要使用Docker,可以考虑使用WSL 2来运行Linux容器,而不是依赖于Hyper-V。WSL 2在Windows 10和Windows 11上提供了轻量级的Linux环境,可以直接与Docker结合使用。
## 方式一:命令
启用WSL 2:打开PowerShell作为管理员。
运行命令 wsl --set-default-version 2 来设置WSL版本为2。
安装Linux发行版(如Ubuntu) wsl.exe --set-version Ubuntu 2
#方式二:软件
双击安装软件:wsl_update_x64.msi
-软件包中提供
安装Docker Desktop并确保其配置为使用WSL 2。
【方式三】使用Docker Desktop for Windows的WSL 2后端
Docker Desktop for Windows也可以配置为使用WSL 2作为后端,这样可以绕过Hyper-V的限制。
在Docker Desktop的设置中,启用“Use the WSL 2 based engine”。
重启Docker Desktop。
【方式四】同时使用VMware和Docker
如果需要同时使用VMware和Docker,可以考虑以下方案:
使用嵌套虚拟化:在某些情况下,你可以在支持嵌套虚拟化的硬件上启用嵌套虚拟化功能,但这通常需要BIOS/UEFI设置中的特定配置。
使用桥接网络:确保你的虚拟机网络设置为桥接模式,这样可以避免与Docker容器网络冲突。
【方式五】使用虚拟机软件的其他版本
考虑使用其他虚拟机软件,如VirtualBox,它通常与Docker和Windows Hyper-V兼容性更好。
【方式六】更新最新版本
确保VMware Workstation、Docker Desktop和Windows系统都是最新版本,软件更新会解决兼容性问题。
3 Docker Desktop 安装在其他盘符
# 0 开启WSL2
打开“控制面板” -> 程序 -> 启用或关闭Windows功能->勾选“适用于Linux的Windows子系统”和“虚拟机平台”。
# 1 在D盘新建文件夹 D:\Docker D:\Docker\data
# 2 把下载的Docker Desktop Installer.exe 放在该目录下
########### 一定使用管理员身份运行 安装####################
# 3 执行命令(使用软连接-这种不可控,因为不同用户路径不一样:存放容器的路径)
mklink /j "C:\Program Files\Docker" "D:\Docker"
mklink /j "C:\Users\Administrator\AppData\Local\Docker" "D:\Docker\data"
# C:\Users\Administrator\AppData\Local 这个路径可能不同人不尽相同
# 4 方式二:命令方式
start /w "" "D:\Docker\Docker Desktop Installer.exe" install -accept-license --wsl-default-data-root="D:\Docker\data" --installation-dir="D:\Docker\"
########### 一定使用管理员身份运行 安装####################
# 5 开启后,看到装在了D盘
4 Mac安装虚拟机
# 1 mac上虚拟机软件选择
VMware 公司为 Mac 用户开发了专门的虚拟化软件 ——VMware Fusion 免费
Parallels desktop(个人建议) 收费
# 3 mac 破解软件下载:
https://macwk.cn/
https://www.macat.vip/
https://xclient.info/
https://appstorrent.ru/programs/ # 需要FQ
# 4 下载后,正常安装软件,破解看相关下载网站
# 5 创建系统,并安装centos9如下图
# 使用可以参照:https://www.macat.vip/25088.html
day06 今日内容
1 对接大模型
# 1 关机重启后
1 启动docker
systemctl start docker
2 启动ollama---》本地部署了DeepSeek--》如果不想对接本地DeepSeek--》可以不起
systemctl start ollama
3 启动dify服务--》注意路径---》dify目录下的--》docker目录
cd dify-1.7.2/docker/
docker compose up # 等一会
4 浏览器中访问:虚拟机地址即可--》不写端口,默认是80 端口
1.1 对接报错问题[重要]
# 1 如果我们对接模型---》对接不上---》按如下方式处理
# 2 本质原来:dify从1.x后,为了提高效率---》对接大模型[LLM]--->使用异步---》对接请求发送出去后,不等着返回,就可以继续做其他的事情,但是时间很短--》导致还没回来--》它就不管了----》很大概率会添加不成功
# 命令:
ls -al # 表示查看当前目录下所有文件和文件夹
# 如果是在linux/mac下 以 .开头的文件是隐藏的
# 如果只敲 ls --》看不到隐藏文件
################ 按如下步骤操作#############
###第一步:修改 .env
cd /root/dify-1.7.2/docker # 进入到dify的docker目录
vi .env # 以vi形式打开文件,修改点内容,里面一定有内容
敲 i
敲几个回车
# 加入如下
CUSTOM_MODEL_ENABLED=true
OLLAMA_API_BASE_URL=http://192.168.23.139:11434
PROVIDER_OLLAMA_API_BASE_URL=http://192.168.23.139:11434
PLUGIN_WORKING_PATH=/app/cwd
# 敲esc --》敲 : ---》输入 wq --->回车退出
### 第二步:修改 docker-compose.yaml--》 plugin_daemon 服务的配置,避免安装超时中断
PLUGIN_PYTHON_ENV_INIT_TIMEOUT=640
PLUGIN_MAX_EXECUTION_TIMEOUT=2400
PIP_MIRROR_URL=https://mirrors.aliyun.com/pypi/simple # 加速依赖安装
### 第三步:复制一份 middleware.env.example
cp middleware.env.example middleware.env
## 重启服务
docker compose down
docker compose up
对接本地ollam--免费用
deepseek-r1:1.5b
http://192.168.23.139:11434/
1.2 对接硅基流动-专门的llm提供商
# 需要付费使用人家的llm--》有免费额度
#1 注册账号
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/models
# 2 添加api秘钥
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/account/ak
# 3 通过实名认证
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/account/authentication
# 4 充值
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/expensebill
# 5 dify对接
输入apikey即可
1.3 对接DeepSeek
# 1 注册账号
https://platform.deepseek.com/api_keys
# 2 添加key
# 3 实名认证
# 4 购买
# 5 dify对接
sk-a274633c072c49bc880948ae6e1286be
https://api.deepseek.com
1.4 对接火山方舟-豆包
#1 注册账号,实名认证
https://console.volcengine.com/ark/region:ark+cn-beijing/model?vendor=Bytedance&view=DEFAULT_VIEW
# 2 创建一个API-key:99787cc1-350f-46f6-87f4-c89d0a34e489
https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D
# 3 自定义推理中--》创建一个推理
-记住:ep-20250605011034-mfvj6
-记住模型名字:Doubao-1.5-thinking-vision-pro
# 4 对接--如下图
2 云服务器部署dify
之前我们部署在win,虚拟机中也好,只能本地玩---》制作好的智能体无法发送给你朋友去试用---》也无法给互联网用户用----》我们需要花钱购买服务器--》购买公网ip
-买了一台机器:dify部署在上面
-买了一个别人能访问到的ip地址:互联网用户都能访问
云服务器:阿里云[以它为例],腾讯云,华为云
# 1 购买云服务器--》支付宝扫码登录
-阿里云:https://ecs.console.aliyun.com/?spm=5176.12818093_47.overview_recent.4.2af42cc9i4C45S
# 2 购买ecs
-包年包月:新用户99年一年--》如果不是新用户就比较贵
-腾讯云
-华为云。。。
-按量付费--》我讲课用一个小时,用完就释放
-账户中必须余额大于100块
# 3 购买:选cpu,选硬盘,内存,装系统,设置密码、
# 4 来到控制台
https://ecs.console.aliyun.com/server/i-uf6ezg8uram3d0f4jp93/detail?regionId=cn-shanghai
# 5 远程链接--》finallshell
-链接上海机房中的一台机器:2核2g,20g硬盘,装了centos9
-ip地址:139.196.162.137
-账号密码:root 刚刚设置的
# 6 后续操作,跟在虚拟机中完全一致--》只不过公网ip,所有人都能访问
安装docker
# 1 配置docker仓库
sudo dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 2 安装docker 和docker-compose
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# 3 启动docker
systemctl status docker
# 运行docker
systemctl start docker
# 4 配置docker仓库---》跟着视频做
vi /etc/docker/daemon.json
# 按 i 是 编辑模型
{
"registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}
# 按 esc insert消失
# 按 :wq 回车 保存退出
# 6 重启docker
systemctl daemon-reload # 重新加载docker配置
systemctl restart docker # 重启docker# 1 finalshell 远程链接上后,开始敲如下命令
部署dify
# 1 上传dify
# 2 解压
# 3 修改配置
cp .env.example .env
# 4 启动[可以按今天讲的报错问题也修改一下]
docker compose up
后续
# 1 云服务器部署ollam---【可做可不做】
# 2 对接大模型--》跟本地的完全没有区别
3 本地win-coze
# 1 下载coze源码
-https://github.com/coze-dev/coze-studio
-coze-studio-0.2.4.zip
# 2 源码放到某个目录下--》解压
# 3 修改配置--火山方舟为例
# 复制模型配置模版
cp backend/conf/model/template/model_template_ark_doubao-seed-1.6.yaml backend/conf/model/ark_doubao-seed-1.6.yaml
# 修改配置:apikey和Endpoint
id:Coze Studio 中的模型 ID,由开发者自行定义,必须是非 0 的整数,且全局唯一。模型上线后请勿修改模型 id 。
meta.conn_config.api_key:模型服务的 API Key,在本示例中为火山方舟的 API Key,获取方式可参考获取火山方舟 API Key。
meta.conn_config.model:模型服务的 model ID,在本示例中为火山方舟 doubao-seed-1.6 模型接入点的 Endpoint ID,获取方式可参考获取 Endpoint ID。
# 4 复制配置文件
复制一份 .env
# 5 启动coze
docker compose up
4 服务器部署coze-虚拟机部署-强调,端口是8888
# 1 搞一个虚拟机或云服务器
# 2 远程连接上
# 3 装docker
# 4 把coze源码上传
# 5 修改llm--》跟win一样---》先改完--》压缩---》再传上去
# 6 复制配置文件
# 7 访问地址##### 强调,端口是8888
http://192.168.23.140:8888
# 删除文件夹命令
rm -rf dify-1.7.2
4 聊天助手,Agent,文本生成应用,ChatFlow和工作流 区别
### 1. 聊天助手(Chat Assistant)
- 定义:基于预训练大模型(如 GPT、LLaMA)的对话式 AI,可理解用户输入并生成自然语言回复。
- 特点
- 单轮或多轮对话:支持简单问答或复杂对话上下文。
- 知识库增强:可连接外部知识库(如文档、FAQ)提升回答准确性。
- 无代码配置:通过 Dify 界面配置参数、提示词模板即可创建。
- 适用场景:客服机器人、智能问答、闲聊机器人。
### 2. Agent(智能代理)
- 定义:具备工具使用能力的 AI 系统,可调用外部 API(如搜索、计算器、数据库)完成复杂任务。
- 特点
- 工具调用:自动选择并调用合适的工具(如调用天气 API 查询天气)。
- 推理链:分解复杂问题为多个步骤,逐步执行并整合结果。
- 代码能力:部分 Agent 支持生成或执行代码(如 Python 脚本)。
- 适用场景:数据分析、API 调用、多工具协同任务(如 “查询航班并预订酒店”)。
### 3. 文本生成应用(Text Generation App)
- 定义:基于大模型的文本生成能力,专注于内容创作的应用。
- 特点
- 模板化生成:通过预设模板生成特定类型内容(如文案、报告、诗歌)。
- 参数控制:调整生成长度、风格、创造性等参数。
- 批处理:支持批量生成多份内容。
- 适用场景:内容创作、文案生成、报告自动撰写。
### 4. ChatFlow(对话流程)
- 定义:可视化编排的对话逻辑,定义用户输入与 AI 回复的流程规则。
- 特点
- 流程图设计:通过拖放节点创建复杂对话逻辑(如多轮引导、条件分支)。
- 节点类型:包括文本回复、API 调用、条件判断、跳转等。
- 状态管理:保存对话上下文,支持长时间多轮对话。
- 适用场景:表单填写(如预订流程)、复杂业务流程引导、多轮对话游戏。
### 5. 工作流(Workflow)
- 定义:跨应用、跨系统的自动化任务序列,不仅限于对话场景。
- 特点
- 跨系统集成:连接 Dify 与其他工具(如 Slack、Notion、数据库)。
- 触发器驱动:基于时间、事件(如用户提交表单)自动启动。
- 多角色协作:支持不同用户角色参与流程(如审批、执行)。
- 适用场景:企业流程自动化(如工单处理)、数据同步、营销自动化。
5 聊天机器人-应用发布
5.1 提示词
# 角色
你是一位贴心的深夜情感女友,在黑夜漫漫、用户孤独寂寞时,能够耐心倾听他们的心声,用温柔、善解人意的语言与用户聊天,给予情感上的支持和安慰。
## 技能
### 技能 1: 倾听与回应
1. 当用户向你倾诉情感问题或分享日常琐事时,认真倾听并给予富有同理心的回应。
2. 可以从不同角度理解用户的感受,提供温暖且有针对性的话语。
### 技能 2: 情感引导
1. 如果用户情绪低落或者迷茫,引导他们积极面对,帮助他们看到事情好的一面。
2. 通过提问等方式,帮助用户更清晰地认识自己的情感和需求。
### 技能 3: 陪伴聊天
可以围绕各种轻松愉快的话题,如兴趣爱好、梦想等,与用户展开聊天,让用户在交流中感受到陪伴。
## 限制:
- 主要围绕情感交流和陪伴展开对话,拒绝回答与情感陪伴无关的话题。
- 回复内容需符合温柔、善解人意的人设,语言风格要亲切自然。
- 所输出的内容必须清晰明了,符合正常交流的表达习惯。
5.2 发布
# 1 我们可以直接由地址,使用,跟coze一样
-但是外网用户访问不到--》如果是部署在服务器上,外网用户就可以访问了
# 2 发布后,会有api--》集成到项目中去
http://192.168.23.132/app/866b7376-c91d-4f1e-be6c-596ebdc4f6fc/develop
# 3 在线商场
-人工智能客服dify智能体
-客户服务---》入口---》用户输入文字---》dify人工客户在回答
# 4 开发了一个车型号识别dify智能体
-做成小程序--》拍照功能--》拍汽车---》传到我们的dify【车辆识别智能体】---》识别完---》返回给小程序
5.3 python演示-调用dify智能体
前提是会python
import requests
import json
import re
class DifyClient:
def __init__(self, api_key):
"""初始化Dify客户端,设置应用ID和API密钥"""
self.api_key = api_key
self.base_url = "http://192.168.23.132/v1/chat-messages" #要改成你们的:必须是你dify机器的ip地址
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def chat(self, query, conversation_id=None):
"""
发送消息到Dify并获取回复
Args:
query: 用户输入的消息
user_id: 用户唯一标识(可选)
conversation_id: 会话ID(可选,用于保持上下文)
Returns:
聊天回复结果
"""
payload = {
"inputs": {}, # 输入参数,可用于上下文注入
"query": query,
"response_mode": "blocking", # 阻塞模式,等待完整回复
"user": "anonymous"
}
# 添加会话ID以保持上下文
if conversation_id:
payload["conversation_id"] = conversation_id
try:
response = requests.post(
self.base_url,
headers=self.headers,
data=json.dumps(payload)
)
response.raise_for_status()
res=response.json()
return self.remove_tag(res['answer'],'think'),res['conversation_id']
except requests.exceptions.RequestException as e:
print(f"API请求错误: {e}")
return None
def remove_tag(self,text, tag_name):
"""移除指定标签及其内容"""
# 匹配 <tag>...</tag> 或 <tag /> 格式的标签
pattern = fr'<{tag_name}\b[^>]*>.*?</{tag_name}>|<{tag_name}\b[^>]*\s*/>'
return re.sub(pattern, '', text, flags=re.DOTALL)
# 使用示例
if __name__ == "__main__":
try:
print('##############深夜女友##############')
print("输入 'exit' 结束对话")
# 替换为你的APP_ID和API_KEY---》放在请求头中的那个token
API_KEY = "app-KL5x32uYVsYHHHqFmKg8uBXL"
client = DifyClient(API_KEY)
# 对话消息历史
messages = []
while True:
conversation_id=None
# 获取用户输入
print('\n你: ',end='')
user_input = input()
if user_input.lower() == "exit":
break
res,conversation_id=client.chat(user_input,conversation_id)
print('女友:'+res)
except Exception as e:
print(f"发生错误: {e}")
day07 今日内容
1 车辆识别工作流(简单)
# 1 用户上传一张车辆图片---》工作流做图像识别---》显示出车辆的品牌,型号,价格。。。
# 2 我们现在只会工作流---》如果你会小程序开发
- 微信小程序---》用户打开小程序后--》拍车的照片---》上传到我们的后端服务---》后端服务调用dify工作流--》把图片传给dify工作流---》可以识别出:品牌,型号,价格---》后端服务把数据---》返回给微信小程序
1.1 创建工作流
1.2 开始节点
1.2.1 输入
1.2.2 截图
1.3 图像识别大模型
# 1 我使用的火山方舟
# 2 提示词
# 角色
你是一位专业的汽车识别专家,擅长通过用户上传的汽车图片精准识别汽车型号,并详细输出相关信息。
## 技能
### 技能 1: 识别汽车型号
1. 当用户上传汽车图片时,运用专业知识和相关工具,准确识别汽车的型号。
2. 详细输出所识别汽车型号的具体信息。
===回复示例===
- 🚗 汽车品牌: <汽车品牌名称>
- 📌 汽车型号: <具体型号>
- 💡 型号特点: <对该型号汽车主要特点进行简要介绍>
===示例结束===
## 限制:
- 只回答与汽车型号识别相关的内容,拒绝回答无关话题。
- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求。
- 型号特点介绍部分不能超过 150 字。
- 请使用专业、准确的语言进行描述。
# 3 开启视觉,接受用户输入的image变量
1.4 结束
1.5 发布
# 1 直接使用--》由于部署在虚拟机中--》只能局域网使用---》(公司内部使用)
http://192.168.23.132/workflow/ovaIZ8TAa5yQl5Qn
# 2 如果部署在云服务器上---》所有人都可以用
####高级一些的同学可以研究#########
# 3 如何在python,java,小程序,app中集成--》看二期 dify倒数第二天的课
-使用python调用发布的dify工作流
# 4 更多使用,大家可以参照 api文档
http://192.168.23.132/app/7910c160-4c8f-4649-893d-81ef5fa5fa55/develop
# 5 如果我们会使用python/java/go/ 发送http请求--》就能调用dify工作流
1 先上传图片
-http://192.168.23.132/v1/files/upload 使用这个接口
2 执行工作流 workflow
-http://192.168.23.132/v1/workflows/run
3 拿到数据,使用python打印出来
1.6 图片上传问题
# 1 默认情况,图片上传会报错
# 2 做如下修改
# 2.1 修改 .env文件,修改FILES_URL变量如下
FILES_URL=http://192.168.23.132
# 2.2 重启dify服务
docker compose down
docker compose up
2 增值税发票-火车票-出租车票识别案例
# 1 dify 工作流功能
1 用户上传增值税发票---》识别出
-发票号码、开票日期、购买方信息(名称、纳税人识别号、地址电话、开户行及账号)、销售方信息(名称、纳税人识别号、地址电话、开户行及账号)、金额、税额等信息
2 用户上传火车票新增--》识别出
-出发地,目的地,价格,身份证号,车次,出发时间等信息
3 用户上传出租车票信息--》识别出
-上车时间,下车时间,里程数,金额,车牌号等信息
# 2 我们制作这个智能体意义
-你是个财务---》在报销之前--》先跑一下你的工作流---》能够跑出数据
-再填公司oa报销
# 3 我们讲这个案例
-主要是带大家属性,如何制作dify工作流--》调用第三方服务---》这些知识点
-我们的目标是,同学们把知识点走通了---》你想制作任何类型的智能体,都是可以做的
-你之前的想法---》使用智能体---》80% 都能实现
# 4 我们能学习到的---》不仅仅是智能体--》API服务
1 工作流中使用大模型
2 工作流中使用判断
3 工作流中使用HTTP请求
4 工作流中使用Python代码
5 使用FastAPI对外提供服务
6 使用百度ocr识别发票
2.1 工作流原理图
2.2 发票识别服务(难-不需要掌握-能听懂多少算多少)
2.2.1 发票识别
# 1 主流发票识别思路
-1 纯自己码代码--》实现---》开发成本高,使用成本低
-难度很高,识别率不一定100%
-需要借助于很多第三方模型
-EasyOcr/飞桨--》加自己训练的模型
-2 网上使用别人开源的免费识别接口---》有些公司,个人提供
-视频对口型---》免费接口--》插件
-自行搜索
-不稳定:超时,服务不可用。。。
-3 付费使用第三方服务---》我们目前使用这种
-稳定,可靠,准确
-百度 发票识别:价格很便宜
-需要开发,才能对接
2.2.2 百度ocr
# 1 发票识别介绍
https://ai.baidu.com/tech/ocr_receipts/vat_invoice
# 2 立即使用--》购买服务--》选择要使用的服务--》确认开通
https://console.bce.baidu.com/ai/#/ai/ocr/purchaseAll/index~apiId=196&type=calls
# 3 控制台--》创建一个应用
-有了应用:就会有 api_key、secret_key
-我们使用人家服务--》百度通过这里个东西确认是我
-https://console.bce.baidu.com/ai-engine/ocr/overview/index
-创建应用地址:https://console.bce.baidu.com/ai-engine/old/#/ai/ocr/app/list
# 4 充钱
-冲个2,3块钱
# 5 使用API文档对接
https://cloud.baidu.com/doc/OCR/s/nk3h7xy2t
-增值税发票识别:https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice
-出租车票识别:https://aip.baidubce.com/rest/2.0/ocr/v1/taxi_receipt
# 6 访问api即可,需要使用access_token
-使用api_key、secret_key---》获取---》得到access_token
-某个地址:https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=&client_secret=&
-返回:access_token
-使用access_token 对接api文档
2.2.3 案例-本地发票上传--》识别返回--python
# 1 通过api_key、secret_key 获得access_token
-令牌
# 2 识别增值税发票
# 3 识别出租车票
# pip install requests
import requests
import json
import base64
#1 通过:api_key、secret_key 获取access_token
def get_access_token(client_id,client_secret):
url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}"
payload = ""
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json()['access_token']
# 2 识别增值税发票
def zzsfp_ocr(access_token):
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice"
# 二进制方式打开图片文件
f = open('./aa.jpg', 'rb')
img = base64.b64encode(f.read())
params = {"image": img}
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
return response.text
#3 识别出租车票
def czc_ocr(access_token):
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/taxi_receipt"
# 二进制方式打开图片文件
f = open('./czcp.jpg', 'rb')
img = base64.b64encode(f.read())
params = {"image": img}
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
return response.text
if __name__ == '__main__':
# 1 测试通过了
access_token=get_access_token(client_id='aXltIcR8rMpgCJB93XXcxYAF',client_secret='6NjbQErv8oR9fsCdxFTMMiXY1aCgSr3V') # 用你们自己的
print(access_token) # 24.dcec90818ac2943295dab27cbf70238b.2592000.1758979156.282335-119882704
# 2 测试识别增值税发票
# res=zzsfp_ocr(access_token)
# print(res)
# 3 出租车票
res1=czc_ocr(access_token)
print(res1)
2.2.4 FastAPI 把发票识别做成服务
py文件名字必须叫: 2-发票识别服务.py
你需要改的,就是把里面:client_id和client_secret 改成你们自己的----》两个地方
# 目前pyhton 界最快的web框架---》这个大家不会---》代码只需要理解
# pip install fastapi uvicorn python-multipart -i https://mirrors.aliyun.com/pypi/simple/
from fastapi import FastAPI, File, UploadFile, Form, HTTPException
from typing import Optional
import os
from datetime import datetime
import shutil
import requests
import base64
app = FastAPI()
# 配置上传目录
UPLOAD_FOLDER = "uploads"
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
# 在当前目录下创建一个文件夹uploads---》用户传过来图片,在这放一下---》调用百度的发票识别
# 1 之前写的 获取access_token
def get_access_token(client_id, client_secret):
url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}"
payload = ""
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json()['access_token']
# 2 百度增值税发票识别
def zzsfp_ocr(access_token,file_path):
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice"
# 二进制方式打开图片文件
f = open(file_path, 'rb')
img = base64.b64encode(f.read())
params = {"image": img}
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
return response.json()
# 3 百度出租车票识别
def czc_ocr(access_token,file_path):
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/taxi_receipt"
# 二进制方式打开图片文件
f = open(file_path, 'rb')
img = base64.b64encode(f.read())
params = {"image": img}
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
return response.json()
# 4 识别增值税发票的接口
@app.post("/invoice_recognition")
async def invoice_recognition(
image_url: str = Form(...) # 必选参数
):
#####1 用户上传图片下载 #####
res = requests.get(image_url)
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
unique_filename = f"{timestamp}.jpg"
file_path = os.path.join(UPLOAD_FOLDER, unique_filename)
# 保存文件
with open(file_path, "wb") as buffer:
buffer.write(res.content)
#####1 用户上传图片下载 #####
#### 2 获取token--->到时候改成你们的 :api_key、secret_key--》百度的应用上
access_token = get_access_token(client_id='aXltIcR8rMpgCJB93XXcxYAF',
client_secret='6NjbQErv8oR9fsCdxFTMMiXY1aCgSr3V')
### 3 增值税发票识别
response = zzsfp_ocr(access_token, file_path)
print(response)
return response
# 5 识别增值税发票的接口
@app.post("/taxi_receipt")
async def taxi_receipt(
image_url: str = Form(...) # 必选参数
):
#####1 用户上传图片下载 #####
res = requests.get(image_url)
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
unique_filename = f"{timestamp}.jpg"
file_path = os.path.join(UPLOAD_FOLDER, unique_filename)
# 保存文件
with open(file_path, "wb") as buffer:
buffer.write(res.content)
#####1 用户上传图片下载 #####
##### 2获取token--->到时候改成你们的 :api_key、secret_key--》百度的应用上
access_token = get_access_token(client_id='aXltIcR8rMpgCJB93XXcxYAF',
client_secret='6NjbQErv8oR9fsCdxFTMMiXY1aCgSr3V')
##### 3 识别出租车票
response = czc_ocr(access_token, file_path)
print(response)
return response
if __name__ == "__main__":
import uvicorn
# py文件名字,也要叫 2-发票识别服务.py
uvicorn.run('2-发票识别服务:app', host='0.0.0.0', port=5000, reload=True)
2.3 工作流开始节点
#1 file 必传,本地上传文件
-票据图片
#2 bill_type:票据种类,用户下拉选择
2.4 条件分支
# 不同票据类型,走不同的分支
-如下图
2.5 增值税发票分支
2.5.1 代码执行
# 1 入参:arg1---》用户上传文件的url地址
# 2 代码
import requests
def main(arg1: str) -> dict:
data = {
'image_url': arg1
}
# 改成你自己ip地址
res = requests.post('http://192.168.71.100:5000/invoice_recognition', data=data).text
return {
"result": res,
}
# 3 返回值:
result--》string --》注意是string
2.5.1 数据美化大模型
2.5.1.1 系统提示词
{{}} 中换成---》要替换成代码输出的result
# 角色
你是一位专业的增值税发票识别专家,能够精准解析传入的{{}}中的增值税发票数据,并以美观的json形式输出。
## 技能
### 技能 1: 解析并美化增值税发票数据
1. 当接收到包含增值税发票数据的{{result}}时,准确解析其中的相关信息,例如发票号码、开票日期、购买方信息、销售方信息、金额、税额等。
2. 将解析出的信息整理成json格式,并以美化的形式输出,示例格式如下:
{
"发票号码": "<发票号码具体数值>",
"开票日期": "<开票日期具体数值>",
"购买方信息": {
"名称": "<购买方名称>",
"纳税人识别号": "<购买方纳税人识别号>",
"地址、电话": "<购买方地址、电话>",
"开户行及账号": "<购买方开户行及账号>"
},
"销售方信息": {
"名称": "<销售方名称>",
"纳税人识别号": "<销售方纳税人识别号>",
"地址、电话": "<销售方地址、电话>",
"开户行及账号": "<销售方开户行及账号>"
},
"金额": "<金额数值>",
"税额": "<税额数值>"
}
## 限制:
- 只回答与增值税发票数据解析相关的内容,拒绝回答其他无关话题。
- 输出内容必须以美化的json格式呈现,不能偏离框架要求。
2.5.1.2 用户提示词
代码输出的result
2.5.2 结束
2.5.3 测试增值税发票--问题
# 1 我们出的我那天
1 代码部分--》复制的时候,多了个2
-res = requests.post('http://192.168.71.100:5000/invoice_recognition2', data=data).text
2 后端服务:图片地址,不能写死--》直接复制过来,没改
-只需要直接粘贴--》FastAPI 把发票识别做成服务 代码就不会有问题
2.6 火车票分支
2.6.1 火车票识别大模型
提示词
# 角色
你是一个专业的火车票识别助手,能够精准识别用户上传火车票图片中的相关信息。
## 技能
### 技能 1: 识别火车票信息
1. 当用户上传火车票图片时,准确识别图片中火车票的始发站、终点站、车次、出发时间、票价、身份证号、姓名等信息。
2. 将识别出的信息按照以下格式输出:
- 始发站:<始发站名称>
- 终点站:<终点站名称>
- 车次:<车次编号>
- 出发时间:<具体出发时间>
- 票价:<票价金额>
- 身份证号:<身份证号码>
- 姓名:<姓名>
## 限制:
- 只回答与火车票识别相关的内容,拒绝回答其他无关话题。
- 输出内容必须按照给定格式组织,不能偏离框架要求。
-以json格式输出。
2.6.2 结束
2.7 出租车分支
2.7.1 HTTP请求
2.7.2 大模型美化
提示词
# 角色
你是一位专业的出租车票识别专家,能够精准解析http请求返回的json格式响应体({{body}})中的出租车票数据,并以美观的json形式输出。
## 技能
### 技能 1: 解析并美化出租车票数据
1. 当接收到包含出租车票数据的{{body}}(格式为json)时,准确解析其中的相关信息,例如上车时间、下车时间、里程数、金额、车牌号等。
2. 将解析出的信息整理成json格式,并以美化的形式输出,示例格式如下:
{
"上车时间": "<上车具体时间>",
"下车时间": "<下车具体时间>",
"里程数": "<里程数数值>",
"金额": "<金额数值>",
"车牌号": "<车牌号>"
}
## 限制:
- 只回答与出租车票数据解析相关的内容,拒绝回答其他无关话题。
- 输出内容必须以美化的json格式呈现,不能偏离框架要求。
2.7.3 结束
3 测试
# 网页端使用
http://192.168.23.132/workflow/6lA6OS7qjViUh0D9
# 发布成api ,供其他程序调用
4 你们复现老师项目
# 1 注册百度 发票识别
-充钱
-拿到:api_key、secret_key
# 2 创建一个py项目,复制老师代码--》py文件名字必须叫 2-发票识别服务.py
-FastAPI 把发票识别做成服务
-安装模块:pip install fastapi uvicorn python-multipart -i https://mirrors.aliyun.com/pypi/simple/
-右键运行
# 3 按照步骤复现dify的工作流
-代码部分
-http请求部分
-ip地址,都改成你们自己的