当前位置: 首页 > news >正文

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

  • 一、 社区版Dify实现私有化混元视频效果
  • 二、为什么社区版Dify可以在对话框实现文生视频?
      • LLM+ComfyUI+混元视频 实现流程图(重点)
      • 1. 文生视频模型支持ComfyUI
      • 2. ComfyUI可以轻松导出API实现封装
      • 3. Dify 中可通过【代码运行】节点实现调用API
      • 4. Dify【直接回复节点】支持Markdown,可是轻易得到视频播放框
  • 三、Flask后端和【Dify 代码执行节点】代码和讲解
    • 1. Flask 后端代码
      • Flask后端的两个功能
    • 2. Dify 代码执行节点 代码
    • 3. Dify LLM节点 如何描述?
  • 四、Dify 安装和专栏的以往文章推荐

一、 社区版Dify实现私有化混元视频效果

在这里插入图片描述
在这里插入图片描述

二、为什么社区版Dify可以在对话框实现文生视频?

LLM+ComfyUI+混元视频 实现流程图(重点)

在这里插入图片描述
这个图就是我的Dify 实现LLM+ComfyUI+混元视频 的整个方案和思路,下面详细说说为什么可以这样做:(这部分可以结合我之前写的文章一起看,我会给出超链接)

1. 文生视频模型支持ComfyUI

其实文生视频的开源模型其实有很多,比如:Sora , Dynamicrafter,VideoCrafter, 混元视频, CogVideo 等等模型。
这些模型大部分都是支持ComfyUI,这里自己去找一找就好。本方法用的是 混元视频的ComfyUI

2. ComfyUI可以轻松导出API实现封装

这部分还不懂的强烈推荐看一下我前面写的 社区版Dify LLM+ComfyUI+代码执行 的方法,里面详细介绍了ComfyUI 的安装,以及调用的最基本的知识。
我这里简单点说就是 工作流其实就是一个JSON,可以通过网络请求实现你想生成的图。ComfyUI 就是一个(工作流)web 后台而已!

3. Dify 中可通过【代码运行】节点实现调用API

Dify 中安装了Sandbox ,支持运行python代码,既然可以跑代码,安装了requests库,那么也就是各种API都可以请求了,这也就是我为什么二次封装的原因,为了简化代码和过程,而不是直接请求ComfyUI。
但是,【代码执行节点】有总时间的约束限制(超时会报错),因为文生视频可能需要跑70~90 秒,但是Sandbox有代码运行时长限制 15S,通常会报timeout 错误!很简单,修改.env 配置文件里面的时间秒数限制即可。为此,可参考我的这一篇博客修改Dify Sandbox的一些配置:社区版Dify sandbox【Python代码执行】Run failed: error: timeout,if the sandbox service

4. Dify【直接回复节点】支持Markdown,可是轻易得到视频播放框

做过LLM开发的人都知道,LLM回复的前端是基于Markdown的,如果在对话框实现视频,安装整个格式输出即可,这就是我的【直接回复节点】的输出:

<video width="320" height="240" autoplay><source src="视频的网络地址" type="video/mp4">
</video>

三、Flask后端和【Dify 代码执行节点】代码和讲解

请先根据 混元视频ComfyUI 安装好模型文件,先保证你的文生视频在ComfyUI 中正常运行。

1. Flask 后端代码

Flask后端的两个功能

第一个:接收 Dify 【代码执行节点】发送来的 文生图Prompt 来修改工作流JSON 文件。
第二个:发送文生图的工作流JSON(给ComfyUI来文生视频),然后等待生成的结果JSON(ComfyUI 告诉你,刚刚的那个请求完成了,生成的文件命名和路径等信息),解析然后得到视频链接(返回给【Dify 代码执行节点】)。

好了:结合我的注释来看Flask代码:

# -*- coding: utf-8 -*-
from flask import Flask, request, jsonify
import websocket
import uuid
import json
import urllib.request
import urllib.parse
import randomimport string
import datetimeapp = Flask(__name__)# 设置服务器地址
SERVER_ADDRESS = "你的ComfyUI服务地址:8188"
CLIENT_ID = str(uuid.uuid4())def queue_prompt(prompt):try:payload = {"prompt": prompt, "client_id": CLIENT_ID}data = json.dumps(payload).encode('utf-8')url = f"http://{SERVER_ADDRESS}/prompt"req = urllib.request.Request(url, data=data)response = urllib.request.urlopen(req)return json.loads(response.read())except Exception as e:print(f"Error in queue_prompt: {e}")return Nonedef get_image(filename, subfolder, folder_type):try:params = urllib.parse.urlencode({"filename": filename, "subfolder": subfolder, "type": folder_type})url = f"http://{SERVER_ADDRESS}/view?{params}"return urlexcept Exception as e:print(f"Error in get_image: {e}")return Nonedef get_history(prompt_id):try:url = f"http://{SERVER_ADDRESS}/history/{prompt_id}"with urllib.request.urlopen(url) as response:return json.loads(response.read())except Exception as e:print(f"Error in get_history: {e}")return None# 等待程序生成,生成后会返回一个JSON ,读取生成的视频地址文件名
def get_images(ws, prompt):try:prompt_response = queue_prompt(prompt)if not prompt_response:return Noneprompt_id = prompt_response['prompt_id']# 等待生成过程完成while True:out = ws.recv()if isinstance(out, str):message = json.loads(out)if message.get('type') == 'executing':data = message['data']if data.get('node') is None and data.get('prompt_id') == prompt_id:break# 获取生成历史记录history = get_history(prompt_id)print(history)if history and prompt_id in history:for node_id, node_output in history[prompt_id]['outputs'].items():print(node_id,node_output)if 'gifs' in node_output:for image in node_output['gifs']:return get_image(image['filename'], image['subfolder'], image['type'])except Exception as e:print(f"Error in get_images: {e}")return None# 在API的基础上再次封装修改 的内容,通常是Prompt,可灵活自定义设计
def update_prompt_from_file(filepath, text_prompt, noise_seed):"""从文件加载 JSON 并更新提示信息。参数:filepath (str): JSON 文件路径。text_prompt (str): 新的文本提示。noise_seed (int): 随机种子值。返回:dict: 更新后的 JSON 数据。"""try:with open(filepath, "r", encoding="utf-8") as f:prompt = json.load(f)prompt["25"]["inputs"]["noise_seed"] = noise_seedprompt["44"]["inputs"]["text"] = text_promptreturn promptexcept Exception as e:print(f"Error in update_prompt_from_file: {e}")return None# 生成随机数
def generate_random_15_digit_number():return random.randint(10**14, 10**15 - 1)# Flask 路由
@app.route('/generate_videos', methods=['POST'])
def generate_videos():data = request.jsontext_prompt = data.get('text_prompt')print("999")if not text_prompt:return jsonify({"error": "text_prompt is required"}), 400noise_seed = generate_random_15_digit_number()# 更新提示prompt_json = update_prompt_from_file(json_filepath, text_prompt, noise_seed,)if not prompt_json:return jsonify({"error": "Failed to update prompt"}), 500try:ws = websocket.WebSocket()ws.connect(f"ws://{SERVER_ADDRESS}/ws?clientId={CLIENT_ID}")url = get_images(ws, prompt_json)print(url)if url:return jsonify({"image_url": url})else:return jsonify({"error": "Failed to generate image"}), 500except Exception as e:print(f"Error in WebSocket connection: {e}")return jsonify({"error": "WebSocket connection failed"}), 500finally:ws.close()if __name__ == '__main__':json_filepath = "hunyuan_00012.json" # 你的混元视频APIapp.run(host='0.0.0.0', port=3083)

发送的JSON 就是工作流,返回的呢?如果好奇可以看:

{"8efd022e-fa4c-454d-b885-9aed9e3435a6": {"prompt": [40,"8efd022e-fa4c-454d-b885-9aed9e3435a6",{"10": {"inputs": {"vae_name": "hunyuan_video_vae_bf16.safetensors"},"class_type": "VAELoader","_meta": {"title": "Load VAE"}},"11": {"inputs": {"clip_name1": "clip_l.safetensors","clip_name2": "llava_llama3_fp8_scaled.safetensors","type": "hunyuan_video"},"class_type": "DualCLIPLoader","_meta": {"title": "DualCLIPLoader"}},// ... 其他节点配置"78": {"inputs": {"frame_rate": 35.0,"loop_count": 0,"filename_prefix": "hunyuan","format": "video/h265-mp4","pix_fmt": "yuv420p10le","crf": 22,"save_metadata": true,"pingpong": false,"save_output": true,"images": ["73", 0]},"class_type": "VHS_VideoCombine","_meta": {"title": "Video Combine 🎥🅥🅗🅢"}}},{"client_id": "7e3ec27b-c922-442b-96e6-d8afa853bd70"},["78"]],"outputs": {"78": {"gifs": [{"filename": "hunyuan_00032.mp4","subfolder": "","type": "output","format": "video/h265-mp4","frame_rate": 35.0,"workflow": "hunyuan_00032.png","fullpath": "/**********/ComfyUI/ComfyUI-master-main/output/hunyuan_00032.mp4"}]}},"status": {"status_str": "success","completed": true,"messages": [["execution_start",{"prompt_id": "8efd022e-fa4c-454d-b885-9aed9e3435a6","timestamp": 1737096231965}],["execution_cached",{"nodes": ["10", "11", "12", "16", "17", "45", "67"],"prompt_id": "8efd022e-fa4c-454d-b885-9aed9e3435a6","timestamp": 1737096231995}],["execution_success",{"prompt_id": "8efd022e-fa4c-454d-b885-9aed9e3435a6","timestamp": 1737096309647}]]},"meta": {"78": {"node_id": "78","display_node": "78","parent_node": null,"real_node_id": "78"}}}
}

通过这个返回的JSON地址可以得到一个返回的视频链接:

http://你的ComfyUI地址:8188/view?filename=hunyuan_00061.mp4&subfolder=&type=output

这个地址是Flask 后台返回给 【Dify 代码执行节点】,随后这个【Dify 直接回复节点】按照这样:

<video width="320" height="240" autoplay><source src="http://你的ComfyUI地址:8188/view?filename=hunyuan_00061.mp4&subfolder=&type=output" type="video/mp4">
</video>

即可显示视频了
在这里插入图片描述

2. Dify 代码执行节点 代码

在这里插入图片描述

代码很简单:

import requests
import json
from typing import Dictdef main(prompt) -> Dict[str, str]:# 服务器地址url = "http://你的Flask后端地址:3083/generate_videos"# 请求数据data = {"text_prompt": prompt,}# 发送 POST 请求并传递 JSON 数据response = requests.post(url, json=data)if response.status_code == 200:result = eval(response.text)["image_url"]return {'result': result}else:return {'error': 'Request failed with status code {}'.format(response.status_code)}

3. Dify LLM节点 如何描述?

这部分其实很灵活,你可以用很多种大模型,我是用deepseek,当然也可以用Ollama本地,等等。我在之前的文章也有写过。
这里就是转换一下英文的文生图Prompt即可:
在这里插入图片描述

四、Dify 安装和专栏的以往文章推荐

  1. Dify安装时会遇到的网络问题,已成功安装Dify教程
  2. Dify 部署LLM 可以参考这里,Dify实现Ollama3.2-vision多模态聊天
  3. 社区版Dify +ComfyUI 实现 Flux 文生图
  4. 并且欢迎关注我的 社区版 Dify 开发专栏

相关文章:

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频&#xff1f;LLMComfyUI混元视频 实现流程图&#xff08;重点&#xff09;1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…...

QT调用OpenSceneGraph

OSG和osgQt编译教程&#xff0c;实测通过 一、下载OpenSceneGraph OpenSceneGraphhttps://github.com/openscenegraph/OpenSceneGraph 二、使用CMAKE编译OpenSceneGraph 1.打开cmake&#xff0c;配置源代码目录 2. CMAKE_INSTALL_PREFIX设置为install文件夹&#xff0c;生…...

Qt基础项目篇——Qt版Word字处理软件

一、核心功能 本软件为多文档型程序&#xff0c;界面是标准的 Windows 主从窗口 拥有&#xff1a;主菜单、工具栏、文档显示区 和 状态栏。 所要实现的东西&#xff0c;均在下图了。 开发该软件&#xff0c;主要分为下面三个阶段 1&#xff09;界面设计开发 多窗口 MDI 程序…...

【Postgres_Python】使用python脚本批量创建和导入多个PG数据库

之前批量创建和导入数据库分为2个python脚本进行&#xff0c;现整合优化代码合并为一个python脚本&#xff0c;可同步实现数据库的创建和数据导入。之前的文章链接&#xff1a; 【Postgres_Python】使用python脚本批量创建PG数据库 【Postgres_Python】使用python脚本将多个.S…...

消息队列篇--原理篇--RabbitMQ和Kafka对比分析

RabbitMQ和Kafka是两种非常流行的消息队列系统&#xff0c;但它们的设计哲学、架构特点和适用场景存在显著差异。对比如下。 1、架构设计 RabbitMQ&#xff1a; 基AMQP协议&#xff1a;RabbitMQ是基于AMQP&#xff08;高级消息队列协议&#xff09;构建的&#xff0c;支持多…...

俄语画外音的特点

随着全球媒体消费的增加&#xff0c;语音服务呈指数级增长。作为视听翻译和本地化的一个关键方面&#xff0c;画外音在确保来自不同语言和文化背景的观众能够以一种真实和可访问的方式参与内容方面发挥着重要作用。说到俄语&#xff0c;画外音有其独特的特点、挑战和复杂性&…...

【机器学习实战中阶】音乐流派分类-自动化分类不同音乐风格

音乐流派分类 – 自动化分类不同音乐风格 在本教程中,我们将开发一个深度学习项目,用于自动化地从音频文件中分类不同的音乐流派。我们将使用音频文件的频率域和时间域低级特征来分类这些音频文件。 对于这个项目,我们需要一个具有相似大小和相似频率范围的音频曲目数据集…...

Keil5 IDE使用笔记

1 Keil生成bin文件 $K\ARM\ARMCLANG\bin\fromelf.exe --bin --outputL/L.bin !L $K: 表示 Keil 5的安装路径 L: 表示 工程名 !L: 表示 工程名.arf 后缀的文件 可根据实际需要修改 --output 的值调整生成的bin文件的存放路径。 2 下载程序报错 No ST-LINK detected Error: Fla…...

自动化办公|使用Python重命名并移动文件到对应文件夹

在日常的文件管理和处理过程中&#xff0c;我们可能会遇到需要将文件整理到不同文件夹中的需求。例如&#xff0c;我们有一个包含多个文件的目录&#xff0c;文件名的首字符表示文件应该存放在哪个文件夹中。我们可以使用Python脚本来自动完成这个任务&#xff0c;实现文件的分…...

【全栈】SprintBoot+vue3迷你商城(5)

【全栈】SprintBootvue3迷你商城&#xff08;5&#xff09; 上一期我们基本完成了与用户相关的接口&#xff0c;而这些接口都是用户才能干的事情&#xff0c;如果你没登录&#xff0c;那么这些接口功能你都不能实现。 那么如何做到这一步呢&#xff1f; 1.Token 作用 身份…...

Java 并发编程:Java 中的乐观锁与 CAS

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 025 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...

模拟飞行入坑(五) P3D 多通道视角配置 viewgroup

背景&#xff1a; P3D进行多个屏幕显示的时候&#xff0c;如果使用英伟达自带的屏幕融合成一个屏&#xff0c;或者使用P3D单独拉伸窗口&#xff0c;会使得P3D的画面被整体拉伸&#xff0c;又或者,当使用Multichannel进行多个设备联动时&#xff0c;视角同步组合需要配置&#…...

react中hooks之 React 19 新 Hooks useActionState useFormStatus用法总结

React 19 新 Hooks 使用指南: useActionState & useFormStatus 目录 useActionStateuseFormStatus最佳实践 useActionState 概述 useActionState 是 React 19 引入的新 Hook&#xff0c;用于处理表单 action 的状态更新。它允许你基于表单 action 的结果来更新组件状态…...

为AI聊天工具添加一个知识系统 之48 蒙板程序设计(第二版):Respect九宫格【社会形态:治理】

本文要点 1、词汇表Vocabulary &#xff08;普通名词&#xff09; 1) 三组词&#xff08;数据库支持的三个数字散列&#xff09;&#xff1a; 工作&#xff0c;工件&#xff0c;工具。论题&#xff0c;主题词&#xff0c;关键字。口号&#xff0c;符号&#xff0c;编号。 2…...

靠右行驶数学建模分析(2014MCM美赛A题)

笔记 题目 要求分析&#xff1a; 比较规则的性能&#xff0c;分为light和heavy两种情况&#xff0c;性能指的是 a.流量与安全 b. 速度限制等分析左侧驾驶分析智能系统 论文 参考论文 两类规则分析 靠右行驶&#xff08;第一条&#xff09;2. 无限制&#xff08;去掉了第一条…...

6.5、密集波分复用系统(DWDM)/OTN

图中从左到右分为多个部分&#xff0c;分别代表了信号的输入、传输和输出过程。 左侧是客户侧&#xff0c;有普通接口和彩色接口&#xff0c;分别连接到光转发单元&#xff08;OTU&#xff09;。 中间部分是传输线路&#xff0c;包含多个光放大器&#xff08;OBA、OLA、OPA&…...

Unity3D基于Unity整合BEPUphysicsint物理引擎实战详解

引言 Unity3D是一款流行的游戏引擎&#xff0c;提供了丰富的功能和工具&#xff0c;使开发者能够轻松创建各种类型的游戏。其中&#xff0c;帧同步技术是游戏开发中至关重要的一环&#xff0c;它能确保多个玩家在同一时间内看到的游戏状态是一致的。BEPUphysicsint是一个基于U…...

《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》

在鸿蒙Next的多设备协同场景中&#xff0c;确保人工智能模型轻量化后功能的一致性是一项极具挑战性但又至关重要的任务。以下是一些关键的方法和策略。 统一的模型架构与标准 采用标准化框架&#xff1a;选择如TensorFlow Lite、PyTorch Mobile等在鸿蒙Next上适配良好的轻量化…...

微服务知识——4大主流微服务架构方案

文章目录 1、微服务聚合模式2、微服务共享模式3、微服务代理模式4、微服务异步消息模式 微服务是大型架构的必经之路&#xff0c;也是大厂重点考察对象&#xff0c;下面我就重点详解4大主流微服务架构方案。 1、微服务聚合模式 微服务聚合设计模式&#xff0c;解决了如何从多个…...

Java 方法重写

目录 一、什么是方法重写&#xff0c;为什么需要它 二、方法重写的规则 三、方法重写的实际应用场景 四、方法重写与重载的区别 五、总结 在 Java 编程的精彩世界里&#xff0c;方法重写是一项极为重要且实用的特性&#xff0c;它犹如一把神奇的钥匙&#xff0c;为我们开启…...

华为E9000刀箱服务器监控指标解读

美信监控易内置了数千种常见设备监测器&#xff0c;能够监测超过20万项指标。这些指标涵盖了从硬件设备到软件系统&#xff0c;从网络性能到安全状态等各个方面。如下基于美信监控易——IT基础监控模块&#xff0c;对华为E9000刀箱服务器部分监控指标进行解读。 一、华为E9000…...

正则表达式基础与应用

什么是正则表达式&#xff1f; 正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种用于描述字符串结构的语法规则。它定义了一个搜索模式&#xff0c;可以用来匹配、替换或提取文本中的子串。正则表达式广泛应用于文本处理、数据验证、查找和替…...

微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。

1&#xff0c;可能是原因是你使用了scroll-view的标签&#xff0c;用onReachBottom触发加载事件。这两个是有冲突的。没办法一起使用。如果页面的样式是滚动的是无法去触发页面的onReachBottom的函数的。因此&#xff0c;你使用overflow:auto.来使用页面的某些元素滚动&#xf…...

9. 神经网络(一.神经元模型)

首先&#xff0c;先看一个简化的生物神经元结构&#xff1a; 生物神经元有多种类型&#xff0c;内部也有复杂的结构&#xff0c;但是可以把单个神经元简化为3部分组成&#xff1a; 树突&#xff1a;一个神经元往往有多个树突&#xff0c;用于接收传入的信息。轴突&#xff1a;…...

Mysql安装,mysql-installer-community-8.0.41.0

“windowR"键弹出运行框&#xff0c;输入”cmd"进入window命令提示符&#xff0c;输入“mysql -uroot -p"按下回车&#xff0c;再输入密码&#xff0c;按下回车&#xff0c;出现下面界面则是配置成功。 默认会在 C:\Program Files\MySQL\MySQL Server 8.0\bin …...

吴恩达深度学习——神经网络介绍

文章内容来自BV11H4y1F7uH&#xff0c;仅为个人学习所用。 文章目录 什么是神经网络引入神经网络神经元激活函数ReLU隐藏单元 用神经网络进行监督学习监督学习与无监督学习举例 什么是神经网络 引入 已经有六个房子的数据集&#xff0c;横轴为房子大小&#xff0c;纵轴为房子…...

【SpringBoot】SpringBoot中分页插件(PageHelper)的使用

目录 1.分页概念 2.原生写法 3.PageHelper插件分页查询 3.1 介绍 3.2?使用 3.3 Page对象和PageInf对象 1.分页概念 用户查询的数据不可能一次性全部展示给用户&#xff08;如果用户有一万条数据呢&#xff09;&#xff0c;而是分页展示给用户&#xff0c;这就是分页查询…...

JavaScript DOM 操作与事件处理

Hi&#xff0c;我是布兰妮甜 &#xff01;在现代Web开发中&#xff0c;JavaScript不仅是用来增强用户体验的工具&#xff0c;它更是创建动态、交互式网页的关键。通过操作文档对象模型&#xff08;DOM&#xff09;和处理用户事件&#xff0c;开发者能够构建出响应迅速且功能丰富…...

rstrip 方法是 Python 字符串的一个内置方法,用于 删除字符串右边(末尾)的指定字符

rstrip 方法是 Python 字符串的一个内置方法&#xff0c;用于 删除字符串右边&#xff08;末尾&#xff09;的指定字符。 语法&#xff1a; string.rstrip([chars])string&#xff1a;原始字符串。chars&#xff1a;可选参数&#xff0c;指定要删除的字符。默认为 None&#…...

【Elasticsearch】腾讯云安装Elasticsearch

Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么&#xff1f;IK分词器有几种模式&#xff1f;IK分词器如何拓展词条&#xff1f;如何停用词条&#xff1f; 认识Elasticsearch Elasticsearch的官方网站如下 Elasticsearch官网 Ela…...

rsync结合inotify实现文件实时同步

rsync 1.复制工具 本地复制 远程复制 cp dd 跨主机传递文件 rz sz ftp scp rsync nfs samba drdb 2.rsync作用 实现文件的备份&#xff0c;可以是当前主机&#xff0c;也可以是远程主机&#xff1b;可以完全备份&#xff0c;也可以是增量备份 2.1功能 类似于cp的复制功能…...

浅谈 PID 控制算法

PID 控制算法概念 在我们的生活中可能大家都没有听说过 PID 控制算法&#xff0c;但它可以说是无处不在&#xff0c;小到空调的温度控制、无人机的精准悬停、机器人运作系统&#xff0c;大到飞机和火箭的飞行姿态控制都有 PID 的身影。 PID 控制算法&#xff0c;即比例 - 积分…...

react中hooks之useId用法总结以及与useRef用法区别

React useId Hook 使用指南 概述 useId 是 React 18 引入的新 Hook&#xff0c;用于生成唯一的 ID&#xff0c;主要用于可访问性&#xff08;accessibility&#xff09;属性。它在服务端和客户端渲染时都能保持一致性。 useId vs useRef useId: 生成稳定的唯一标识符&#…...

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…...

AutoGen入门——快速实现多角色、多用户、多智能体对话系统

1.前言 如https://github.com/microsoft/autogen所述&#xff0c;autogen是一多智能体的框架&#xff0c;属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用&#xff0c;以满足我们各种业务场景。 本文将以几个示例场景&#xff0c;使用AutoGen快速构建出…...

.NET Framework

.NET Framework 是微软推出的一个软件开发平台&#xff0c;主要用于构建和运行 Windows 应用程序。它是 .NET 生态系统的早期版本&#xff0c;专注于 Windows 平台&#xff0c;并提供了丰富的类库和运行时环境。 注意事项 跨平台限制&#xff1a;.NET Framework 主要适用于 W…...

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧&#xff0c;主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口&#xff0c;可以在一维数组或字符串上维护一个固定或可变长度的窗口&#xff0c;逐步移动窗口&#xff0c;避免重复计算&#xff0c;从而提升效率。常…...

DuckDB:Golang操作DuckDB实战案例

DuckDB是一个嵌入式SQL数据库引擎。它与众所周知的SQLite非常相似&#xff0c;但它是为olap风格的工作负载设计的。DuckDB支持各种数据类型和SQL特性。凭借其在以内存为中心的环境中处理高速分析的能力&#xff0c;它迅速受到数据科学家和分析师的欢迎。在这篇博文中&#xff0…...

C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外)

👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… ​💫签名:面朝大海,春暖花开! C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外) 引言原理简介点集数据(含像素坐标、世界坐标及求解后的变换矩阵)配…...

手机怎么远程操控电脑?

远程看看是一款免费使用的远程控制软件&#xff0c;兼容 Windows、iOS 和 Android 系统&#xff0c;用户可以通过电脑或移动设备轻松远程控制电脑。不仅如此&#xff0c;远程看看还提供了文件传输、在线聊天和隐私屏等实用功能。如果您需要在远程操作时隐藏被控电脑的操作界面&…...

【Golang/gRPC/Nacos】在golang中将gRPC和Nacos结合使用

Nacos与gRPC 前言 关于这部分&#xff0c;前段时间我在看文档以及视频教程的时候&#xff0c;怎么都想不明白&#xff0c;到底为什么要用gRPC是什么&#xff0c;他在项目中应该充当什么样的角色&#xff1f;Nacos又是如何和他结合的&#xff1f; 于是我就决定去看看一些小项…...

数据库-多表关系

项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构。由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系。 多表关系&#xff1a; 一对多(多对一) 一对一 多对多 多表关系 一对…...

回归算法、聚类算法、决策树、随机森林、神经网络

这也太全了&#xff01;回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法一口气学完&#xff01;_哔哩哔哩_bilibili 【线性回归、代价函数、损失函数】动画讲解_哔哩哔哩_bilibili 14分钟详解所有机器学习算法&#xff1a;…...

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&am…...

第17章:Python TDD回顾与总结货币类开发

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

7、数组知识点汇总

一、 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤数据结构&#xff1a;将数据按照某种特定的结构来存储设计良好的数据结构会导致良好的算法。ArrayList、LinkedList 数组是最简单的数据结构。 1、数组&#xff1a; 数组&#xff1a;存放同一种类型…...

蓝桥杯c/c++需要掌握的基础语法总结

1、#include<bits/stdc.h> 万能头文件 2、using namespace std&#xff1b; 3、输出 cout<<""<<end1; (换行) printf(""); 4、int x3&#xff1b;整数 double d3.14&#xff1b;小数 char ch’A‘;字符 char s[]"Hell…...

学习第七十四行

qt调用信号与槽机制&#xff1a; MOC查找头文件中的signal与slots&#xff0c;标记出信号槽。将信号槽信息储存到类静态变量staticMetaObject中&#xff0c;并按照声明的顺序进行存放&#xff0c;建立索引。connect链接&#xff0c;将信号槽的索引信息放到一个双向链表中&…...

《罗宾逊-旅途VR》Build2108907官方学习版

《罗宾逊-旅途VR》官方版 https://pan.xunlei.com/s/VODiY5gn_fNxKREdVRdwVboCA1?pwdsh3f# 从第一人称的角度进行探索&#xff0c;玩家将遇到一系列恐龙和生物&#xff0c;这些恐龙和生物会对它们在泰森三世生态系统中的存在做出反应。强调与周围环境的互动&#xff0c;鼓励玩…...

详解共享WiFi小程序怎么弄!

在数字化时代&#xff0c;共享WiFi项目​正逐渐成为公共场所的新标配&#xff0c;它不仅为用户提供了便捷的上网方式&#xff0c;还为商家带来了额外的收入来源。那么共享wifi怎么弄&#xff0c;如何搭建并运营一个成功的共享WiFi项目呢&#xff1f; 共享WiFi项目通过在公共场所…...