Home
Softono
i

itwanger

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
1

Software by itwanger

PaiAgent
Open Source

PaiAgent

<div align="center"> # PaiAgent **䌁䞚级 AI 工䜜流可视化猖排平台** 通过拖拜匏界面快速构建、猖排和执行 AI 工䜜流让 AI 胜力组合曎简单 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Java](https://img.shields.io/badge/Java-21+-orange.svg)](https://www.oracle.com/java/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4.1-brightgreen.svg)](https://spring.io/projects/spring-boot) [![Spring AI](https://img.shields.io/badge/Spring%20AI-1.0.0--M5-green.svg)](https://spring.io/projects/spring-ai) [![Spring AI Alibaba](https://img.shields.io/badge/Spring%20AI%20Alibaba-1.0.0--M6.1-orange.svg)](https://java2ai.com) [![LangGraph4j](https://img.shields.io/badge/LangGraph4j-1.8.0--beta3-purple.svg)](https://github.com/bsorrentino/langgraph4j) [![React](https://img.shields.io/badge/React-18.x-61dafb.svg)](https://reactjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)](https://www.typescriptlang.org/) [快速匀始](#-快速匀始) • [功胜特性](#-栞心特性) • [技术架构](#-技术架构) • [䜿甚文档](./USER_GUIDE.md) • [匀发进床](./PROGRESS.md) </div> --- ## 📖 项目简介 PaiAgent 是䞀䞪**䌁䞚级的 AI 工䜜流可视化猖排平台**让 AI 胜力的组合和调床变埗简单高效。通过盎观的拖拜匏界面匀发者和䞚务人员郜胜快速构建倍杂的 AI 倄理流皋无需猖写代码即可实现倚种倧暡型的协同工䜜。 ![PaiAgent架构](https://cdn.tobebetterjavaer.com/paicoding/README-20576c3dc7944a46b135996af79ffa59.png) ![PaiAgent工䜜流绘制](https://cdn.tobebetterjavaer.com/paicoding/README-4dd41b743f9c4ecda3bbc91e9e59f396.png) ![SSE实时反銈](image/README-6e538662bb834dbcad888ef065d28bea.png) ![架构囟](https://cdn.tobebetterjavaer.com/paicoding/README-d98a32fb37d047e6ac657547b53c4935.png) ![Harness䜓现](https://cdn.paicoding.com/stutymore/harness-engineering-review-20260331170106.png) ### 💡 䞺什么选择 PaiAgent - **🎯 零代码猖排**可视化拖拜界面无需猖皋即可构建倍杂 AI 工䜜流 - **🚀 双匕擎驱劚**自研 DAG 匕擎 + LangGraph4j 状态囟匕擎按需切换兌顟简掁䞎倍杂场景 - **🔌 倚暡型统䞀**基于 Spring AI 框架统䞀接入 OpenAI、DeepSeek、通义千问等䞻流倧暡型 - **🧠 Skills 技胜系统**内眮提瀺词工皋技胜框架支持 YAML 前猀声明匏技胜定义䞉级析进匏加蜜 - **🛠 灵掻扩展**基于插件化讟计蜻束匀发自定义节点满足䞪性化需求 - **🐛 实时调试**内眮调试面板支持 SSE 流匏蟓出可视化执行过皋 - **📊 匀箱即甚**完敎的前后端解决方案快速郚眲到生产环境 ### 项目教皋 ![](https://cdn.tobebetterjavaer.com/paicoding/README-e53485e802924c61b63483b19360299b.png) 我已经攟到技术掟䞊了[点击这里](https://paicoding.com/column/14/1)查看诊细教皋限时免莹。 ![](https://cdn.tobebetterjavaer.com/paicoding/README-e09eccf1dfde4316b17fecc069abd082.png) 第䞀期我曎新了五篇教皋有想孊习的同孊可以跟着这䞪项目冲。 - [搭建PaiAgent脚手架](https://paicoding.com/column/14/1) - [节点配眮](https://paicoding.com/column/14/2) - [LLM节点匀发](https://paicoding.com/column/14/3) - [超拟人音频节点](https://paicoding.com/column/14/4) - [工䜜流实时掚送](https://paicoding.com/column/14/5) 第二期我曎新了䞉篇教皋分别是写简历、面试题和LangGraph4J。 - [写简历](https://paicoding.com/column/14/6) - [面试题](https://paicoding.com/column/14/7) - [LangGraph4J](https://paicoding.com/column/14/8) ## ✹ 栞心特性 ### 可视化流皋猖蟑噚 基于 ReactFlow 构建的䞓䞚流皋囟猖蟑噚支持节点拖拜、连线配眮、参数猖蟑等完敎功胜。 ### 倚倧暡型节点支持 基于 **Spring AI + Spring AI Alibaba** 框架统䞀接入 - **OpenAI 节点**GPT-5 等暡型Spring AI OpenAI 接口 - **DeepSeek 节点**囜产倧暡型OpenAI 兌容接口 - **通义千问节点**阿里云千问系列Spring AI Alibaba DashScope 原生支持 - **智谱 AI 节点**GLM 系列暡型OpenAI 兌容接口 - **AIPing 节点**第䞉方暡型代理OpenAI 兌容接口 ### 工具节点生态 - **TTS 音频合成**支持通义 Qwen3 TTS 䞎阶跃星蟰 StepAudio 的超拟人语音生成 - **蟓入/蟓出节点**灵掻的数据蟓入蟓出 - **自定义扩展**基于统䞀接口匀发䞓属节点 ### DAG 工䜜流匕擎 - **拓扑排序**基于 Kahn 算法的节点调床 - **埪环检测**DFS 深床䌘先搜玢防止死埪环 - **数据流蜬**节点闎智胜数据䌠递机制 - **执行监控**完敎的执行日志和结果记圕 ### LangGraph4j 状态囟匕擎新增 - **状态囟猖排**基于 LangGraph4j 的 StateGraph 构建倍杂工䜜流支持条件分支䞎劚态路由 - **双匕擎切换**通过 EngineSelector 按 `engineType` 字段自劚路由到 DAG 或 LangGraph 匕擎向后兌容 - **匂步节点执行**NodeAdapter 将现有 NodeExecutor 适配䞺 AsyncNodeAction无需重写䞚务逻蟑 - **状态管理**StateManager 统䞀管理工䜜流䞊䞋文支持 inputData、nodeOutputs、globalContext - **事件回调**执行过皋䞭觊发 ExecutionEvent实时反銈每䞪节点的启劚、成功和匂垞 ### Skills 技胜系统新增 - **声明匏技胜定义**通过 SKILL.md + YAML Frontmatter 定义技胜名称、描述和执行规则 - **䞉级析进匏加蜜**摘芁名称+描述→ 诊情完敎 SKILL.md→ 匕甚文档reference 子目圕按需加蜜节省 Token - **技胜泚册䞭心**SkillRegistry 应甚启劚时自劚扫描 classpath 和文件系统猓存到 ConcurrentHashMap - **LLM Function 集成**通过 LoadSkillDetailFunction / LoadSkillReferenceFunction 暎露䞺 Spring AI FunctionCallback让倧暡型自䞻调甚技胜 - **REST API 支持**提䟛技胜列衚查询、诊情获取、匕甚文档加蜜等接口 - **前端技胜选择噚**SkillSelector 组件支持圚工䜜流䞭选择和应甚技胜 ## 🎯 应甚场景 | 场景类别 | 具䜓应甚 | 适甚对象 | |---------|---------|----------| | 📝 内容生成 | 批量文章生成、倚语蚀翻译、内容改写涊色 | 内容创䜜者、营销团队 | | 💬 智胜客服 | 倚蜮对话流皋、意囟识别䞎智胜响应 | 客服团队、产品经理 | | 📊 数据倄理 | 文本分析、信息抜取、数据枅掗蜬换 | 数据分析垈、研发团队 | | 🎵 音视频倄理 | 语音合成、字幕生成、音频蜬写 | 内容团队、教育行䞚 | | ⚙ 流皋自劚化 | 报告生成、邮件自劚回倍、定时任务 | 运营团队、䌁䞚甚户 | ## 🏗 技术架构 ### 系统架构 ``` ┌─────────────────────────────────────────────────────────┐ │ 前端层 (Frontend) │ │ React 18 + TypeScript + ReactFlow + Ant Design │ │ • 可视化猖蟑噚 • 节点面板 • 调试工具 │ └────────────────────┬────────────────────────────────────┘ │ REST API / SSE ┌────────────────────┮────────────────────────────────────┐ │ 应甚层 (Backend) │ │ Spring Boot 3.4.1 + Java 21 │ │ • Controller • Service • Interceptor │ └────────────────────┬────────────────────────────────────┘ │ ┌────────────────────┮────────────────────────────────────┐ │ 栞心匕擎层 (Engine) │ │ • EngineSelector: 匕擎路由DAG / LangGraph │ │ • DAGParser: 拓扑排序 + 埪环检测 │ │ • LangGraph4j: 状态囟猖排 + 条件路由 │ │ • SkillRegistry: 技胜泚册䞭心 + 析进匏加蜜 │ │ • NodeExecutor: 节点执行噚工厂 │ └────────────────────┬────────────────────────────────────┘ │ ┌────────────────────┮────────────────────────────────────┐ │ AI 暡型层 (Spring AI) │ │ • Spring AI: OpenAI/DeepSeek/智谱 等兌容接口 │ │ • Spring AI Alibaba: 通义千问 DashScope 原生支持 │ │ • ChatClientFactory: 统䞀的 ChatClient 劚态工厂 │ └────────────────────┬────────────────────────────────────┘ │ ┌────────────────────┮────────────────────────────────────┐ │ 数据层 (Data & Storage) │ │ • MySQL: 工䜜流配眮、执行记圕 │ │ • MinIO: 文件存傚 (可选) │ └─────────────────────────────────────────────────────────┘ ``` ### 技术栈诊情 <table> <tr> <td><b>层级</b></td> <td><b>技术选型</b></td> <td><b>版本芁求</b></td> <td><b>诎明</b></td> </tr> <tr> <td rowspan="6"><b>前端</b></td> <td>React</td> <td>18.x</td> <td>现代化 UI 框架</td> </tr> <tr> <td>TypeScript</td> <td>5.x</td> <td>类型安党保障</td> </tr> <tr> <td>Vite</td> <td>5.x</td> <td>高性胜构建工具</td> </tr> <tr> <td>ReactFlow</td> <td>最新版</td> <td>䞓䞚流皋囟库</td> </tr> <tr> <td>Ant Design + Tailwind CSS</td> <td>-</td> <td>䌁䞚级 UI 组件</td> </tr> <tr> <td>Zustand</td> <td>最新版</td> <td>蜻量级状态管理</td> </tr> <tr> <td rowspan="6"><b>后端</b></td> <td>Spring Boot</td> <td>3.4.1</td> <td>䌁䞚级 Java 框架</td> </tr> <tr> <td>Java</td> <td>21+</td> <td>LTS 长期支持版本</td> </tr> <tr> <td>MyBatis-Plus</td> <td>3.5.5</td> <td>增区版 ORM 框架</td> </tr> <tr> <td>Spring AI</td> <td>1.0.0-M5</td> <td>AI 暡型统䞀调甚框架</td> </tr> <tr> <td>Spring AI Alibaba</td> <td>1.0.0-M6.1</td> <td>通义千问 DashScope 原生支持</td> </tr> <tr> <td>MySQL</td> <td>8.0+</td> <td>关系型数据库</td> </tr> <tr> <td>FastJSON2</td> <td>最新版</td> <td>高性胜 JSON 库</td> </tr> <tr> <td>MinIO</td> <td>可选</td> <td>对象存傚服务</td> </tr> <tr> <td rowspan="7"><b>栞心匕擎</b></td> <td>自研 DAG 匕擎</td> <td>-</td> <td>工䜜流猖排栞心拓扑排序 + 埪环检测</td> </tr> <tr> <td>LangGraph4j Core</td> <td>1.1.5</td> <td>状态囟工䜜流匕擎</td> </tr> <tr> <td>LangGraph4j Spring AI</td> <td>1.8.0-beta3</td> <td>LangGraph4j 侎 Spring AI 集成桥接</td> </tr> <tr> <td>Skills 技胜系统</td> <td>-</td> <td>声明匏提瀺词工皋框架</td> </tr> <tr> <td>EngineSelector</td> <td>-</td> <td>双匕擎劚态路由选择</td> </tr> <tr> <td>Spring AI ChatClient</td> <td>-</td> <td>统䞀 AI 暡型调甚接口</td> </tr> <tr> <td>ChatClientFactory</td> <td>-</td> <td>劚态创建䞍同暡型客户端</td> </tr> </table> ## 📁 项目结构 ``` PaiAgent-one/ ├── backend/ # Spring Boot 后端服务 │ ├── src/main/ │ │ ├── java/com/paiagent/ │ │ │ ├── engine/ # 🎯 工䜜流匕擎栞心 │ │ │ │ ├── WorkflowEngine.java # 工䜜流猖排匕擎 │ │ │ │ ├── EngineSelector.java # 双匕擎路由选择噚 │ │ │ │ ├── dag/DAGParser.java # 拓扑排序+埪环检测 │ │ │ │ ├── langgraph/ # 🆕 LangGraph4j 匕擎 │ │ │ │ │ ├── LangGraphWorkflowEngine.java # LangGraph 执行匕擎 │ │ │ │ │ ├── WorkflowState.java # 状态暡型 │ │ │ │ │ ├── builder/GraphBuilder.java # StateGraph 构建噚 │ │ │ │ │ ├── adapter/NodeAdapter.java # AsyncNodeAction 适配噚 │ │ │ │ │ └── state/StateManager.java # 状态管理噚 │ │ │ │ ├── skill/ # 🆕 Skills 技胜系统 │ │ │ │ │ ├── Skill.java # 技胜数据暡型 │ │ │ │ │ ├── SkillRegistry.java # 技胜泚册䞭心 │ │ │ │ │ ├── SkillLoader.java # SKILL.md 解析噚 │ │ │ │ │ ├── LoadSkillDetailFunction.java # FunctionCallback: 加蜜诊情 │ │ │ │ │ └── LoadSkillReferenceFunction.java # FunctionCallback: 加蜜匕甚 │ │ │ │ ├── llm/ # LLM 调甚层Spring AI │ │ │ │ │ ├── ChatClientFactory.java # ChatClient 劚态工厂 │ │ │ │ │ ├── PromptTemplateService.java # 提瀺词暡板倄理 │ │ │ │ │ └── LLMNodeConfig.java # LLM 节点配眮 │ │ │ │ ├── executor/ # 节点执行噚 │ │ │ │ │ ├── NodeExecutor.java # 执行噚接口 │ │ │ │ │ ├── NodeExecutorFactory.java # 工厂暡匏 │ │ │ │ │ └── impl/ # 具䜓实现 │ │ │ │ │ ├── AbstractLLMNodeExecutor.java # LLM 抜象基类 │ │ │ │ │ ├── InputNodeExecutor.java │ │ │ │ │ ├── OutputNodeExecutor.java │ │ │ │ │ ├── OpenAINodeExecutor.java │ │ │ │ │ ├── DeepSeekNodeExecutor.java │ │ │ │ │ ├── QwenNodeExecutor.java │ │ │ │ │ ├── ZhiPuNodeExecutor.java │ │ │ │ │ ├── AIPingNodeExecutor.java │ │ │ │ │ └── TTSNodeExecutor.java │ │ │ │ └── model/ # 数据暡型 │ │ │ ├── controller/ # REST API 接口层 │ │ │ ├── service/ # 䞚务逻蟑层 │ │ │ ├── mapper/ # MyBatis-Plus 数据访问层 │ │ │ ├── entity/ # 数据库实䜓 │ │ │ ├── dto/ # 数据䌠蟓对象 │ │ │ ├── config/ # 配眮类 │ │ │ ├── interceptor/ # 拊截噚讀证 │ │ │ └── common/ # 通甚工具 │ │ └── resources/ │ │ ├── application.yml # 应甚配眮 │ │ ├── schema.sql # 数据库初始化脚本 │ │ └── skills/ # 🆕 技胜资源目圕 │ │ └── ai-podcast/ # 瀺䟋技胜AI 播客脚本生成 │ │ ├── SKILL.md # 技胜定义YAML + Markdown │ │ └── reference/ # 匕甚文档 │ │ ├── script-template.md │ │ └── voice-guide.md │ └── pom.xml # Maven 䟝赖配眮 │ ├── frontend/ # React 前端应甚 │ ├── src/ │ │ ├── components/ # 🎚 栞心组件 │ │ │ ├── FlowCanvas.tsx # ReactFlow 流皋猖蟑噚 │ │ │ ├── NodePanel.tsx # 可拖拜节点面板 │ │ │ ├── DebugDrawer.tsx # 调试抜屉面板 │ │ │ ├── AudioPlayer.tsx # 音频播攟噚 │ │ │ └── SkillSelector.tsx # 🆕 技胜选择噚 │ │ ├── pages/ # 页面组件 │ │ │ ├── LoginPage.tsx # 登圕页 │ │ │ ├── MainPage.tsx # 工䜜流列衚页 │ │ │ └── EditorPage.tsx # 工䜜流猖蟑噚页 │ │ ├── store/ # Zustand 状态管理 │ │ │ ├── authStore.ts # 甚户讀证状态 │ │ │ └── workflowStore.ts # 工䜜流猖蟑状态 │ │ ├── api/ # API 调甚层 │ │ ├── utils/ # 工具凜数 │ │ └── App.tsx # 应甚入口 │ ├── package.json # NPM 䟝赖配眮 │ └── vite.config.ts # Vite 构建配眮 │ ├── docs/ # 📚 项目文档 │ ├── README.md # 项目抂览圓前文件 │ ├── USER_GUIDE.md # 甚户䜿甚指南 │ ├── PROGRESS.md # 匀发进床远螪 │ ├── SUMMARY.md # 项目技术总结 │ ├── AGENTS.md # AI Agent 匀发指匕 │ └── mermaid.md # 架构可视化囟衚 │ └── .gitignore # Git 応略配眮 ``` ## 🚀 快速匀始 ### 环境芁求 圚匀始之前请确保悚的匀发环境满足以䞋芁求 | 工具 | 版本芁求 | 诎明 | |------|---------|------| | Java | 21+ | 掚荐䜿甚 OpenJDK 或 Oracle JDK | | Node.js | 18+ | 包含 npm 包管理噚 | | MySQL | 8.0+ | 数据库服务 | | Maven | 3.8+ | Java 项目构建工具 | ### 䞀键启劚指南 #### 步骀 1克隆项目 ```bash git clone https://github.com/yourusername/PaiAgent-one.git cd PaiAgent-one ``` #### 步骀 2配眮数据库 **2.1 创建数据库** ```bash mysql -u root -p ``` ```sql CREATE DATABASE paiagent DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` **2.2 富入初始化脚本** ```bash mysql -u root -p paiagent < backend/src/main/resources/schema.sql ``` **2.3 配眮数据库连接环境变量方匏** 本项目䜿甚环境变量管理敏感配眮**请勿将真实凭证提亀到 Git**。 倍制后端环境变量暡板并猖蟑 ```bash cd backend cp .env.example .env ``` 猖蟑 `backend/.env` 文件讟眮䜠的数据库密码和其他配眮 ```bash # 必填数据库密码生产环境必须䜿甚区密码 MYSQL_PASSWORD=your_strong_password_here # 其他配眮按需修改 MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USERNAME=root MYSQL_DATABASE=paiagent # JWT 密钥生产环境必须修改 JWT_SECRET=your_jwt_secret_key_minimum_32_characters # MinIO 凭证劂䜿甚对象存傚 MINIO_ACCESS_KEY=your_access_key MINIO_SECRET_KEY=your_secret_key ``` > **安党提瀺** > - `.env` 文件已加入 `.gitignore`䞍䌚提亀到版本库 > - `.env.example` 是配眮暡板䞍包含真实敏感信息 > - 生产环境建议通过系统环境变量或配眮䞭心泚入 #### 步骀 3启劚后端服务 ```bash cd backend ./mvnw spring-boot:run ``` ✅ 后端服务启劚成功后悚将看到 ``` Started PaiAgentApplication in X.XXX seconds ``` 后端服务地址`http://localhost:8084`可圚 `.env` 䞭通过 `SERVER_PORT` 修改 #### 步骀 4启劚前端服务 打匀新的终端窗口 ```bash cd frontend cp .env.example .env.local ``` 劂需修改前端连接的后端地址猖蟑 `frontend/.env.local` ```bash VITE_API_BASE_URL=http://localhost:8084 ``` 然后启劚前端 ```bash npm install npm run dev ``` ✅ 前端服务启劚成功后悚将看到 ``` ➜ Local: http://localhost:5173/ ``` #### 步骀 5銖次登圕 **匀发环境默讀莊户**可圚 `backend/.env` 䞭修改 | 配眮项 | 默讀倌 | 诎明 | |--------|--------|------| | 甚户名 | `admin` | 通过 `APP_AUTH_DEFAULT_USERNAME` 配眮 | | 密码 | `admin123` | 通过 `APP_AUTH_DEFAULT_PASSWORD` 配眮 | > **⚠ 安党提瀺** > - 默讀莊户仅甚于匀发测试生产环境必须修改或犁甚 > - 銖次登圕后请立即修改密码功胜埅实现 > - 可通过环境变量 `APP_AUTH_DEFAULT_USERNAME` 和 `APP_AUTH_DEFAULT_PASSWORD` 自定义 > - 将䞀䞪变量郜讟䞺空倌可犁甚默讀莊户需配合甚户泚册功胜䜿甚 #### 步骀 6访问应甚 - 后端端口圚 [application.yml](/Users/itwanger/Documents/GitHub/PaiAgent-one/backend/src/main/resources/application.yml#L1) 䞭配眮圓前默讀倌是 `8084` - 前端通过 Vite 环境变量 `VITE_API_BASE_URL` 连接后端默讀瀺䟋见 [`frontend/.env.example`](/Users/itwanger/Documents/GitHub/PaiAgent-one/frontend/.env.example) - 前端䞍胜盎接读取 Spring Boot 的 `application.yml`所以劂果后端端口变化需芁同步调敎 `frontend/.env.local` ### 🎬 快速挔瀺 创建悚的第䞀䞪工䜜流 1. **登圕系统**䜿甚默讀凭证登圕 2. **创建工䜜流**点击「新建工䜜流」按钮 3. **拖拜节点**从巊䟧节点面板拖拜「蟓入节点」→「OpenAI节点」→「蟓出节点」到画垃 4. **连接节点**按顺序连接各䞪节点 5. **配眮参数**点击 OpenAI 节点配眮 API Key 和提瀺词 6. **执行调试**点击「调试」按钮查看执行结果 瀺䟋文本蜬语音工䜜流 ``` [蟓入节点] → [OpenAI节点] → [TTS节点] → [蟓出节点] 蟓入文本 生成脚本 语音合成 播攟音频 ``` ## 🗺 匀发路线囟 ### ✅ 已完成功胜 (v1.0) - ✅ 基础架构搭建Spring Boot + React + TypeScript - ✅ 甚户讀证系统Token 讀证 + 拊截噚 - ✅ 可视化流皋猖蟑噚ReactFlow 集成 - ✅ DAG 工䜜流匕擎拓扑排序 + 埪环检测 - ✅ **Spring AI 框架集成**v1.0.0-M5 - 统䞀的 ChatClient 调甚接口 - 支持 OpenAI 兌容协议OpenAI/DeepSeek/智谱/AIPing - ✅ **Spring AI Alibaba 集成**v1.0.0-M6.1 - 通义千问 DashScope 原生支持 - 阿里云 Qwen 系列暡型接入 - ✅ 倚倧暡型节点支持 - OpenAI 节点GPT 系列 - DeepSeek 节点 - 通义千问节点 - 智谱 AI 节点 - AIPing 节点 - ✅ 工具节点实现 - 蟓入/蟓出节点 - TTS 音频合成节点 - 音频播攟噚组件 - ✅ SSE 实时流匏蟓出调试抜屉 + 日志蟓出 + 结果展瀺 - ✅ 工䜜流 CRUD 管理 - ✅ 执行记圕查询 - ✅ **LangGraph4j 状态囟匕擎集成** - 基于 LangGraph4j StateGraph 的第二执行匕擎 - EngineSelector 双匕擎路由支持按工䜜流切换 - NodeAdapter 适配噚零改劚倍甚已有节点执行噚 - StateManager 统䞀状态管理 - ✅ **Skills 技胜系统** - YAML Frontmatter + Markdown 声明匏技胜定义 - SkillRegistry 自劚扫描加蜜 + ConcurrentHashMap 猓存 - 䞉级析进匏加蜜摘芁→诊情→匕甚文档 - Spring AI FunctionCallback 集成LLM 可自䞻调甚技胜 - 前端 SkillSelector 技胜选择噚组件 - REST API 支持技胜列衚、诊情、匕甚文档查询 **圓前完成床98%** 🎉 ### 🚧 规划䞭功胜 (v1.1 - v2.0) **v1.1 版本近期** - 🔄 条件分支节点IF/ELSE 逻蟑 - 🔁 埪环执行节点FOR/WHILE 埪环 - 📝 曎倚 LLM 节点接入Claude、Gemini、本地暡型 - 🧠 曎倚内眮技胜文档摘芁、代码审查、数据分析等 - 🧪 集成测试完善 - 📊 执行性胜监控 **v1.5 版本䞭期** - 🔗 子工䜜流调甚工䜜流倍甚 - ⏰ 定时任务调床Cron 衚蟟匏 - 📊 工䜜流版本管理Git 风栌 - 🎚 工䜜流暡板垂场 - 🖌 曎倚工具节点囟像倄理、文档解析、Web爬虫 **v2.0 版本远期** - 👥 倚租户䞎权限管理 - 🀝 协䜜䞎分享功胜 - 📈 性胜监控䞎告譊 - 🌍 囜际化支持倚语蚀 - 🔌 插件垂场第䞉方节点 ## 📚 项目文档 | 文档类型 | 文档铟接 | 诎明 | |---------|---------|------| | 📖 䜿甚指南 | [USER_GUIDE.md](./USER_GUIDE.md) | 诊细䜿甚诎明和最䜳实践 | | 📊 匀发进床 | [PROGRESS.md](./PROGRESS.md) | 项目匀发阶段和完成情况 | | 📝 项目总结 | [SUMMARY.md](./SUMMARY.md) | 技术选型和实现总结 | | 📋 完成报告 | [PROJECT_COMPLETION_REPORT.md](./PROJECT_COMPLETION_REPORT.md) | 项目亀付报告 | | 🏗 架构讟计 | [mermaid.md](./mermaid.md) | 系统架构可视化囟衚 | | 🀖 匀发指南 | [AGENTS.md](./AGENTS.md) | AI Agent 匀发指匕 | ## 🔧 栞心功胜诊解 ### 工䜜流猖排 **节点类型** - **蟓入节点**接收倖郚蟓入数据䜜䞺工䜜流的起点 - **蟓出节点**蟓出工䜜流执行结果䜜䞺工䜜流的终点 - **LLM 节点**调甚倧语蚀暡型进行文本生成、理解等任务 - **工具节点**执行特定功胜劂 TTS 语音合成、囟像倄理等 **连线规则** - 节点之闎通过有向蟹连接衚瀺数据流向 - 支持䞀对倚、倚对䞀的连接方匏 - 自劚检测埪环䟝赖防止死锁 ### DAG 匕擎机制 **工䜜流解析流皋** 1. **JSON 解析**将前端配眮解析䞺 WorkflowConfig 对象 2. **拓扑排序**䜿甚 Kahn 算法确定节点执行顺序 3. **埪环检测**DFS 深床䌘先搜玢检测埪环䟝赖 4. **节点调床**按拓扑顺序䟝次执行节点 5. **数据䌠递**䞊枞节点蟓出䜜䞺䞋枞节点蟓入 6. **结果记圕**保存每䞪节点的执行结果和日志 **数据䌠递机制** ```java // 节点执行噚接口 public interface NodeExecutor { Map<String, Object> execute(WorkflowNode node, Map<String, Object> input); } // LLM 节点通过 Spring AI ChatClient 统䞀调甚 ChatClient chatClient = chatClientFactory.createClient(nodeType, apiUrl, apiKey, model, temperature); String response = chatClient.prompt().user(prompt).call().content(); ``` ### LangGraph4j 匕擎机制 **匕擎选择䞎路由** EngineSelector 根据工䜜流的 `engineType` 字段自劚选择执行匕擎默讀䜿甚 DAG 匕擎以确保向后兌容 ```java // 匕擎路由根据 engineType 自劚选择 EngineSelector.execute(workflowConfig); // engineType = "dag" → DAGWorkflowEngine // engineType = "langgraph" → LangGraphWorkflowEngine // engineType = null → DAGWorkflowEngine默讀 ``` **LangGraph4j 执行流皋** 1. **配眮解析**将 WorkflowConfig 䌠入 GraphBuilder 2. **状态囟构建**GraphBuilder 将节点/蟹蜬换䞺 LangGraph4j StateGraph支持条件分支 3. **状态初始化**StateManager 初始化 inputData、nodeOutputs、globalContext 4. **匂步执行**NodeAdapter 将现有 NodeExecutor 适配䞺 AsyncNodeAction倍甚已有䞚务逻蟑 5. **事件驱劚**执行过皋觊发 ExecutionEvent 回调start / success / error 6. **结果收集**汇总所有节点蟓出返回 ExecutionResponse ### Skills 技胜系统诊解 **技胜文件结构** 每䞪技胜是䞀䞪独立目圕包含 SKILL.md 䞻文件和可选的 reference 子目圕 ``` skills/ └── ai-podcast/ ├── SKILL.md # 技胜䞻文件YAML Frontmatter + Markdown └── reference/ # 匕甚文档目圕 ├── script-template.md # 脚本暡板 └── voice-guide.md # 语音风栌指南 ``` **SKILL.md 栌匏瀺䟋** ```yaml --- name: ai-podcast description: 生成䞓䞚播客脚本双人对话圢匏 --- # AI 播客脚本生成 ## 执行规则 1. 生成自然流畅的双人对话 2. 包含匀场癜、䞻䜓内容、Q&A、结束语 ... ``` **䞉级析进匏加蜜** - **第䞀级 - 摘芁**仅加蜜技胜名称和描述甚于列衚展瀺 - **第二级 - 诊情**加蜜完敎 SKILL.md 内容甚于技胜执行 - **第䞉级 - 匕甚**按需加蜜 reference 目圕䞋的文档节省 Token 匀销 **Skills REST API** | 方法 | 路埄 | 诎明 | |------|------|------| | GET | `/api/skills` | 获取所有技胜摘芁列衚 | | GET | `/api/skills/{name}` | 获取指定技胜诊细内容 | | GET | `/api/skills/{name}/references/{ref}` | 获取技胜匕甚文档 | ### 节点扩展匀发 **方匏䞀匀发普通工具节点** 1. **实现 NodeExecutor 接口** ```java public class CustomNodeExecutor implements NodeExecutor { @Override public Map<String, Object> execute(WorkflowNode node, Map<String, Object> input) { // 自定义逻蟑 return output; } } ``` 2. **泚册到工厂** ```java NodeExecutorFactory.register("custom", new CustomNodeExecutor()); ``` **方匏二匀发 LLM 节点掚荐** ```java // 继承 AbstractLLMNodeExecutor自劚获埗 Spring AI 胜力 @Component public class CustomLLMNodeExecutor extends AbstractLLMNodeExecutor { @Override protected String getNodeType() { return "custom_llm"; } } ``` 3. **前端添加节点定义** ```typescript const customNode = { type: 'custom', label: '自定义节点', category: 'tool' }; ``` ## 💌 项目亮点简历版 **项目名称**PaiAgent - 䌁䞚级 AI 工䜜流猖排平台 **项目描述**基于可视化流皋猖蟑噚的 AI Agent 工䜜流平台支持甚户通过拖拜方匏猖排倚种倧暡型DeepSeek、通义千问等和工具节点䜿甚自研 DAG 匕擎按拓扑顺序执行工䜜流实现倍杂 AI 任务的自劚化猖排䞎执行。 **技术栈**Java 21、Spring Boot 3.4.1、Spring AI 1.0.0、LangGraph4j 1.8.0 **栞心职莣** - 基于 Spring AI 框架重构 LLM 通信层采甚工厂暡匏+暡板方法暡匏讟计 ChatClientFactory 劚态工厂和 AbstractLLMNodeExecutor 抜象基类将 5 䞪 LLM 节点执行噚的重倍代码从 800+行粟简至 75 行 - 讟计劚态 ChatClient 创建机制支持运行时根据工䜜流节点配眮apiKey/apiUrl/model劚态实䟋化䞍同厂商的 ChatClient实现倚租户场景䞋每䞪节点独立配眮的胜力 - 抜取 PromptTemplateService 公共服务统䞀倄理 `{{variable}}` 暡板变量替换和䞊䞋枞节点参数匕甚映射支持 input 静态倌和 reference 劚态匕甚䞀种参数类型 - 基于 Spring AI 的 Flux 响应匏流实现 LLM 流匏蟓出通过 SSE 实时掚送生成进床到前端配合现有 ExecutionEvent 事件机制甚户可实时查看 AI 生成过皋 - 集成 LangGraph4j 状态囟匕擎䜜䞺第二执行匕擎讟计 EngineSelector 路由机制实现双匕擎按需切换通过 NodeAdapter 适配噚暡匏将现有节点执行噚桥接䞺 AsyncNodeAction零改劚倍甚党郚䞚务逻蟑 - 讟计并实现 Skills 技胜系统采甚 YAML Frontmatter + Markdown 声明匏定义技胜䞉级析进匏加蜜摘芁→诊情→匕甚文档䌘化 Token 消耗通过 Spring AI FunctionCallback 机制让倧暡型自䞻发现和调甚技胜 ## 🀝 莡献指南 我们欢迎所有圢匏的莡献包括䜆䞍限于 - 🐛 提亀 Bug 报告 - 💡 提出新功胜建议 - 📝 改进文档 - 🔧 提亀代码修倍 - ⭐ Star 项目支持我们 ### 参䞎方匏 1. **Fork 本仓库** 2. **创建特性分支** (`git checkout -b feature/AmazingFeature`) 3. **提亀曎改** (`git commit -m 'Add some AmazingFeature'`) 4. **掚送到分支** (`git push origin feature/AmazingFeature`) 5. **匀启 Pull Request** ### 代码规范 - **后端**遵埪阿里巎巎 Java 匀发手册 - **前端**遵埪 Airbnb React/JSX 风栌指南 - **提亀信息**䜿甚纊定匏提亀Conventional Commits ## 💬 瀟区䞎支持 ### 获取垮助 - 📬 **GitHub Issues**[问题反銈和功胜建议](https://github.com/yourusername/PaiAgent-one/issues) - 💭 **GitHub Discussions**[技术讚论和经验分享](https://github.com/yourusername/PaiAgent-one/discussions) - 📖 **官方文档**查看 [USER_GUIDE.md](./USER_GUIDE.md) 获取完敎䜿甚指南 ### 联系方匏 - **项目绎技者**[@itwanger](https://github.com/itwanger) - **邮箱**项目盞关问题请通过 GitHub Issues 提亀 ## 📄 讞可证 本项目采甚 [MIT License](LICENSE) 匀源协议。 ## 🌟 臎谢 感谢所有䞺本项目做出莡献的匀发者 --- <div align="center"> **劂果这䞪项目对悚有垮助请点击 ⭐ Star 支持我们** [⬆ 回到顶郚](#paiagent-one) </div>

AI Agents Workflow Automation
468 Github Stars