1136 lines
32 KiB
Markdown
1136 lines
32 KiB
Markdown
|
|
# 低代码智能体平台 - 完整技术方案
|
|||
|
|
|
|||
|
|
## 📋 目录
|
|||
|
|
|
|||
|
|
1. [项目概述](#一项目概述)
|
|||
|
|
2. [系统架构设计](#二系统架构设计)
|
|||
|
|
3. [核心功能模块](#三核心功能模块)
|
|||
|
|
4. [技术实现细节](#四技术实现细节)
|
|||
|
|
5. [项目结构设计](#五项目结构设计)
|
|||
|
|
6. [数据库设计](#六数据库设计)
|
|||
|
|
7. [API设计](#七api设计)
|
|||
|
|
8. [开发计划](#八开发计划)
|
|||
|
|
9. [部署方案](#九部署方案)
|
|||
|
|
10. [安全与扩展](#十安全与扩展)
|
|||
|
|
11. [开发指南](#十一开发指南)
|
|||
|
|
12. [附录:关键代码示例](#十二附录关键代码示例)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、项目概述
|
|||
|
|
|
|||
|
|
### 1.1 项目背景
|
|||
|
|
|
|||
|
|
低代码智能体平台旨在让非技术用户通过可视化拖拽的方式,快速构建和部署AI智能体,降低AI应用开发门槛,提高开发效率。
|
|||
|
|
|
|||
|
|
### 1.2 核心价值
|
|||
|
|
|
|||
|
|
- **零代码/低代码**:通过可视化界面配置智能体,无需编写代码
|
|||
|
|
- **快速部署**:一键部署到多种环境(云服务、本地、边缘设备)
|
|||
|
|
- **灵活扩展**:支持自定义组件和插件机制
|
|||
|
|
- **多模型支持**:集成主流AI模型(OpenAI、Claude、本地模型等)
|
|||
|
|
- **工作流编排**:支持复杂的工作流设计和执行
|
|||
|
|
- **Agent协作**:支持多Agent协作和工具链管理
|
|||
|
|
|
|||
|
|
### 1.3 目标用户
|
|||
|
|
|
|||
|
|
- 产品经理和业务人员
|
|||
|
|
- 初级开发者
|
|||
|
|
- 企业数字化转型团队
|
|||
|
|
- AI应用开发者
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、系统架构设计
|
|||
|
|
|
|||
|
|
### 2.1 整体架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ 前端层 (Frontend) │
|
|||
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|||
|
|
│ │ 可视化编辑器 │ │ 智能体管理 │ │ 监控面板 │ │
|
|||
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|||
|
|
└─────────────────────────────────────────────────────────┘
|
|||
|
|
│
|
|||
|
|
│ HTTP/WebSocket
|
|||
|
|
▼
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ API网关层 (Gateway) │
|
|||
|
|
│ 认证、限流、路由、负载均衡 │
|
|||
|
|
└─────────────────────────────────────────────────────────┘
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ 业务服务层 (Services) │
|
|||
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
|
|||
|
|
│ │智能体引擎 │ │工作流引擎 │ │模型管理 │ │数据管理 ││
|
|||
|
|
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
|
|||
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
|
|||
|
|
│ │任务调度 │ │日志监控 │ │用户管理 │ │权限管理 ││
|
|||
|
|
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
|
|||
|
|
└─────────────────────────────────────────────────────────┘
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ 数据存储层 (Storage) │
|
|||
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
|
|||
|
|
│ │PostgreSQL│ │ MongoDB │ │ Redis │ │ MinIO ││
|
|||
|
|
│ │(元数据) │ │(文档存储) │ │(缓存) │ │(文件) ││
|
|||
|
|
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
|
|||
|
|
└─────────────────────────────────────────────────────────┘
|
|||
|
|
│
|
|||
|
|
▼
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ 外部服务层 (External) │
|
|||
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
|
|||
|
|
│ │ OpenAI │ │ Claude │ │ 本地模型 │ │ 其他API ││
|
|||
|
|
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
|
|||
|
|
└─────────────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 技术栈选型
|
|||
|
|
|
|||
|
|
#### 前端技术栈(推荐:Vue 3)
|
|||
|
|
|
|||
|
|
- **框架**: Vue 3 + TypeScript + Vite
|
|||
|
|
- **状态管理**: Pinia
|
|||
|
|
- **UI组件库**: Element Plus / Ant Design Vue
|
|||
|
|
- **工作流可视化**: Vue Flow
|
|||
|
|
- **HTTP客户端**: Axios
|
|||
|
|
- **WebSocket**: Socket.io Client
|
|||
|
|
- **路由**: Vue Router
|
|||
|
|
- **表单验证**: VeeValidate
|
|||
|
|
- **代码编辑器**: Monaco Editor(用于代码生成器)
|
|||
|
|
|
|||
|
|
#### 后端技术栈(推荐:Python FastAPI)
|
|||
|
|
|
|||
|
|
- **API框架**: Python FastAPI
|
|||
|
|
- **任务队列**: Celery + Redis
|
|||
|
|
- **缓存/队列**: Redis
|
|||
|
|
- **数据库**: PostgreSQL
|
|||
|
|
- **ORM**: SQLAlchemy
|
|||
|
|
- **数据验证**: Pydantic
|
|||
|
|
- **Agent框架**: LangChain
|
|||
|
|
- **RAG框架**: LlamaIndex(可选)
|
|||
|
|
- **向量数据库**: ChromaDB(可选)
|
|||
|
|
- **WebSocket**: FastAPI WebSocket
|
|||
|
|
- **API文档**: Swagger/OpenAPI
|
|||
|
|
|
|||
|
|
#### 数据库
|
|||
|
|
|
|||
|
|
- **关系型数据库**: PostgreSQL(元数据、配置)
|
|||
|
|
- **文档数据库**: MongoDB(日志、非结构化数据,可选)
|
|||
|
|
- **缓存**: Redis(会话、缓存、消息队列)
|
|||
|
|
- **对象存储**: MinIO / AWS S3(文件存储)
|
|||
|
|
|
|||
|
|
#### 基础设施
|
|||
|
|
|
|||
|
|
- **容器化**: Docker + Docker Compose
|
|||
|
|
- **反向代理**: Nginx
|
|||
|
|
- **编排**: Kubernetes(生产环境)
|
|||
|
|
- **监控**: Prometheus + Grafana
|
|||
|
|
- **日志**: ELK Stack(可选)
|
|||
|
|
- **CI/CD**: GitHub Actions / GitLab CI
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、核心功能模块
|
|||
|
|
|
|||
|
|
### 3.1 低代码工作流设计器
|
|||
|
|
|
|||
|
|
#### 功能特性
|
|||
|
|
|
|||
|
|
- **可视化拖拽**: 支持拖拽添加功能节点
|
|||
|
|
- **连线配置**: 可视化配置节点间的数据流
|
|||
|
|
- **属性面板**: 动态配置节点参数
|
|||
|
|
- **实时预览**: 实时查看智能体执行效果
|
|||
|
|
- **版本管理**: 支持版本回滚和对比
|
|||
|
|
- **工作流验证**: 实时验证工作流逻辑
|
|||
|
|
|
|||
|
|
#### 节点类型
|
|||
|
|
|
|||
|
|
1. **输入节点**
|
|||
|
|
- 文本输入
|
|||
|
|
- 文件上传
|
|||
|
|
- API调用
|
|||
|
|
- 数据库查询
|
|||
|
|
|
|||
|
|
2. **处理节点**
|
|||
|
|
- **模板节点**: 调用AI模型(GPT、Claude等)
|
|||
|
|
- **条件节点**: 条件判断和分支
|
|||
|
|
- **数据节点**: 数据转换和处理
|
|||
|
|
- **Agent节点**: 执行智能Agent
|
|||
|
|
- **循环节点**: 循环处理
|
|||
|
|
|
|||
|
|
3. **输出节点**
|
|||
|
|
- 文本输出
|
|||
|
|
- 文件下载
|
|||
|
|
- API响应
|
|||
|
|
- 数据库写入
|
|||
|
|
- 消息推送
|
|||
|
|
|
|||
|
|
4. **工具节点**
|
|||
|
|
- HTTP请求
|
|||
|
|
- 数据库操作
|
|||
|
|
- 文件操作
|
|||
|
|
- 定时任务
|
|||
|
|
- Webhook
|
|||
|
|
|
|||
|
|
### 3.2 智能Agent平台
|
|||
|
|
|
|||
|
|
#### 功能要求
|
|||
|
|
|
|||
|
|
- **Agent角色定义**: 配置Agent的角色、能力和目标
|
|||
|
|
- **工具链管理**: 管理Agent可用的工具
|
|||
|
|
- **Agent工作流编排**: 将Agent集成到工作流中
|
|||
|
|
- **多Agent协作**: 支持多个Agent协同工作
|
|||
|
|
- **Agent执行监控**: 实时监控Agent执行状态
|
|||
|
|
- **Agent性能分析**: 分析Agent执行效果
|
|||
|
|
|
|||
|
|
#### 技术实现
|
|||
|
|
|
|||
|
|
- 集成 LangChain Agent框架
|
|||
|
|
- 支持多种Agent类型(ReAct、Plan-and-Execute等)
|
|||
|
|
- 工具注册和管理系统
|
|||
|
|
- Agent执行状态实时推送(WebSocket)
|
|||
|
|
- 执行日志和结果存储
|
|||
|
|
|
|||
|
|
### 3.3 工作流执行引擎
|
|||
|
|
|
|||
|
|
#### 核心能力
|
|||
|
|
|
|||
|
|
- **工作流执行**: 按照可视化配置执行智能体流程
|
|||
|
|
- **异步处理**: 使用Celery处理长时间运行的任务
|
|||
|
|
- **实时状态推送**: WebSocket实时推送执行状态
|
|||
|
|
- **错误处理**: 自动重试和错误恢复机制
|
|||
|
|
- **并发控制**: 支持多实例并发执行
|
|||
|
|
- **资源管理**: CPU、内存、API调用限制
|
|||
|
|
|
|||
|
|
#### 执行流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. 解析工作流配置(JSON格式)
|
|||
|
|
2. 构建执行图(DAG - 有向无环图)
|
|||
|
|
3. 拓扑排序确定执行顺序
|
|||
|
|
4. 按序执行节点(支持并行执行独立节点)
|
|||
|
|
5. 传递数据上下文
|
|||
|
|
6. 记录执行日志
|
|||
|
|
7. 返回结果
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.4 模型管理模块
|
|||
|
|
|
|||
|
|
#### 功能
|
|||
|
|
|
|||
|
|
- **模型接入**: 支持多种AI模型提供商
|
|||
|
|
- **API密钥管理**: 安全的密钥存储和管理(加密存储)
|
|||
|
|
- **模型切换**: 运行时动态切换模型
|
|||
|
|
- **成本统计**: 记录API调用成本和用量
|
|||
|
|
- **限流控制**: 防止API调用超限
|
|||
|
|
|
|||
|
|
#### 支持的模型
|
|||
|
|
|
|||
|
|
- **OpenAI**: GPT-4, GPT-3.5, Embeddings
|
|||
|
|
- **Anthropic**: Claude 3
|
|||
|
|
- **本地模型**: Ollama, vLLM
|
|||
|
|
- **其他**: 百度文心、阿里通义等
|
|||
|
|
|
|||
|
|
### 3.5 数据管理模块
|
|||
|
|
|
|||
|
|
#### 功能
|
|||
|
|
|
|||
|
|
- **数据源配置**: 连接多种数据源
|
|||
|
|
- **数据预览**: 查看数据源内容
|
|||
|
|
- **数据转换**: 数据清洗和转换
|
|||
|
|
- **数据缓存**: 提高查询性能
|
|||
|
|
|
|||
|
|
#### 支持的数据源
|
|||
|
|
|
|||
|
|
- 关系型数据库: MySQL, PostgreSQL, SQL Server
|
|||
|
|
- NoSQL: MongoDB, Redis
|
|||
|
|
- 文件: CSV, Excel, JSON
|
|||
|
|
- API: RESTful, GraphQL
|
|||
|
|
- 云存储: AWS S3, 阿里云OSS
|
|||
|
|
|
|||
|
|
### 3.6 部署管理模块
|
|||
|
|
|
|||
|
|
#### 功能
|
|||
|
|
|
|||
|
|
- **一键部署**: 将智能体部署到不同环境
|
|||
|
|
- **环境管理**: 开发、测试、生产环境
|
|||
|
|
- **版本控制**: 版本发布和回滚
|
|||
|
|
- **监控告警**: 实时监控和异常告警
|
|||
|
|
- **扩缩容**: 根据负载自动扩缩容
|
|||
|
|
|
|||
|
|
#### 部署方式
|
|||
|
|
|
|||
|
|
- **API服务**: 提供RESTful API接口
|
|||
|
|
- **Web应用**: 嵌入到现有Web应用
|
|||
|
|
- **移动端**: 提供移动端SDK(未来)
|
|||
|
|
- **边缘设备**: 支持边缘计算部署(未来)
|
|||
|
|
|
|||
|
|
### 3.7 用户权限模块
|
|||
|
|
|
|||
|
|
#### 功能
|
|||
|
|
|
|||
|
|
- **用户管理**: 用户注册、登录、信息管理
|
|||
|
|
- **角色权限**: RBAC权限控制
|
|||
|
|
- **团队协作**: 多人协作开发
|
|||
|
|
- **资源隔离**: 不同用户/团队资源隔离
|
|||
|
|
- **操作审计**: 记录所有操作日志
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、技术实现细节
|
|||
|
|
|
|||
|
|
### 4.1 工作流执行引擎设计
|
|||
|
|
|
|||
|
|
#### 核心算法
|
|||
|
|
|
|||
|
|
1. **DAG构建**: 将节点和边转换为有向无环图
|
|||
|
|
2. **拓扑排序**: 确定节点执行顺序
|
|||
|
|
3. **并行执行**: 识别可并行执行的节点
|
|||
|
|
4. **数据流管理**: 节点间数据传递和类型转换
|
|||
|
|
|
|||
|
|
#### 关键技术点
|
|||
|
|
|
|||
|
|
- 使用异步编程提高并发性能
|
|||
|
|
- 使用消息队列处理长时间任务
|
|||
|
|
- 实现节点执行结果缓存
|
|||
|
|
- 支持断点续传和状态恢复
|
|||
|
|
|
|||
|
|
### 4.2 可视化编辑器实现
|
|||
|
|
|
|||
|
|
#### 技术选型
|
|||
|
|
|
|||
|
|
- **Vue Flow**: 基于Vue 3的流程图库
|
|||
|
|
- **节点自定义**: 支持自定义节点样式和行为
|
|||
|
|
- **连线验证**: 验证连线的有效性
|
|||
|
|
- **实时同步**: WebSocket实时同步多人编辑
|
|||
|
|
|
|||
|
|
#### UI布局
|
|||
|
|
|
|||
|
|
- **左侧**: 节点工具箱(可拖拽的节点类型)
|
|||
|
|
- **中间**: 画布区域(工作流可视化编辑)
|
|||
|
|
- **右侧**: 节点配置面板(选中节点时显示)
|
|||
|
|
- **顶部**: 工具栏(保存、运行、预览等)
|
|||
|
|
- **底部**: 执行日志和状态栏
|
|||
|
|
|
|||
|
|
### 4.3 Agent集成方案
|
|||
|
|
|
|||
|
|
#### LangChain集成
|
|||
|
|
|
|||
|
|
- 使用LangChain的Agent框架
|
|||
|
|
- 支持多种Agent类型(ReAct、Plan-and-Execute等)
|
|||
|
|
- 工具注册和管理
|
|||
|
|
- 提示词模板管理
|
|||
|
|
|
|||
|
|
#### 工具系统
|
|||
|
|
|
|||
|
|
- 工具注册机制
|
|||
|
|
- 工具参数验证
|
|||
|
|
- 工具执行结果缓存
|
|||
|
|
- 工具执行日志记录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、项目结构设计
|
|||
|
|
|
|||
|
|
### 5.1 前端项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
frontend/
|
|||
|
|
├── src/
|
|||
|
|
│ ├── api/ # API接口封装
|
|||
|
|
│ ├── assets/ # 静态资源
|
|||
|
|
│ ├── components/ # 公共组件
|
|||
|
|
│ │ ├── WorkflowEditor/ # 工作流编辑器
|
|||
|
|
│ │ ├── NodePanel/ # 节点配置面板
|
|||
|
|
│ │ ├── AgentConfig/ # Agent配置组件
|
|||
|
|
│ │ └── CodeGenerator/ # 代码生成器
|
|||
|
|
│ ├── composables/ # 组合式函数
|
|||
|
|
│ ├── layouts/ # 布局组件
|
|||
|
|
│ ├── router/ # 路由配置
|
|||
|
|
│ ├── stores/ # Pinia状态管理
|
|||
|
|
│ │ ├── workflow.ts # 工作流状态
|
|||
|
|
│ │ ├── agent.ts # Agent状态
|
|||
|
|
│ │ └── user.ts # 用户状态
|
|||
|
|
│ ├── types/ # TypeScript类型定义
|
|||
|
|
│ ├── utils/ # 工具函数
|
|||
|
|
│ └── views/ # 页面组件
|
|||
|
|
│ ├── WorkflowDesigner.vue
|
|||
|
|
│ ├── AgentStudio.vue
|
|||
|
|
│ └── CodeGenerator.vue
|
|||
|
|
├── public/
|
|||
|
|
└── package.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5.2 后端项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
backend/
|
|||
|
|
├── app/
|
|||
|
|
│ ├── api/ # API路由
|
|||
|
|
│ │ ├── workflows.py # 工作流API
|
|||
|
|
│ │ ├── agents.py # Agent API
|
|||
|
|
│ │ └── executions.py # 执行API
|
|||
|
|
│ ├── core/ # 核心功能
|
|||
|
|
│ │ ├── config.py # 配置
|
|||
|
|
│ │ ├── security.py # 安全
|
|||
|
|
│ │ └── database.py # 数据库
|
|||
|
|
│ ├── models/ # 数据模型
|
|||
|
|
│ │ ├── workflow.py
|
|||
|
|
│ │ ├── agent.py
|
|||
|
|
│ │ └── execution.py
|
|||
|
|
│ ├── services/ # 业务逻辑
|
|||
|
|
│ │ ├── workflow_engine.py # 工作流引擎
|
|||
|
|
│ │ ├── agent_service.py # Agent服务
|
|||
|
|
│ │ └── code_generator.py # 代码生成
|
|||
|
|
│ ├── tasks/ # Celery任务
|
|||
|
|
│ │ ├── workflow_tasks.py
|
|||
|
|
│ │ └── agent_tasks.py
|
|||
|
|
│ ├── websocket/ # WebSocket处理
|
|||
|
|
│ └── utils/ # 工具函数
|
|||
|
|
├── tests/ # 测试
|
|||
|
|
├── alembic/ # 数据库迁移
|
|||
|
|
├── requirements.txt
|
|||
|
|
└── main.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 六、数据库设计
|
|||
|
|
|
|||
|
|
### 6.1 核心表结构
|
|||
|
|
|
|||
|
|
#### 用户表 (users)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE users (
|
|||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|||
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|||
|
|
email VARCHAR(100) UNIQUE NOT NULL,
|
|||
|
|
password_hash VARCHAR(255) NOT NULL,
|
|||
|
|
role VARCHAR(20) DEFAULT 'user',
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 智能体表 (agents)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE agents (
|
|||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|||
|
|
name VARCHAR(100) NOT NULL,
|
|||
|
|
description TEXT,
|
|||
|
|
workflow_config JSONB NOT NULL,
|
|||
|
|
version INTEGER DEFAULT 1,
|
|||
|
|
status VARCHAR(20) DEFAULT 'draft',
|
|||
|
|
user_id UUID REFERENCES users(id),
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
CREATE INDEX idx_agents_user_id ON agents(user_id);
|
|||
|
|
CREATE INDEX idx_agents_status ON agents(status);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 执行记录表 (executions)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE executions (
|
|||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|||
|
|
agent_id UUID REFERENCES agents(id),
|
|||
|
|
input_data JSONB,
|
|||
|
|
output_data JSONB,
|
|||
|
|
status VARCHAR(20) NOT NULL,
|
|||
|
|
error_message TEXT,
|
|||
|
|
execution_time INTEGER,
|
|||
|
|
task_id VARCHAR(100),
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
CREATE INDEX idx_executions_agent_id ON executions(agent_id);
|
|||
|
|
CREATE INDEX idx_executions_status ON executions(status);
|
|||
|
|
CREATE INDEX idx_executions_created_at ON executions(created_at);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 模型配置表 (model_configs)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE model_configs (
|
|||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|||
|
|
name VARCHAR(100) NOT NULL,
|
|||
|
|
provider VARCHAR(50) NOT NULL,
|
|||
|
|
model_name VARCHAR(100) NOT NULL,
|
|||
|
|
api_key VARCHAR(500) NOT NULL, -- 加密存储
|
|||
|
|
base_url VARCHAR(255),
|
|||
|
|
user_id UUID REFERENCES users(id),
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
CREATE INDEX idx_model_configs_user_id ON model_configs(user_id);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 工作流表 (workflows)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE workflows (
|
|||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|||
|
|
name VARCHAR(100) NOT NULL,
|
|||
|
|
description TEXT,
|
|||
|
|
nodes JSONB NOT NULL,
|
|||
|
|
edges JSONB NOT NULL,
|
|||
|
|
version INTEGER DEFAULT 1,
|
|||
|
|
status VARCHAR(20) DEFAULT 'draft',
|
|||
|
|
user_id UUID REFERENCES users(id),
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 七、API设计
|
|||
|
|
|
|||
|
|
### 7.1 RESTful API规范
|
|||
|
|
|
|||
|
|
#### 智能体管理
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /api/v1/agents # 获取智能体列表
|
|||
|
|
POST /api/v1/agents # 创建智能体
|
|||
|
|
GET /api/v1/agents/:id # 获取智能体详情
|
|||
|
|
PUT /api/v1/agents/:id # 更新智能体
|
|||
|
|
DELETE /api/v1/agents/:id # 删除智能体
|
|||
|
|
POST /api/v1/agents/:id/deploy # 部署智能体
|
|||
|
|
POST /api/v1/agents/:id/stop # 停止智能体
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 工作流管理
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /api/v1/workflows # 获取工作流列表
|
|||
|
|
POST /api/v1/workflows # 创建工作流
|
|||
|
|
GET /api/v1/workflows/:id # 获取工作流详情
|
|||
|
|
PUT /api/v1/workflows/:id # 更新工作流
|
|||
|
|
DELETE /api/v1/workflows/:id # 删除工作流
|
|||
|
|
POST /api/v1/workflows/:id/execute # 执行工作流
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 执行管理
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
POST /api/v1/agents/:id/execute # 执行智能体
|
|||
|
|
GET /api/v1/executions # 获取执行记录
|
|||
|
|
GET /api/v1/executions/:id # 获取执行详情
|
|||
|
|
DELETE /api/v1/executions/:id # 删除执行记录
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 模型管理
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /api/v1/models # 获取模型列表
|
|||
|
|
POST /api/v1/models # 添加模型配置
|
|||
|
|
PUT /api/v1/models/:id # 更新模型配置
|
|||
|
|
DELETE /api/v1/models/:id # 删除模型配置
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7.2 WebSocket API
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
连接: ws://host/api/v1/ws
|
|||
|
|
事件:
|
|||
|
|
- workflow.execute.start # 执行开始
|
|||
|
|
- workflow.execute.progress # 执行进度
|
|||
|
|
- workflow.execute.complete # 执行完成
|
|||
|
|
- workflow.execute.error # 执行错误
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7.3 API响应格式
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "success",
|
|||
|
|
"data": {},
|
|||
|
|
"timestamp": "2024-01-01T00:00:00Z"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 八、开发计划
|
|||
|
|
|
|||
|
|
### 8.1 第一阶段:MVP (最小可行产品) - 4周
|
|||
|
|
|
|||
|
|
**目标**: 实现核心功能,支持基本的智能体创建和执行
|
|||
|
|
|
|||
|
|
**任务清单**:
|
|||
|
|
- [ ] 项目初始化和基础架构搭建
|
|||
|
|
- [ ] 用户认证和权限系统
|
|||
|
|
- [ ] 基础可视化编辑器(节点拖拽、连线)
|
|||
|
|
- [ ] 核心节点实现(输入、LLM、输出)
|
|||
|
|
- [ ] 智能体执行引擎
|
|||
|
|
- [ ] OpenAI模型集成
|
|||
|
|
- [ ] 基础API接口
|
|||
|
|
- [ ] 简单的前端界面
|
|||
|
|
|
|||
|
|
### 8.2 第二阶段:功能完善 - 6周
|
|||
|
|
|
|||
|
|
**目标**: 完善功能,提升用户体验
|
|||
|
|
|
|||
|
|
**任务清单**:
|
|||
|
|
- [ ] 更多节点类型支持(条件、循环、Agent等)
|
|||
|
|
- [ ] 工作流版本管理
|
|||
|
|
- [ ] 数据源管理
|
|||
|
|
- [ ] 执行日志和监控
|
|||
|
|
- [ ] 错误处理和重试机制
|
|||
|
|
- [ ] 性能优化
|
|||
|
|
- [ ] 单元测试和集成测试
|
|||
|
|
|
|||
|
|
### 8.3 第三阶段:高级功能 - 6周
|
|||
|
|
|
|||
|
|
**目标**: 添加高级功能和优化
|
|||
|
|
|
|||
|
|
**任务清单**:
|
|||
|
|
- [ ] 多模型支持(Claude、本地模型)
|
|||
|
|
- [ ] LangChain Agent集成
|
|||
|
|
- [ ] 团队协作功能
|
|||
|
|
- [ ] 模板市场
|
|||
|
|
- [ ] 插件系统
|
|||
|
|
- [ ] 高级监控和告警
|
|||
|
|
- [ ] 部署管理
|
|||
|
|
- [ ] 文档和教程
|
|||
|
|
|
|||
|
|
### 8.4 第四阶段:生产就绪 - 4周
|
|||
|
|
|
|||
|
|
**目标**: 优化和准备生产环境
|
|||
|
|
|
|||
|
|
**任务清单**:
|
|||
|
|
- [ ] 性能优化和压力测试
|
|||
|
|
- [ ] 安全审计
|
|||
|
|
- [ ] 完整的文档
|
|||
|
|
- [ ] 部署脚本和CI/CD
|
|||
|
|
- [ ] 用户培训材料
|
|||
|
|
- [ ] 生产环境部署
|
|||
|
|
|
|||
|
|
**总开发周期**: 20周(约5个月)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 九、部署方案
|
|||
|
|
|
|||
|
|
### 9.1 开发环境
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# docker-compose.dev.yml
|
|||
|
|
version: '3.8'
|
|||
|
|
|
|||
|
|
services:
|
|||
|
|
frontend:
|
|||
|
|
build: ./frontend
|
|||
|
|
ports:
|
|||
|
|
- "3000:3000"
|
|||
|
|
volumes:
|
|||
|
|
- ./frontend:/app
|
|||
|
|
environment:
|
|||
|
|
- VITE_API_URL=http://localhost:8000
|
|||
|
|
|
|||
|
|
backend:
|
|||
|
|
build: ./backend
|
|||
|
|
ports:
|
|||
|
|
- "8000:8000"
|
|||
|
|
volumes:
|
|||
|
|
- ./backend:/app
|
|||
|
|
environment:
|
|||
|
|
- DATABASE_URL=postgresql://user:pass@db:5432/workflow
|
|||
|
|
- REDIS_URL=redis://redis:6379
|
|||
|
|
depends_on:
|
|||
|
|
- db
|
|||
|
|
- redis
|
|||
|
|
|
|||
|
|
celery:
|
|||
|
|
build: ./backend
|
|||
|
|
command: celery -A app.core.celery_app worker --loglevel=info
|
|||
|
|
volumes:
|
|||
|
|
- ./backend:/app
|
|||
|
|
depends_on:
|
|||
|
|
- db
|
|||
|
|
- redis
|
|||
|
|
|
|||
|
|
db:
|
|||
|
|
image: postgres:15
|
|||
|
|
environment:
|
|||
|
|
- POSTGRES_DB=workflow
|
|||
|
|
- POSTGRES_USER=user
|
|||
|
|
- POSTGRES_PASSWORD=pass
|
|||
|
|
volumes:
|
|||
|
|
- postgres_data:/var/lib/postgresql/data
|
|||
|
|
|
|||
|
|
redis:
|
|||
|
|
image: redis:7-alpine
|
|||
|
|
volumes:
|
|||
|
|
- redis_data:/data
|
|||
|
|
|
|||
|
|
volumes:
|
|||
|
|
postgres_data:
|
|||
|
|
redis_data:
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 9.2 生产环境
|
|||
|
|
|
|||
|
|
- **容器化**: Docker镜像
|
|||
|
|
- **编排**: Kubernetes
|
|||
|
|
- **负载均衡**: Nginx / Traefik
|
|||
|
|
- **数据库**: 主从复制 + 读写分离
|
|||
|
|
- **缓存**: Redis集群
|
|||
|
|
- **监控**: Prometheus + Grafana
|
|||
|
|
- **日志**: ELK Stack
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十、安全与扩展
|
|||
|
|
|
|||
|
|
### 10.1 安全考虑
|
|||
|
|
|
|||
|
|
#### 数据安全
|
|||
|
|
- API密钥加密存储(使用AES加密)
|
|||
|
|
- 敏感数据传输加密(HTTPS)
|
|||
|
|
- 数据库访问控制
|
|||
|
|
- 定期备份
|
|||
|
|
|
|||
|
|
#### 访问控制
|
|||
|
|
- JWT token认证
|
|||
|
|
- RBAC权限控制
|
|||
|
|
- API限流(使用Redis实现)
|
|||
|
|
- IP白名单(可选)
|
|||
|
|
|
|||
|
|
#### 代码安全
|
|||
|
|
- 依赖漏洞扫描
|
|||
|
|
- 代码审查
|
|||
|
|
- 安全测试
|
|||
|
|
- 输入验证和SQL注入防护
|
|||
|
|
|
|||
|
|
### 10.2 扩展性设计
|
|||
|
|
|
|||
|
|
#### 水平扩展
|
|||
|
|
- 无状态服务设计
|
|||
|
|
- 使用消息队列解耦
|
|||
|
|
- 数据库读写分离
|
|||
|
|
- 缓存层减少数据库压力
|
|||
|
|
|
|||
|
|
#### 插件系统
|
|||
|
|
- 支持自定义节点开发
|
|||
|
|
- 插件市场
|
|||
|
|
- 版本管理
|
|||
|
|
- 安全沙箱
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十一、开发指南
|
|||
|
|
|
|||
|
|
### 11.1 开发环境配置
|
|||
|
|
|
|||
|
|
#### 前端开发环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 安装 Node.js (推荐 v18+)
|
|||
|
|
# 安装 pnpm
|
|||
|
|
npm install -g pnpm
|
|||
|
|
|
|||
|
|
# 安装依赖
|
|||
|
|
cd frontend
|
|||
|
|
pnpm install
|
|||
|
|
|
|||
|
|
# 启动开发服务器
|
|||
|
|
pnpm dev
|
|||
|
|
|
|||
|
|
# 运行测试
|
|||
|
|
pnpm test
|
|||
|
|
|
|||
|
|
# 构建生产版本
|
|||
|
|
pnpm build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 后端开发环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 安装 Python (推荐 3.11+)
|
|||
|
|
# 创建虚拟环境
|
|||
|
|
python -m venv venv
|
|||
|
|
source venv/bin/activate # Windows: venv\Scripts\activate
|
|||
|
|
|
|||
|
|
# 安装依赖
|
|||
|
|
cd backend
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
|
|||
|
|
# 配置环境变量
|
|||
|
|
cp .env.example .env
|
|||
|
|
# 编辑 .env 文件
|
|||
|
|
|
|||
|
|
# 运行数据库迁移
|
|||
|
|
alembic upgrade head
|
|||
|
|
|
|||
|
|
# 启动开发服务器
|
|||
|
|
uvicorn app.main:app --reload
|
|||
|
|
|
|||
|
|
# 启动 Celery Worker
|
|||
|
|
celery -A app.core.celery_app worker --loglevel=info
|
|||
|
|
|
|||
|
|
# 运行测试
|
|||
|
|
pytest
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 11.2 代码规范
|
|||
|
|
|
|||
|
|
#### 前端
|
|||
|
|
- 使用 ESLint + Prettier 统一代码风格
|
|||
|
|
- 遵循 Vue 3 组合式 API 最佳实践
|
|||
|
|
- 使用 TypeScript 严格模式
|
|||
|
|
- 组件命名使用 PascalCase
|
|||
|
|
- 文件命名使用 kebab-case
|
|||
|
|
|
|||
|
|
#### 后端
|
|||
|
|
- 遵循 PEP 8 Python 代码规范
|
|||
|
|
- 使用类型提示(Type Hints)
|
|||
|
|
- 使用 Pydantic 进行数据验证
|
|||
|
|
- API 路由使用 RESTful 规范
|
|||
|
|
- 函数和类添加文档字符串
|
|||
|
|
|
|||
|
|
### 11.3 Git 工作流
|
|||
|
|
|
|||
|
|
- 使用 Git Flow 或 GitHub Flow
|
|||
|
|
- 提交信息遵循 Conventional Commits
|
|||
|
|
- 代码审查(Code Review)必须
|
|||
|
|
- 主分支保护,禁止直接推送
|
|||
|
|
|
|||
|
|
### 11.4 测试策略
|
|||
|
|
|
|||
|
|
#### 单元测试
|
|||
|
|
- **前端**: 使用 Vitest 进行组件测试
|
|||
|
|
- **后端**: 使用 pytest 进行单元测试
|
|||
|
|
|
|||
|
|
#### 集成测试
|
|||
|
|
- API 集成测试
|
|||
|
|
- 数据库交互测试
|
|||
|
|
- Celery 任务执行测试
|
|||
|
|
- WebSocket 通信测试
|
|||
|
|
|
|||
|
|
#### 端到端测试
|
|||
|
|
- 使用 Playwright 或 Cypress
|
|||
|
|
- 测试完整用户流程
|
|||
|
|
- 测试工作流创建和执行
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十二、附录:关键代码示例
|
|||
|
|
|
|||
|
|
### 12.1 工作流执行引擎(Python)
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# app/services/workflow_engine.py
|
|||
|
|
from typing import Dict, Any, List
|
|||
|
|
import asyncio
|
|||
|
|
from langchain.llms import OpenAI
|
|||
|
|
from langchain.agents import initialize_agent
|
|||
|
|
|
|||
|
|
class WorkflowEngine:
|
|||
|
|
def __init__(self, workflow_id: str):
|
|||
|
|
self.workflow_id = workflow_id
|
|||
|
|
self.llm = OpenAI(temperature=0.7)
|
|||
|
|
self.nodes = []
|
|||
|
|
self.edges = []
|
|||
|
|
|
|||
|
|
async def execute_node(self, node: Dict[str, Any], input_data: Dict[str, Any]) -> Dict[str, Any]:
|
|||
|
|
"""执行单个节点"""
|
|||
|
|
node_type = node.get('type')
|
|||
|
|
|
|||
|
|
if node_type == 'template':
|
|||
|
|
# 模板节点:调用AI模型
|
|||
|
|
prompt = self.build_prompt(node, input_data)
|
|||
|
|
result = await self.llm.agenerate([prompt])
|
|||
|
|
return {'output': result.generations[0][0].text}
|
|||
|
|
|
|||
|
|
elif node_type == 'condition':
|
|||
|
|
# 条件节点:判断分支
|
|||
|
|
condition = node.get('condition')
|
|||
|
|
result = self.evaluate_condition(condition, input_data)
|
|||
|
|
return {'output': result, 'branch': 'true' if result else 'false'}
|
|||
|
|
|
|||
|
|
elif node_type == 'data':
|
|||
|
|
# 数据节点:数据转换
|
|||
|
|
mapping = node.get('mapping')
|
|||
|
|
result = self.transform_data(input_data, mapping)
|
|||
|
|
return {'output': result}
|
|||
|
|
|
|||
|
|
elif node_type == 'agent':
|
|||
|
|
# Agent节点:执行Agent
|
|||
|
|
agent = initialize_agent(
|
|||
|
|
tools=node.get('tools', []),
|
|||
|
|
llm=self.llm,
|
|||
|
|
agent="zero-shot-react-description"
|
|||
|
|
)
|
|||
|
|
result = await agent.arun(node.get('task'))
|
|||
|
|
return {'output': result}
|
|||
|
|
|
|||
|
|
else:
|
|||
|
|
raise ValueError(f"Unknown node type: {node_type}")
|
|||
|
|
|
|||
|
|
async def execute(self, input_data: Dict[str, Any]) -> Dict[str, Any]:
|
|||
|
|
"""执行完整工作流"""
|
|||
|
|
workflow = self.load_workflow()
|
|||
|
|
self.nodes = workflow['nodes']
|
|||
|
|
self.edges = workflow['edges']
|
|||
|
|
|
|||
|
|
# 构建执行图
|
|||
|
|
execution_graph = self.build_execution_graph()
|
|||
|
|
|
|||
|
|
# 按拓扑顺序执行
|
|||
|
|
results = {}
|
|||
|
|
node_outputs = {'start': input_data}
|
|||
|
|
|
|||
|
|
for node_id in execution_graph:
|
|||
|
|
node = self.get_node_by_id(node_id)
|
|||
|
|
node_input = self.get_node_input(node_id, node_outputs)
|
|||
|
|
result = await self.execute_node(node, node_input)
|
|||
|
|
results[node_id] = result
|
|||
|
|
node_outputs[node_id] = result['output']
|
|||
|
|
|
|||
|
|
return results
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 12.2 工作流编辑器(Vue 3)
|
|||
|
|
|
|||
|
|
```vue
|
|||
|
|
<!-- src/components/WorkflowEditor/WorkflowEditor.vue -->
|
|||
|
|
<template>
|
|||
|
|
<div class="workflow-editor">
|
|||
|
|
<VueFlow
|
|||
|
|
v-model="nodes"
|
|||
|
|
v-model:edges="edges"
|
|||
|
|
:node-types="nodeTypes"
|
|||
|
|
@node-click="onNodeClick"
|
|||
|
|
>
|
|||
|
|
<Background />
|
|||
|
|
<Controls />
|
|||
|
|
<MiniMap />
|
|||
|
|
</VueFlow>
|
|||
|
|
|
|||
|
|
<NodeConfigPanel
|
|||
|
|
v-if="selectedNode"
|
|||
|
|
:node="selectedNode"
|
|||
|
|
@save="handleNodeSave"
|
|||
|
|
@close="selectedNode = null"
|
|||
|
|
/>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup lang="ts">
|
|||
|
|
import { ref } from 'vue'
|
|||
|
|
import { VueFlow, useVueFlow, Background, Controls, MiniMap } from '@vue-flow/core'
|
|||
|
|
import NodeConfigPanel from './NodeConfigPanel.vue'
|
|||
|
|
import { useWorkflowStore } from '@/stores/workflow'
|
|||
|
|
|
|||
|
|
const workflowStore = useWorkflowStore()
|
|||
|
|
const { nodes, edges } = useVueFlow()
|
|||
|
|
const selectedNode = ref(null)
|
|||
|
|
|
|||
|
|
const nodeTypes = {
|
|||
|
|
start: StartNode,
|
|||
|
|
template: TemplateNode,
|
|||
|
|
condition: ConditionNode,
|
|||
|
|
data: DataNode,
|
|||
|
|
agent: AgentNode,
|
|||
|
|
end: EndNode
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const onNodeClick = (event: NodeClickEvent) => {
|
|||
|
|
selectedNode.value = event.node
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const handleNodeSave = (nodeData: any) => {
|
|||
|
|
workflowStore.updateNode(nodeData)
|
|||
|
|
selectedNode.value = null
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 12.3 FastAPI工作流API
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# app/api/workflows.py
|
|||
|
|
from fastapi import APIRouter, Depends, WebSocket
|
|||
|
|
from sqlalchemy.orm import Session
|
|||
|
|
from app.core.database import get_db
|
|||
|
|
from app.services.workflow_engine import WorkflowEngine
|
|||
|
|
from app.tasks.workflow_tasks import execute_workflow_task
|
|||
|
|
from app.models.workflow import Workflow
|
|||
|
|
|
|||
|
|
router = APIRouter(prefix="/api/workflows", tags=["workflows"])
|
|||
|
|
|
|||
|
|
@router.post("/")
|
|||
|
|
async def create_workflow(workflow_data: dict, db: Session = Depends(get_db)):
|
|||
|
|
"""创建工作流"""
|
|||
|
|
workflow = Workflow(**workflow_data)
|
|||
|
|
db.add(workflow)
|
|||
|
|
db.commit()
|
|||
|
|
return {"id": workflow.id, "status": "created"}
|
|||
|
|
|
|||
|
|
@router.post("/{workflow_id}/execute")
|
|||
|
|
async def execute_workflow(workflow_id: str, input_data: dict, db: Session = Depends(get_db)):
|
|||
|
|
"""执行工作流"""
|
|||
|
|
task = execute_workflow_task.delay(workflow_id, input_data)
|
|||
|
|
return {"task_id": task.id, "status": "pending"}
|
|||
|
|
|
|||
|
|
@router.get("/executions/{task_id}")
|
|||
|
|
async def get_execution_status(task_id: str):
|
|||
|
|
"""获取执行状态"""
|
|||
|
|
from app.core.celery_app import celery_app
|
|||
|
|
task = celery_app.AsyncResult(task_id)
|
|||
|
|
return {
|
|||
|
|
"task_id": task_id,
|
|||
|
|
"status": task.status,
|
|||
|
|
"result": task.result if task.ready() else None
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@router.websocket("/executions/{task_id}/ws")
|
|||
|
|
async def websocket_execution_status(websocket: WebSocket, task_id: str):
|
|||
|
|
"""WebSocket实时推送执行状态"""
|
|||
|
|
await websocket.accept()
|
|||
|
|
while True:
|
|||
|
|
status = get_task_status(task_id)
|
|||
|
|
await websocket.send_json(status)
|
|||
|
|
await asyncio.sleep(1)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 12.4 Celery任务定义
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# app/tasks/workflow_tasks.py
|
|||
|
|
from celery import Task
|
|||
|
|
from app.core.celery_app import celery_app
|
|||
|
|
from app.services.workflow_engine import WorkflowEngine
|
|||
|
|
from app.websocket.manager import WebSocketManager
|
|||
|
|
|
|||
|
|
@celery_app.task(bind=True)
|
|||
|
|
def execute_workflow_task(self, workflow_id: str, input_data: dict):
|
|||
|
|
"""执行工作流任务"""
|
|||
|
|
try:
|
|||
|
|
engine = WorkflowEngine(workflow_id)
|
|||
|
|
|
|||
|
|
# 更新任务状态
|
|||
|
|
self.update_state(state='PROGRESS', meta={'progress': 0})
|
|||
|
|
|
|||
|
|
# 执行工作流
|
|||
|
|
result = asyncio.run(engine.execute(input_data))
|
|||
|
|
|
|||
|
|
# 通过WebSocket推送结果
|
|||
|
|
WebSocketManager.broadcast(workflow_id, {
|
|||
|
|
'status': 'completed',
|
|||
|
|
'result': result
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
return result
|
|||
|
|
except Exception as e:
|
|||
|
|
# 错误处理
|
|||
|
|
WebSocketManager.broadcast(workflow_id, {
|
|||
|
|
'status': 'failed',
|
|||
|
|
'error': str(e)
|
|||
|
|
})
|
|||
|
|
raise
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 12.5 常见问题解决
|
|||
|
|
|
|||
|
|
#### 工作流执行超时
|
|||
|
|
- 使用 Celery 异步任务处理
|
|||
|
|
- 增加任务超时时间配置
|
|||
|
|
- 优化节点执行逻辑
|
|||
|
|
- 实现任务分片执行
|
|||
|
|
|
|||
|
|
#### WebSocket 连接断开
|
|||
|
|
- 实现自动重连机制
|
|||
|
|
- 使用心跳检测保持连接
|
|||
|
|
- 增加连接池管理
|
|||
|
|
- 处理网络异常情况
|
|||
|
|
|
|||
|
|
#### 前端性能问题
|
|||
|
|
- 使用虚拟滚动
|
|||
|
|
- 实现节点懒加载
|
|||
|
|
- 优化 Vue Flow 渲染
|
|||
|
|
- 使用 Web Workers 处理计算
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十三、成本估算
|
|||
|
|
|
|||
|
|
### 13.1 开发成本
|
|||
|
|
- 开发人员: 3-5人
|
|||
|
|
- 开发周期: 4-6个月
|
|||
|
|
- 测试人员: 1-2人
|
|||
|
|
|
|||
|
|
### 13.2 基础设施成本 (月)
|
|||
|
|
- 云服务器: $200-500
|
|||
|
|
- 数据库: $100-300
|
|||
|
|
- 存储: $50-150
|
|||
|
|
- CDN: $50-100
|
|||
|
|
- 监控服务: $50-100
|
|||
|
|
- **总计**: $450-1150/月
|
|||
|
|
|
|||
|
|
### 13.3 API调用成本
|
|||
|
|
- 根据实际使用量计算
|
|||
|
|
- 建议设置使用限额和告警
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十四、后续规划
|
|||
|
|
|
|||
|
|
### 14.1 功能扩展
|
|||
|
|
- AI模型微调
|
|||
|
|
- 向量数据库集成(ChromaDB)
|
|||
|
|
- RAG框架集成(LlamaIndex)
|
|||
|
|
- 知识库管理
|
|||
|
|
- 多模态支持(图像、语音)
|
|||
|
|
- 移动端应用
|
|||
|
|
|
|||
|
|
### 14.2 商业化
|
|||
|
|
- 免费版(基础功能)
|
|||
|
|
- 专业版(高级功能)
|
|||
|
|
- 企业版(私有部署、定制开发)
|
|||
|
|
- 按使用量计费
|
|||
|
|
|
|||
|
|
### 14.3 生态建设
|
|||
|
|
- 开发者社区
|
|||
|
|
- 插件市场
|
|||
|
|
- 模板库
|
|||
|
|
- 教程和文档
|
|||
|
|
- 技术博客
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十五、参考资料
|
|||
|
|
|
|||
|
|
### 15.1 相关项目
|
|||
|
|
- LangChain: LLM应用开发框架
|
|||
|
|
- AutoGPT: 自主智能体
|
|||
|
|
- n8n: 工作流自动化工具
|
|||
|
|
- Zapier: 自动化平台
|
|||
|
|
|
|||
|
|
### 15.2 技术文档
|
|||
|
|
- Vue Flow: https://vueflow.dev/
|
|||
|
|
- FastAPI: https://fastapi.tiangolo.com/
|
|||
|
|
- LangChain: https://python.langchain.com/
|
|||
|
|
- PostgreSQL: https://www.postgresql.org/docs/
|
|||
|
|
- Docker: https://docs.docker.com/
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**文档版本**: v2.0(优化版)
|
|||
|
|
**创建日期**: 2024年
|
|||
|
|
**最后更新**: 2024年
|
|||
|
|
**维护团队**: 开发团队
|