From f508f64a86f15e30c166801b7010fcce5c80a8fb Mon Sep 17 00:00:00 2001 From: "kyj@bowong.ai" Date: Thu, 10 Jul 2025 16:24:36 +0800 Subject: [PATCH] =?UTF-8?q?PERF=20=E6=B7=BB=E5=8A=A0config=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 177 +++++++++++++++++++++++++++++++++++++++++++++ img.png | Bin 16317 -> 0 bytes nodes/llm_nodes.py | 1 - readme.md | 5 -- 4 files changed, 177 insertions(+), 6 deletions(-) create mode 100644 Readme.md delete mode 100644 img.png delete mode 100644 readme.md diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..195e099 --- /dev/null +++ b/Readme.md @@ -0,0 +1,177 @@ +# ComfyUI-CustomNode 项目文档 + +## 一、项目概述 +ComfyUI-CustomNode 是一个为 ComfyUI 定制的自定义节点集合项目,提供了丰富的功能节点,涵盖文本处理、图像和视频处理、LLM 调用、对象存储操作等多个领域,方便用户在 ComfyUI 中进行多样化的任务处理。 + +**本地使用请下载[config.yaml](https://console.cloud.tencent.com/cos/bucket?type=object&tab=objectDetail&bucket=sucai-1324682537&path=%252Fconfig.yaml®ion=ap-shanghai)到custom_nodes/ComfyUI-CustomNode目录** +## 二、项目结构 +``` +ComfyUI-CustomNode/ +├── download/ # 下载文件目录 +├── ext/ # 扩展文件目录 +│ ├── pyproject.toml # 项目构建和依赖配置 +│ ├── comfyui_modal_deploy.py # Comfy批量服务器部署脚本 +│ └── nodes_bfl.py # 用于替换comfy内置api节点的代码 +├── model/ # 模型目录 +├── nodes/ # 节点代码目录 +│ ├── image_face_nodes.py # 面部处理节点 +│ ├── image_gesture_nodes.py # 姿态处理节点 +│ ├── image_nodes.py # 图像节点 +│ ├── llm_nodes.py # LLM 调用节点 +│ ├── object_storage_nodes.py # 对象存储节点 +│ ├── text_nodes.py # 文本处理节点 +│ ├── util_nodes.py # 工具节点 +│ ├── video_lipsync_nodes.py # 视频口型同步节点 +│ └── video_nodes.py # 视频处理节点 +├── utils/ # 工具函数目录 +│ ├── model_module.py # 模型定义 +│ ├── model_utils.py # 模型工具 +│ ├── face_occu_detect.py # 面部遮挡识别工具 +│ └── task_table.py # Task表定义--与DB持久化节点合用 +├── __init__.py # 定义节点映射 +├── .gitignore # Git 忽略文件配置 +├── install.sh # Linux 安装脚本 +├── install.bat # Windows 安装脚本 +├── embedded_install.bat # 嵌入式 Windows 安装脚本 +├── Readme.md # 项目文档 +└── requirements.txt # 项目依赖文件 +``` + +## 三、用户手册 + +### 1. 环境准备 +确保你已经安装了 Python 3.10 或更高版本。 +```bash +source venv/bin/activate # 对于 Windows 用户使用 `venv\Scripts\activate` +pip install -r requirements.txt +``` + +### 2. 运行项目 +将项目文件夹放置在 ComfyUI 的 `custom_nodes` 目录下,启动 ComfyUI 即可在节点列表中看到自定义节点。 + +### 3. 节点使用 +在 ComfyUI 界面中,根据需要选择相应的节点,配置节点的输入参数,然后连接节点并运行工作流。 + +## 四、节点介绍 + +### 1. 文本处理节点 +- **LoadTextLocal**:从本地文件读取文本。 + - **输入**:根目录、文件名、编码格式 + - **输出**:文本字符串 + - **用途**:读取本地文本文件内容 +- **LoadTextOnline**:从在线文件读取文本。 + - **输入**:文件路径、编码格式 + - **输出**:文本字符串 + - **用途**:读取在线文本文件内容 +- **StringEmptyJudgement**:判断字符串是否为空。 + - **输入**:字符串 + - **输出**:布尔值(是否为空) + - **用途**:检查字符串是否为空 +- **RandomLineSelector**:从多行文本中随机选择一行。 + - **输入**:多行文本、随机种子 + - **输出**:随机选择的一行文本 + - **用途**:随机选取文本中的一行 + +### 2. LLM 调用节点 +- **LLMChat**:调用 LLM 进行聊天。 + - **输入**:LLM 提供商、提示词、温度、最大令牌数、超时时间 + - **输出**:LLM 输出结果 + - **用途**:与 LLM 进行文本交互 +- **LLMChatMultiModalImageUpload**:多模态 LLM 调用,上传图片。 + - **输入**:LLM 提供商、提示词、图片文件、温度、最大令牌数、超时时间 + - **输出**:LLM 输出结果 + - **用途**:结合图片与 LLM 进行交互 +- **LLMChatMultiModalImageTensor**:多模态 LLM 调用,传入图片张量。 + - **输入**:LLM 提供商、提示词、图片张量、温度、最大令牌数、超时时间 + - **输出**:LLM 输出结果 + - **用途**:结合图片张量与 LLM 进行交互 +- **Jinja2RenderTemplate**:使用 Jinja2 渲染 prompt 模板。 + - **输入**:模板、键值映射字典 + - **输出**:渲染后的字符串 + - **用途**:根据提供的模板和变量,使用 Jinja2 引擎渲染出最终的字符串,常用于生成动态的 prompt + +### 3. 图像和视频处理节点 +- **LoadNetImg**:从网络加载图片。 + - **输入**:图片 URL + - **输出**:图像张量 + - **用途**:加载网络图片 +- **FaceDetect**:面部检测。 + - **输入**:待检测图像 + - **输出**:检测结果 + - **用途**:检测图像中的面部 +- **FaceExtract**:面部提取。 + - **输入**:包含面部的图像 + - **输出**:提取的面部图像 + - **用途**:从图像中提取面部 +- **VideoCut**:视频剪裁。 + - **输入**:视频文件、剪裁起始时间、剪裁结束时间 + - **输出**:剪裁后的视频文件 + - **用途**:对视频进行剪裁 +- **VideoCutByFramePoint**:视频按精确帧位剪裁。 + - **输入**:视频文件、起始帧、结束帧 + - **输出**:剪裁后的视频文件 + - **用途**:按精确帧位对视频进行剪裁 +- **VideoChangeFPS**:视频转换帧率。 + - **输入**:视频文件、目标帧率 + - **输出**:转换帧率后的视频文件 + - **用途**:改变视频的帧率 +- **HeyGemF2F**:HeyGem 嘴型同步。 + - **输入**:视频张量、音频数据、HeyGem 服务 URL、临时文件路径、是否为 Windows 系统 + - **输出**:视频存储路径 + - **用途**:实现视频的嘴型同步 +- **HeyGemF2FFromFile**:HeyGem 嘴型同步,直接读取文件。 + - **输入**:视频文件路径、音频文件路径、HeyGem 服务 URL、临时文件路径、是否为 Windows 系统 + - **输出**:视频存储路径 + - **用途**:实现视频的嘴型同步 + +### 4. 对象存储节点 +- **COSUpload**:上传文件到 COS。 + - **输入**:待上传文件、COS 存储桶信息 + - **输出**:上传结果 + - **用途**:将文件上传到腾讯云 COS +- **COSDownload**:从 COS 下载文件。 + - **输入**:COS 存储桶文件信息、本地保存路径 + - **输出**:下载的文件 + - **用途**:从腾讯云 COS 下载文件 +- **S3Upload**:上传文件到 S3。 + - **输入**:待上传文件、S3 存储桶信息 + - **输出**:上传结果 + - **用途**:将文件上传到 S3 存储桶 +- **S3Download**:从 S3 下载文件。 + - **输入**:S3 存储桶文件信息、本地保存路径 + - **输出**:下载的文件 + - **用途**:从 S3 存储桶下载文件 +- **S3UploadURL**:上传文件到 S3 并返回 URL。 + - **输入**:待上传文件、S3 存储桶信息 + - **输出**:上传后的文件 URL + - **用途**:上传文件到 S3 并获取文件 URL + +### 5. 工具节点 +- **LogToDB**:将日志记录到数据库。 + - **输入**:作业 ID、日志内容、状态、数据库连接 URL + - **输出**:记录结果 + - **用途**:将任务日志保存到数据库 +- **VodToLocalNode**:从腾讯云 VOD 下载视频到本地。 + - **输入**:文件 ID、子应用 ID + - **输出**:本地文件路径 + - **用途**:从腾讯云 VOD 下载视频文件 +- **UnloadAllModels**:卸载所有已加载的模型。 + - **输入**:任意输入 + - **输出**:无 + - **用途**:释放模型占用的内存 +- **TraverseFolder**:遍历文件夹。 + - **输入**:文件夹路径、文件后缀、是否递归、索引 + - **输出**:文件路径 + - **用途**:遍历文件夹并获取指定后缀的文件 +- **PlugAndPlayWebhook**:即插即用 Webhook 节点。 + - **输入**:Webhook URL、图片 URL、提示 ID + - **输出**:无 + - **用途**:将数据转发到指定的 Webhook URL +- **TaskIdGenerate**:生成任务 ID。 + - **输入**:无 + - **输出**:任务 ID + - **用途**:生成唯一的任务 ID + +## 五、注意事项 +- 部分节点需要配置相应的 API 密钥或数据库连接信息,**请下载[config.yaml](https://console.cloud.tencent.com/cos/bucket?type=object&tab=objectDetail&bucket=sucai-1324682537&path=%252Fconfig.yaml®ion=ap-shanghai)到custom_nodes/ComfyUI-CustomNode目录**。 +- 运行项目时,请确保网络连接正常,特别是涉及在线文件读取和 LLM 调用的节点。 diff --git a/img.png b/img.png deleted file mode 100644 index 58e8b05421c5dd59d008da153c05d28763fb15c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16317 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�e`*L@N>JI`6vh5zb{QJo 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 WR?hdmxq)N(AO+dyGDT9a-v2LFSd@wY diff --git a/nodes/llm_nodes.py b/nodes/llm_nodes.py index c748cf8..6c0a9a0 100644 --- a/nodes/llm_nodes.py +++ b/nodes/llm_nodes.py @@ -101,7 +101,6 @@ class LLMChat: content = find_value_recursive("content", resp) content = re.sub(r'\n{2,}', '\n', content) except Exception as e: - # logger.exception("llm调用失败 {}".format(e)) raise Exception("llm调用失败 {}".format(e)) return (content,) return _chat() diff --git a/readme.md b/readme.md deleted file mode 100644 index a55a6ef..0000000 --- a/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Face Occu Detect - -## Code From: https://github.com/LamKser/face-occlusion-classification - -![img.png](img.png) \ No newline at end of file