Files
SillyTavern_replica/API_CONFIG_FINAL_SUMMARY.md

8.9 KiB
Raw Blame History

API 配置功能 - 完成清单

📦 已完成的功能模块

1. 后端实现

工作流管理服务

  • backend/services/comfyui_workflow_manager.py (173行)
    • 列出所有工作流
    • 上传工作流(带验证)
    • 删除工作流(保护默认文件)
    • 加载工作流
    • 提示词替换功能

API 端点 (6个)

  • GET /api/api-config/comfyui/workflows - 获取工作流列表
  • POST /api/api-config/comfyui/workflows/upload - 上传工作流
  • DELETE /api/api-config/comfyui/workflows/{filename} - 删除工作流
  • GET /api/api-config/comfyui/workflows/{filename} - 获取工作流详情
  • POST /api/api-config/test-comfyui-connection - 测试 ComfyUI 连接
  • POST /api/api-config/test-cloud-connection - 测试云端 API 连接

默认工作流

  • backend/data/comfyui_workflows/default_txt2img.json
    • 标准 ComfyUI API 格式
    • 7个节点KSampler、CheckpointLoader、EmptyLatentImage、CLIPTextEncode x2、VAEDecode、SaveImage
    • 包含 _meta 元数据
    • 中文节点标题

2. 前端实现

核心组件

  • ComfyUIWorkflowManager.jsx (179行)
    • 工作流列表显示
    • 上传功能
    • 删除功能
    • 刷新功能
    • 空状态提示
    • 使用说明

主配置页面

  • ApiConfig.jsx (完整重构)
    • 模式切换卡片(本地/云端)
    • 本地 ComfyUI 配置表单
    • 云端 API 配置表单
    • 嵌套路径更新逻辑
    • 修改跟踪系统
    • 测试连接功能

样式系统

  • ApiConfig.css (扩展 300+ 行)
    • 模式选择器样式
    • Toggle Switch 开关
    • 工作流管理器样式
    • 响应式设计
    • 防横向滚动

3. 数据结构

imageModel 新结构

{
  mode: 'local',  // 'local' | 'cloud'
  
  local: {
    apiUrl: 'http://comfyui:8188',
    websocketEnabled: true,
    queueTimeout: 300,
    defaultWorkflow: 'default_txt2img.json'
  },
  
  cloud: {
    provider: 'dall-e',
    apiUrl: 'https://api.openai.com/v1/images/generations',
    apiKey: '',
    model: 'dall-e-3'
  }
}

4. 响应式设计

SillyTavern 风格布局

  • 无页面级滚动条 (overflow: hidden)
  • 三栏独立滚动 (overflow-y: auto)
  • 禁止横向滚动 (overflow-x: hidden)
  • 视口高度布局 (100vh)
  • 媒体查询适配 (<768px)

5. 交互逻辑

核心函数

  • handleChange(e, path) - 支持嵌套路径更新
  • handleImageModeChange(mode) - 模式切换
  • testComfyUIConnection(apiUrl) - 测试本地连接
  • testCloudConnection(config) - 测试云端连接
  • handleOpenSaveModal() - 打开保存对话框
  • handleSave() - 保存配置

修改跟踪

  • 自动标记已修改的配置
  • 保存按钮显示修改数量
  • 标签页红点提示

📁 文件清单

新增文件 (7个)

  1. backend/data/comfyui_workflows/default_txt2img.json
  2. backend/services/comfyui_workflow_manager.py
  3. frontend/src/components/SideBarLeft/tabs/ApiConfig/ComfyUIWorkflowManager.jsx
  4. COMFYUI_WORKFLOW_IMPLEMENTATION.md
  5. API_IMAGE_CONFIG_COMPLETE.md
  6. COMFYUI_API_CONFIG_GUIDE.md
  7. API_CONFIG_FINAL_SUMMARY.md (本文件)

修改文件 (3个)

  1. backend/api/routes/apiConfigRoute.py (+148行)
  2. frontend/src/components/SideBarLeft/tabs/ApiConfig/ApiConfig.jsx (重构)
  3. frontend/src/components/SideBarLeft/tabs/ApiConfig/ApiConfig.css (+300行)

🎯 功能特性

工作流管理

  • 上传自定义工作流 JSON
  • 删除工作流(保护默认文件)
  • 列表显示(文件名、节点数、大小)
  • 实时刷新
  • 默认工作流标记

配置管理

  • 本地/云端模式切换
  • 完整的本地配置表单
  • 完整的云端配置表单
  • 动态模型选择
  • WebSocket 开关
  • 超时设置

连接测试

  • ComfyUI 连接测试
    • 检查连通性
    • 获取 VRAM 信息
    • 获取设备信息
  • 云端 API 连接测试
    • DALL-E 验证
    • Stability AI 验证
    • 模型可用性检查

安全性

  • API Key 加密存储Fernet
  • 路径遍历攻击防护
  • JSON 格式验证
  • 工作流有效性检查
  • 文件备份机制

🔧 技术栈

后端

  • FastAPI
  • Python requests
  • OpenAI SDK
  • cryptography (Fernet 加密)
  • JSON 文件存储

前端

  • React 18
  • Zustand (状态管理)
  • CSS3 (Grid + Flexbox)
  • Fetch API
  • FormData (文件上传)

📊 代码统计

模块 文件数 代码行数
后端服务 1 173
后端路由 1 +148
前端组件 1 179
前端主页面 1 ~800 (重构)
样式文件 1 +300
工作流模板 1 108
文档 4 ~1500
总计 10 ~3200+

测试清单

后端测试

# 1. 测试列出工作流
curl http://localhost:8000/api/api-config/comfyui/workflows

# 2. 测试上传工作流
curl -X POST http://localhost:8000/api/api-config/comfyui/workflows/upload \
  -F "file=@my_workflow.json"

# 3. 测试删除工作流
curl -X DELETE http://localhost:8000/api/api-config/comfyui/workflows/my_workflow.json

# 4. 测试获取工作流详情
curl http://localhost:8000/api/api-config/comfyui/workflows/default_txt2img.json

# 5. 测试 ComfyUI 连接
curl -X POST http://localhost:8000/api/api-config/test-comfyui-connection \
  -H "Content-Type: application/json" \
  -d '{"apiUrl": "http://localhost:8188"}'

# 6. 测试云端 API 连接
curl -X POST http://localhost:8000/api/api-config/test-cloud-connection \
  -H "Content-Type: application/json" \
  -d '{"provider": "dall-e", "apiKey": "sk-xxx", "model": "dall-e-3"}'

前端测试

  • 打开 API 配置页面
  • 切换到"🎨 生图"标签
  • 看到模式切换卡片
  • 点击"本地 ComfyUI" → 显示本地配置
  • 点击"在线 API" → 显示云端配置
  • 填写配置并测试连接
  • 上传工作流文件
  • 查看工作流列表
  • 删除工作流(非默认)
  • 保存配置
  • 重新加载配置
  • 测试响应式布局

🚀 部署说明

Docker 环境

# docker-compose.yml
version: '3.8'

services:
  llm-workflow-engine:
    build: ./backend
    ports:
      - "23338:8000"
    volumes:
      - ./backend/data:/app/data
    networks:
      - ai-network
  
  comfyui:
    image: ghcr.io/comfyanonymous/comfyui:latest
    ports:
      - "8188:8188"
    volumes:
      - ./comfyui/models:/app/models
      - ./comfyui/output:/app/output
    networks:
      - ai-network
    command: --listen 0.0.0.0 --port 8188

networks:
  ai-network:
    driver: bridge

配置示例

  • API 地址:http://comfyui:8188
  • 工作流目录:backend/data/comfyui_workflows/

本地环境

# 1. 安装依赖
cd backend
pip install -r requirements.txt

# 2. 启动后端
uvicorn main:app --reload --port 8000

# 3. 启动前端
cd frontend
npm run dev

# 4. 启动 ComfyUI
python comfyui/main.py --listen 0.0.0.0 --port 8188

配置示例

  • API 地址:http://localhost:8188

📝 使用流程

首次配置

  1. 选择模式

    • 点击"🎨 生图"标签
    • 选择"🖥️ 本地 ComfyUI"或"☁️ 在线 API"
  2. 填写配置

    • 本地:填写 API 地址、超时等
    • 云端:填写 API Key、选择模型
  3. 测试连接

    • 点击"测试连接"按钮
    • 确认连接成功
  4. 管理工作流(仅本地模式)

    • 查看默认工作流
    • (可选)上传自定义工作流
  5. 保存配置

    • 点击"保存配置"
    • 勾选"🎨 生图"
    • 确认保存

运行时生图

用户输入:"画一只猫"
    ↓
聊天接口检测生图意图
    ↓
读取 imageModel 配置
    ↓
调用 ImageGenerator.generate_image()
    ↓
如果 mode === 'local':
  1. 加载工作流 JSON
  2. 替换提示词为"画一只猫"
  3. 发送到 ComfyUI (/prompt)
  4. 等待完成 (/history/{prompt_id})
  5. 返回图片 URL (/view?filename=...)
否则:
  1. 调用 DALL-E API
  2. 返回图片 URL
    ↓
在聊天界面显示图片

🎊 总结

已完成

  • 完整的工作流管理系统
  • 本地/云端双模式支持
  • 标准的 ComfyUI API 格式
  • 连接测试功能
  • 响应式 UI 设计
  • SillyTavern 风格布局
  • 安全性保障(加密、验证)
  • 完善的文档

待完成 ⚠️

  • ⚠️ 生图服务实现 (image_generator.py)
  • ⚠️ 集成到聊天接口
  • ⚠️ Store 保存逻辑更新(处理嵌套结构)

下一步建议

  1. 测试前端 UI 和后端 API
  2. 创建 image_generator.py 服务
  3. 集成到聊天流程
  4. 添加进度显示和错误处理

当前状态: 🟢 API 配置功能完成,等待生图服务集成

文档版本: v1.0.0
最后更新: 2026-04-28