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

image-20250604181217609

image-20250604181049955

image-20250604181146430

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

image-20250604181049955

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服务

image-20250817211936514

image-20250817212908093

image-20250817213111926

# 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

image-20250817215336881

image-20250817215827230

image-20250817215955886

image-20250817220127958

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 在安装过程中,遇到问题很正常
	-按照老师讲的一步操作----》遇到问题--》找群中答疑老是--》远程给解决

image-20250605004418920

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

image-20250817222048864

image-20250817222646219

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安装

image-20250821214921264

image-20250821202707892

image-20250604191302011

image-20250604191316500

image-20250604191347791

image-20250821202903214

# 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

image-20250604192131940

image-20250604192152578

image-20250604192204833

image-20250604192304982

image-20250604192349363

image-20250604192409903

image-20250604192428513

image-20250604192440587

image-20250604192452403

image-20250604192501369

image-20250604192520762

image-20250604192531880

image-20250604192544000

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

image-20250821204641575

1.1.13 安装系统

image-20250604222153998

image-20250604222444172

image-20250604222938208

image-20250604223008524

image-20250604223045658

image-20250604225702366

image-20250604225758849

image-20250604223103241

image-20250604224320448

image-20250821205523344

image-20250821205849771

image-20250821205912561

1.2 远程链接工具FinalShell使用

可以远程链接Linux的一个软件

# 0 介绍 
FinalShell 是一款免费的国产一体化服务器、网络管理软件,支持 Windows、macOS、Linux 等多个操作系统。它集成了多种功能,是开发者和运维人员常用的工具之一


# 1 官网下载,根据自己电脑平台
https://www.hostbuf.com/t/988.html
    
# 2 安装

# 3 双击打开


# 4 配置远程链接(链接服务器)

image-20250604193009996

image-20250604193019141

image-20250604193027653

image-20250605154637073

image-20250605154711881

image-20250821210504486

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 输入管理员账号登录即可

image-20250821211850138

image-20250605155932215

image-20250605160358375

image-20250605003006505

image-20250605004403539

image-20250605004418920

image-20250605004451386

image-20250821215428878

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/ 能看到在运行

image-20250608194544772

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/

image-20250821221340285

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: 陪伴聊天
可以围绕各种轻松愉快的话题,如兴趣爱好、梦想等,与用户展开聊天,让用户在交流中感受到陪伴。

## 限制:
- 主要围绕情感交流和陪伴展开对话,拒绝回答与情感陪伴无关的话题。
- 回复内容需符合温柔、善解人意的人设,语言风格要亲切自然。
- 所输出的内容必须清晰明了,符合正常交流的表达习惯。 

image-20250821223112711

image-20250821223207430

image-20250821223517896

补充

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功能”

image-20250608152631400

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 重启计算机。

image-20250608151526224

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系统都是最新版本,软件更新会解决兼容性问题。

image-20250608164048907

image-20250608163827887

image-20250608164011100

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盘 

image-20250608160228893image-20250608162333182

image-20250608162612991

image-20250608162837462

image-20250608162856581

image-20250608162921570

image-20250608162944071

image-20250608163023304

image-20250608163355033

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

image-20250608175432209

e3fa0d8baec99e3857d81d91359e5b01

c0a0877ad5eaa68564910084fef6449f

f7e0e5d42c3d0c2a7fc5d35ec4e3008d

5b3008e774ce01567418b114d80ca26e

bca6276a0b3538875a8c7cfffc365562

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 端口

image-20250824201048562

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

image-20250824201445598

image-20250824202414666

image-20250824202559737

对接本地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 对接--如下图

image-20250824204551068

image-20250824204751521

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,所有人都能访问


image-20250824210358290

安装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

image-20250824215440565

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、数据库)。
  - 触发器驱动:基于时间、事件(如用户提交表单)自动启动。
  - 多角色协作:支持不同用户角色参与流程(如审批、执行)。
- 适用场景:企业流程自动化(如工单处理)、数据同步、营销自动化。

image-20250824222110739

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 输入

image-20250828201608787

1.2.2 截图

image-20250828201802489

1.3 图像识别大模型

# 1 我使用的火山方舟

# 2 提示词

# 角色
你是一位专业的汽车识别专家,擅长通过用户上传的汽车图片精准识别汽车型号,并详细输出相关信息。

## 技能
### 技能 1: 识别汽车型号
1. 当用户上传汽车图片时,运用专业知识和相关工具,准确识别汽车的型号。
2. 详细输出所识别汽车型号的具体信息。
===回复示例===
   - 🚗 汽车品牌: <汽车品牌名称>
   - 📌 汽车型号: <具体型号>
   - 💡 型号特点: <对该型号汽车主要特点进行简要介绍>
===示例结束===

## 限制:
- 只回答与汽车型号识别相关的内容,拒绝回答无关话题。
- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求。
- 型号特点介绍部分不能超过 150 字。
- 请使用专业、准确的语言进行描述。 



# 3  开启视觉,接受用户输入的image变量

image-20250828202029635

1.4 结束

image-20250828202117498

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

image-20250828203045675

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 工作流原理图

image-20250828205029827

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文档

image-20250828210444876

image-20250828210835663

image-20250828210913055

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)

image-20250828215333036

2.3 工作流开始节点

#1 file 必传,本地上传文件
	-票据图片
	
#2 bill_type:票据种类,用户下拉选择

image-20250828220045269

image-20250828220223224

image-20250828220236820

2.4 条件分支

# 不同票据类型,走不同的分支
	-如下图

image-20250828220434571

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

image-20250828220810371

image-20250828221158330

2.5.1 数据美化大模型

2.5.1.1 系统提示词

{{}} 中换成---》要替换成代码输出的result

# 角色
你是一位专业的增值税发票识别专家,能够精准解析传入的{{}}中的增值税发票数据,并以美观的json形式输出。

## 技能
### 技能 1: 解析并美化增值税发票数据
1. 当接收到包含增值税发票数据的{{result}}时,准确解析其中的相关信息,例如发票号码、开票日期、购买方信息、销售方信息、金额、税额等。
2. 将解析出的信息整理成json格式,并以美化的形式输出,示例格式如下:
{
    "发票号码": "<发票号码具体数值>",
    "开票日期": "<开票日期具体数值>",
    "购买方信息": {
        "名称": "<购买方名称>",
        "纳税人识别号": "<购买方纳税人识别号>",
        "地址、电话": "<购买方地址、电话>",
        "开户行及账号": "<购买方开户行及账号>"
    },
    "销售方信息": {
        "名称": "<销售方名称>",
        "纳税人识别号": "<销售方纳税人识别号>",
        "地址、电话": "<销售方地址、电话>",
        "开户行及账号": "<销售方开户行及账号>"
    },
    "金额": "<金额数值>",
    "税额": "<税额数值>"
}

## 限制:
- 只回答与增值税发票数据解析相关的内容,拒绝回答其他无关话题。
- 输出内容必须以美化的json格式呈现,不能偏离框架要求。

2.5.1.2 用户提示词

代码输出的result

image-20250828221448636

2.5.2 结束

image-20250828221619655

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格式输出。

image-20250828222522140

2.6.2 结束

image-20250828222620454

2.7 出租车分支

2.7.1 HTTP请求

image-20250828223125123

2.7.2 大模型美化

提示词

# 角色
你是一位专业的出租车票识别专家,能够精准解析http请求返回的json格式响应体({{body}})中的出租车票数据,并以美观的json形式输出。

## 技能
### 技能 1: 解析并美化出租车票数据
1. 当接收到包含出租车票数据的{{body}}(格式为json)时,准确解析其中的相关信息,例如上车时间、下车时间、里程数、金额、车牌号等。
2. 将解析出的信息整理成json格式,并以美化的形式输出,示例格式如下:
{
    "上车时间": "<上车具体时间>",
    "下车时间": "<下车具体时间>",
    "里程数": "<里程数数值>",
    "金额": "<金额数值>",
    "车牌号": "<车牌号>"
}

## 限制:
- 只回答与出租车票数据解析相关的内容,拒绝回答其他无关话题。
- 输出内容必须以美化的json格式呈现,不能偏离框架要求。

image-20250828223444377

2.7.3 结束

image-20250828223459370

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地址,都改成你们自己的
posted @ 2025-08-31 09:53  凫弥  阅读(13)  评论(0)    收藏  举报