11 KiB
11 KiB
ComfyUI-SimpleChat Architecture Design
Design Philosophy
Do one thing, do best - 每个节点只做一件事,做到极致。
节点设计原则
- 单一职责: 每个节点只负责一个功能
- 清晰命名: 节点名称直接表达功能
- 最少配置: 合理默认值,减少必填项
- 美观布局: 输入输出顺序符合直觉
节点清单
配置节点
| 节点 | 功能 | 设计理念 |
|---|---|---|
API Config |
配置 API 连接 | 一次配置,到处使用 |
对话节点
| 节点 | 功能 | 设计理念 |
|---|---|---|
Chat |
基础对话 | 最简单的文本对话 |
Chat with Image |
发送图片给 LLM | 视觉理解 |
Chat NoASS |
NoASS 格式对话 | 角色扮演优化 |
图片生成节点 (Gemini Only)
| 节点 | 功能 | 设计理念 |
|---|---|---|
Gemini Image Gen |
文生图 | 纯文本生成图片 |
Gemini Image Edit |
图片编辑 | 基于参考图修改 |
节点详细设计
1. API Config
功能: 配置 API 连接参数
┌─────────────────────────────────────┐
│ 🔧 API Config │
├─────────────────────────────────────┤
│ provider [openai ▼] │
│ api_key [••••••••••] │
│ base_url [ ] │
│ model [gpt-4o ▼] │
├─────────────────────────────────────┤
│ CONFIG ○───│
└─────────────────────────────────────┘
输入:
provider: 下拉 ["openai", "claude", "gemini"]api_key: 密码输入base_url: 文本 (可选,留空使用默认)model: 可编辑下拉
输出:
CONFIG: 配置对象
2. Chat
功能: 基础文本对话
┌─────────────────────────────────────┐
│ 💬 Chat │
├─────────────────────────────────────┤
│ ───○ config │
├─────────────────────────────────────┤
│ prompt [ ] │
│ [ ] │
│ system [ ] │
│ temperature [1.0 ] │
│ max_tokens [2048 ] │
├─────────────────────────────────────┤
│ text ○───│
└─────────────────────────────────────┘
输入:
config: CONFIG (必需)prompt: 多行文本system: 系统提示 (可选)temperature: 0-2, 默认 1.0max_tokens: 默认 2048
输出:
text: STRING
3. Chat with Image
功能: 发送图片给 LLM 分析
┌─────────────────────────────────────┐
│ 🖼️ Chat with Image │
├─────────────────────────────────────┤
│ ───○ config │
│ ───○ image │
├─────────────────────────────────────┤
│ prompt [Describe this image ] │
│ [ ] │
│ system [ ] │
│ temperature [1.0 ] │
│ max_tokens [2048 ] │
├─────────────────────────────────────┤
│ text ○───│
└─────────────────────────────────────┘
输入:
config: CONFIGimage: IMAGEprompt: 多行文本system: 系统提示 (可选)temperature: 0-2max_tokens: 默认 2048
输出:
text: STRING
4. Chat NoASS
功能: NoASS 格式的角色扮演对话
┌─────────────────────────────────────┐
│ 🎭 Chat NoASS │
├─────────────────────────────────────┤
│ ───○ config │
│ ───○ history (optional) │
│ ───○ image (optional) │
├─────────────────────────────────────┤
│ system [You are... ] │
│ [ ] │
│ user_input [ ] │
│ user_name [User ] │
│ char_name [Assistant] │
│ temperature [1.0 ] │
│ max_tokens [2048 ] │
├─────────────────────────────────────┤
│ text ○───│
│ history ○───│
└─────────────────────────────────────┘
输入:
config: CONFIGhistory: STRING (可选,上一轮输出)image: IMAGE (可选)system: 系统提示/世界观设定user_input: 用户本轮输入user_name: 用户角色名char_name: AI 角色名temperature: 0-2max_tokens: 默认 2048
输出:
text: STRING (本轮 AI 回复)history: STRING (完整对话历史,可连接到下一个节点的 history 输入)
5. Gemini Image Gen
功能: Gemini 文生图
┌─────────────────────────────────────┐
│ 🎨 Gemini Image Gen │
├─────────────────────────────────────┤
│ ───○ config (Gemini only) │
├─────────────────────────────────────┤
│ prompt [A cat wearing a hat ] │
│ [ ] │
│ aspect [1:1 ▼] │
│ size [1K ▼] │
├─────────────────────────────────────┤
│ IMAGE ○───│
│ text ○───│
└─────────────────────────────────────┘
输入:
config: CONFIG (必须是 Gemini provider)prompt: 多行文本aspect: 下拉 ["1:1", "16:9", "9:16", "4:3", "3:4"]size: 下拉 ["1K", "2K", "4K"]
输出:
IMAGE: IMAGEtext: STRING (Gemini 的文字描述)
6. Gemini Image Edit
功能: Gemini 图片编辑
┌─────────────────────────────────────┐
│ ✏️ Gemini Image Edit │
├─────────────────────────────────────┤
│ ───○ config (Gemini only) │
│ ───○ image │
├─────────────────────────────────────┤
│ prompt [Add a red hat ] │
│ [ ] │
│ size [1K ▼] │
├─────────────────────────────────────┤
│ IMAGE ○───│
│ text ○───│
└─────────────────────────────────────┘
输入:
config: CONFIG (必须是 Gemini provider)image: IMAGE (要编辑的图片)prompt: 编辑指令size: 下拉 ["1K", "2K", "4K"]
输出:
IMAGE: IMAGEtext: STRING
数据流示例
基础对话
[API Config] ──CONFIG──> [Chat] ──text──> [Display Text]
图片分析
[Load Image] ──IMAGE──┐
├──> [Chat with Image] ──text──> [Display Text]
[API Config] ──CONFIG─┘
多轮 NoASS 对话
[API Config] ──CONFIG──> [Chat NoASS] ──history──> [Chat NoASS] ──history──> ...
│ │
└──text──> └──text──>
Gemini 图片生成
[API Config] ──CONFIG──> [Gemini Image Gen] ──IMAGE──> [Preview Image]
│ │
│ ──text──> [Display Text]
文件结构
custom_nodes/ComfyUI-SimpleChat/
├── __init__.py # 节点注册
├── nodes/
│ ├── __init__.py
│ ├── config.py # API Config
│ ├── chat.py # Chat
│ ├── chat_image.py # Chat with Image
│ ├── chat_noass.py # Chat NoASS
│ ├── gemini_gen.py # Gemini Image Gen
│ └── gemini_edit.py # Gemini Image Edit
├── core/
│ ├── __init__.py
│ ├── providers/
│ │ ├── __init__.py
│ │ ├── base.py # Provider 抽象基类
│ │ ├── openai.py # OpenAI (+ 兼容 API)
│ │ ├── claude.py # Claude/Anthropic
│ │ └── gemini.py # Google Gemini
│ ├── noass.py # NoASS 格式处理
│ └── image_utils.py # 图片转换
├── docs/ # 文档
├── requirements.txt
└── README.md
实现优先级
- Phase 1: API Config + Chat (最小可用)
- Phase 2: Chat with Image
- Phase 3: Chat NoASS
- Phase 4: Gemini Image Gen/Edit