1. 项目概述:Spring AI与EasyUI构建的ComfyUI风格工作流引擎
去年在开发一个智能写作系统时,我遇到了一个典型问题:如何让非技术用户也能灵活组合不同的大模型能力?这让我开始关注ComfyUI这类可视化工作流工具。ComfyUI以其节点拖拽式的交互方式和清晰的执行链路可视化,在AI绘画领域广受欢迎。但当我尝试将其理念应用到文本生成领域时,发现缺乏轻量级的实现方案。
这个Demo正是为了解决这个问题而诞生的最小可行性实现。它基于Spring Boot+Spring AI作为后端,EasyUI作为前端框架,完整复现了ComfyUI的四大核心特性:
- 节点画布拖拽:通过HTML5原生拖拽API实现
- 节点参数配置:采用EasyUI弹窗表单
- 流程链路执行:Spring AI驱动的大模型调用
- 执行结果可视化:实时展示每个节点的输入输出
技术选型上,Spring AI提供了统一的大模型接入层,而EasyUI则以其丰富的UI组件和简洁的API,让我们能快速构建出可交互的节点画布。这种组合既保证了后端服务的稳定性,又实现了前端的快速迭代开发。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计解析
2.1 系统分层架构
整个系统采用典型的三层架构设计,但针对工作流特性做了特殊优化:
code复制前端层(EasyUI) 业务逻辑层 基础设施层
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 节点画布 │←→│ 流程执行引擎 │←→│ Spring AI │
│ 配置弹窗 │ │ 节点管理器 │ │ Jackson │
│ 结果展示 │ │ 顺序调度器 │ │ Lombok │
└─────────────┘ └─────────────┘ └─────────────┘
前端与后端通过RESTful API交互,使用JSON作为数据交换格式。这种设计使得前端可以独立演进,未来替换为Vue或React等框架也不会影响核心业务逻辑。
2.2 关键模型设计
2.2.1 节点模型(ComfyNode)
节点是工作流的基本组成单元,其Java类定义包含以下核心属性:
java复制@Data
public class ComfyNode {
private String nodeId; // UUID生成
private String nodeType; // 枚举值:prompt/llm/in_output
private Map<String,Object> params; // 节点特有参数
private Map<String,String> inputs; // 输入连接关系
private Object result;
