Files

11 KiB

ComfyUI-SimpleChat Architecture Design

Design Philosophy

Do one thing, do best - 每个节点只做一件事,做到极致。

节点设计原则

  1. 单一职责: 每个节点只负责一个功能
  2. 清晰命名: 节点名称直接表达功能
  3. 最少配置: 合理默认值,减少必填项
  4. 美观布局: 输入输出顺序符合直觉

节点清单

配置节点

节点 功能 设计理念
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.0
  • max_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: CONFIG
  • image: IMAGE
  • prompt: 多行文本
  • system: 系统提示 (可选)
  • temperature: 0-2
  • max_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: CONFIG
  • history: STRING (可选,上一轮输出)
  • image: IMAGE (可选)
  • system: 系统提示/世界观设定
  • user_input: 用户本轮输入
  • user_name: 用户角色名
  • char_name: AI 角色名
  • temperature: 0-2
  • max_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: IMAGE
  • text: 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: IMAGE
  • text: 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

实现优先级

  1. Phase 1: API Config + Chat (最小可用)
  2. Phase 2: Chat with Image
  3. Phase 3: Chat NoASS
  4. Phase 4: Gemini Image Gen/Edit