一站式智能体开发与部署平台 | 基于 Spring Boot + Vue 3 + FastAPI
支持智能体创建、知识库 RAG、插件调用、工作流编排和多轮对话
AI Agent 是一个功能完整的智能体应用市场平台,旨在让开发者和企业能够轻松创建、管理、分享和部署自定义 AI 智能体。平台集成了先进的 AI 能力,包括大语言模型(LLM)对话、知识库 RAG 检索、插件系统扩展和可视化工作流编排。
| 功能模块 | 核心能力 | 应用场景 |
|---|---|---|
| 🤖 智能体管理 | 创建、配置、测试、发布智能体 | 客服机器人、知识问答助手、专业领域顾问 |
| 📚 知识库 RAG | 文档上传、分块、向量化、语义检索 | 企业知识库、技术文档问答、政策法规查询 |
| 🔌 插件系统 | OpenAPI/Swagger 导入、Function Calling | API 集成、工具调用、系统互联 |
| 🔄 工作流引擎 | 可视化编排、节点执行、流程控制 | 复杂业务流程、自动化任务、多步骤推理 |
| 💬 多轮对话 | 上下文记忆、流式输出、对话历史 | 连续对话、角色扮演、任务协作 |
| 👥 用户系统 | 注册登录、权限管理、资源隔离 | 多租户、团队协作、资源共享 |
┌─────────────────────────────────────────────────────────────────┐
│ 前端层 (Vue 3) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │智能体管理 │ │知识库管理 │ │工作流编辑器│ │对话界面 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────┬────────────────────────────────────────┘
│ HTTP/REST API
┌────────────────────────▼────────────────────────────────────────┐
│ 应用层 (Spring Boot) │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────┐ │
│ │Agent模块 │ │Knowledge模块│ │Workflow模块│ │Chat模块 │ │
│ ├────────────┤ ├────────────┤ ├────────────┤ ├──────────┤ │
│ │Plugin模块 │ │User/Auth │ │System管理 │ │Role权限 │ │
│ └────────────┘ └────────────┘ └────────────┘ └──────────┘ │
└────────────────────────┬────────────────────────────────────────┘
│ REST API
┌────────────────────────▼────────────────────────────────────────┐
│ AI服务层 (FastAPI) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │LLM对话服务 │ │RAG检索服务 │ │工作流执行引擎 │ │
│ ├──────────────┤ ├──────────────┤ ├──────────────┤ │
│ │文档处理服务 │ │向量化服务 │ │插件执行器 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────────┬────────────────────────────────────────┘
│
┌────────────────┼────────────────┐
│ │ │
┌───────▼────────┐ ┌────▼──────┐ ┌──────▼───────┐
│ MySQL 8.0 │ │ ChromaDB │ │ 通义千问 API │
│ 关系型数据 │ │ 向量存储 │ │ LLM服务 │
└────────────────┘ └───────────┘ └──────────────┘
- 框架: Vue 3.5 + Composition API
- 构建工具: Vite 7.1
- UI组件: Element Plus 2.11
- 路由: Vue Router 4.6
- 状态管理: Pinia 3.0
- HTTP客户端: Axios 1.13
- 样式: CSS3 + Element Plus Variables
- 框架: Spring Boot 3.5.7
- Java版本: JDK 17
- ORM: MyBatis 3.0.3
- 数据库: MySQL 8.0
- 安全认证: Spring Security + JWT
- API文档: Swagger/OpenAPI
- 日志: SLF4J + Logback
- 框架: FastAPI 0.121+
- Python版本: 3.9+
- LLM: 通义千问 API (DashScope)
- 向量数据库: ChromaDB 1.3+
- 文档处理: Python-multipart
- HTTP客户端: httpx 0.26+
- 容器化: Docker + Docker Compose
- 反向代理: Nginx
- 数据库连接池: HikariCP
- 异步任务: ThreadPoolTaskExecutor
AI-Agent/
├── database/ # 数据库脚本
│ ├── schema.sql # 数据库架构概览
│ └── init/
│ ├── init.sql # 核心表:用户、角色、智能体、插件等
│ ├── init_knowledge.sql # 知识库相关表
│ └── init_workflow.sql # 工作流相关表
│
├── springbootapi/ # Spring Boot 后端 API (Java 17)
│ ├── src/main/java/com/example/demo/
│ │ ├── agent/ # 智能体模块 (CRUD、测试、发布)
│ │ ├── chat/ # 对话模块 (多轮对话、历史记录)
│ │ ├── knowledge/ # 知识库模块 (文档管理、RAG)
│ │ ├── plugin/ # 插件模块 (OpenAPI解析、Function Calling)
│ │ ├── workflow/ # 工作流模块 (可视化编排、执行管理)
│ │ ├── user/ # 用户模块 (注册、登录、个人信息)
│ │ ├── auth/ # 认证模块 (JWT生成、验证)
│ │ ├── role/ # 角色模块 (RBAC权限管理)
│ │ ├── permission/ # 权限模块
│ │ ├── system/ # 系统管理模块
│ │ ├── security/ # 安全配置 (Spring Security、JWT Filter)
│ │ ├── common/ # 公共组件 (统一响应、异常处理、错误码)
│ │ └── config/ # 配置类 (CORS、异步、RestTemplate)
│ ├── src/main/resources/
│ │ ├── application.yml # 主配置文件
│ │ ├── application-dev.yml # 开发环境配置
│ │ ├── application-prod.yml # 生产环境配置
│ │ └── mapper/ # MyBatis XML映射文件
│ └── pom.xml
│
├── fastapi/ # Python AI 服务 (Python 3.9+)
│ ├── src/
│ │ ├── main.py # FastAPI 主程序入口
│ │ ├── api/
│ │ │ ├── router.py # API 路由聚合
│ │ │ └── endpoints/
│ │ │ ├── llm.py # LLM对话接口
│ │ │ ├── knowledge.py # 知识库处理接口
│ │ │ └── workflow.py # 工作流执行接口
│ │ ├── services/
│ │ │ ├── llm_service.py # LLM调用、RAG检索、Function Calling
│ │ │ ├── knowledge_service.py # 文档处理、分块、向量化
│ │ │ ├── embedding_service.py # 向量化服务
│ │ │ └── chunk_service.py # 文本分块服务
│ │ ├── utils/
│ │ │ ├── chromadb/ # ChromaDB客户端封装
│ │ │ └── mysql/ # MySQL连接工具
│ │ ├── schemas/ # Pydantic数据模型
│ │ └── core/
│ │ └── config.py # 配置管理
│ ├── requirements.txt
│ └── Dockerfile
│
├── vue/ # Vue 3 前端 (Node 20+)
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ │ ├── HomeView.vue # 首页(智能体列表)
│ │ │ ├── AgentView.vue # 智能体管理
│ │ │ ├── KnowledgeDetailView.vue # 知识库详情
│ │ │ ├── PluginView.vue # 插件管理
│ │ │ ├── WorkflowEditorView.vue # 工作流编辑器
│ │ │ ├── ProfileView.vue # 个人中心
│ │ │ ├── LoginView.vue # 登录
│ │ │ └── RegisterView.vue # 注册
│ │ ├── components/ # 公共组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia状态管理
│ │ ├── api/ # API接口封装
│ │ │ ├── agent.js
│ │ │ ├── chat.js
│ │ │ ├── plugin.js
│ │ │ └── workflow.js
│ │ ├── utils/ # 工具函数
│ │ ├── App.vue
│ │ └── main.js
│ ├── public/ # 静态资源
│ ├── package.json
│ ├── vite.config.js
│ └── Dockerfile
│
├── deploy/ # Docker 部署配置
│ ├── docker-compose.yml # Docker Compose 配置
│ ├── docker-compose.prod.yml # 生产环境配置
│ ├── .env # 环境变量配置
│ ├── Makefile # 部署命令快捷方式
│ └── nginx.conf # Nginx反向代理配置
│
├── docs/ # 项目文档
│ ├── requirements/ # 需求文档
│ ├── design/ # 设计文档
│ ├── week2/ # Week2 插件系统文档
│ ├── week3/ # Week3 知识库RAG文档
│ └── week4/ # Week4 工作流系统文档
│
├── .gitignore
└── README.md # 项目说明文档
| 软件 | 版本要求 | 说明 |
|---|---|---|
| Docker | 20.10+ | 容器运行环境 |
| Docker Compose | 2.0+ | 容器编排工具 |
| Git | 2.0+ | 版本控制 |
# 1. 克隆项目
git clone <repository-url>
cd AI-Agent
# 2. 配置环境变量
cd deploy
cp .env.example .env
# 编辑 .env 文件,配置以下关键参数:
# - DASHSCOPE_API_KEY: 通义千问 API Key
# - DASHSCOPE_BASE_URL: 配置千问URL
# 3. Linux系统下可使用脚本一键启动
chmod +x deploy.sh
# 4. 启动所有服务
docker-compose up -d
# 或者使用Makefile一键启动
make deploy
# 5. 查看服务状态
docker-compose ps
# 6. 查看日志
docker-compose logs -f [service-name]
# 7. 停止项目运行
docker-compose down -v
# 或者
make stop启动后可通过以下地址访问各服务:
| 服务 | 地址 | 说明 |
|---|---|---|
| 前端应用 | http://localhost | Vue 3 SPA 单页应用 |
| 后端 API | http://localhost/api | Spring Boot REST API |
| AI 服务 | http://localhost/fastapi | FastAPI AI服务 |
| 数据库 | localhost:3306 | MySQL 8 (仅内网) |
如需本地开发调试,可参考以下步骤:
1. 后端开发 (Spring Boot)
# 进入后端目录
cd springbootapi
# 配置数据库连接 (修改 application-dev.yml)
# 修改 src/main/resources/application-dev.yml
# 启动项目
./mvnw spring-boot:run -Dspring-boot.run.profiles=dev
# 或使用 IDE(IntelliJ IDEA / Eclipse)导入 Maven 项目并运行后端 API 文档: http://localhost:8070/swagger-ui.html
2. AI服务开发 (FastAPI)
# 进入 AI 服务目录
cd fastapi
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
export DASHSCOPE_API_KEY="your_api_key"
export MYSQL_HOST="localhost"
export MYSQL_DATABASE="ai_agent"
# 启动服务
uvicorn src.main:app --reload --port 8000FastAPI 文档: http://localhost:8000/docs
3. 前端开发 (Vue 3)
# 进入前端目录
cd vue
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建生产版本
npm run build开发服务器: http://localhost:5173
智能体是平台的核心实体,用户可以创建不同角色、能力的AI助手:
功能清单:
- ✅ 创建智能体:配置名称、描述、系统提示词 (System Prompt)
- ✅ 关联知识库:为智能体绑定专属知识源
- ✅ 添加插件:赋予智能体工具调用能力
- ✅ 对话测试:实时测试智能体效果
- ✅ 发布管理:控制智能体的上线状态
数据库表: agents, agent_plugins, agent_knowledge
API 接口:
POST /agent # 创建智能体
GET /agent/{id} # 获取详情
PUT /agent/{id} # 更新智能体
DELETE /agent/{id} # 删除智能体
POST /agent/{id}/plugins # 关联插件
POST /agent/{id}/knowledge # 关联知识库
知识库系统支持文档上传、智能分块、向量化存储和语义检索,为智能体提供外部知识:
完整流程:
用户上传文档
↓
[Spring Boot] 文件存储 + 数据库记录
↓
[FastAPI] 文档处理与分块
├── PDF/Word/Txt 解析
├── 智能分块 (RecursiveTextSplitter)
└── 元数据提取 (文件名、页码等)
↓
[FastAPI] 向量化 (通义千问 text-embedding-v3)
↓
[ChromaDB] 向量存储
↓
[FastAPI] 语义检索 (相似度搜索)
↓
[LLM] RAG 生成回答
功能特性:
- ✅ 支持格式:PDF, DOCX, TXT, Markdown
- ✅ 智能分块:基于语义的递归分块算法
- ✅ 向量存储:ChromaDB 高性能向量数据库
- ✅ 语义检索:Top-K 相似度搜索
- ✅ 元数据过滤:按文档、智能体、时间范围筛选
数据库表: knowledge_bases, documents, document_chunks
配置参数:
CHUNK_SIZE = 500 # 分块大小
CHUNK_OVERLAP = 50 # 分块重叠
TOP_K = 3 # 检索Top K个文档
SIMILARITY_THRESHOLD = 0.7 # 相似度阈值插件系统允许智能体调用外部 API,扩展能力边界(如查天气、查股票、发邮件等):
核心能力:
- ✅ OpenAPI/Swagger 规范解析:自动导入 API 定义
- ✅ Function Calling:LLM 智能决策调用哪个插件
- ✅ 参数验证:基于 JSON Schema 校验参数
- ✅ 插件组管理:支持分组、标签、搜索
插件导入流程:
1. 用户提供 OpenAPI JSON/YAML URL
↓
2. Spring Boot 解析 Swagger 规范
├── 提取 API 基本信息 (title, version, servers)
├── 解析 paths: 所有接口路径
└── 解析 schemas: 参数定义
↓
3. 生成 Function Definitions (OpenAI Format)
↓
4. 存储到数据库 (plugin_group, plugins 表)
↓
5. 智能体关联插件后可在对话中调用
数据库表: plugin_group, plugins
可视化工作流编排器,支持拖拽节点、连线,实现复杂的多步骤 AI 任务自动化:
节点类型:
| 节点类型 | 功能 | 输入 | 输出 |
|---|---|---|---|
| Start | 流程入口 | 用户输入 | 初始变量 |
| LLM | 调用大模型 | Prompt模板 + 变量 | LLM响应文本 |
| Tool | 调用插件工具 | 函数名 + 参数 | 工具返回结果 |
| Knowledge | 检索知识库 | 查询文本 | 相关文档片段 |
| Condition | 条件分支 | 判断表达式 | True/False路径 |
| End | 流程结束 | 最终输出 | - |
执行引擎架构:
Vue 前端编辑器
↓ (提交 nodes + edges JSON)
Spring Boot 接收请求
↓ (转发给 FastAPI)
FastAPI 工作流引擎
├── 解析节点依赖关系
├── 按拓扑排序执行
├── 节点执行器 (LLM/Tool/Knowledge)
└── 变量传递与替换
↓ (返回执行结果)
Spring Boot 记录执行日志
↓
前端展示结果
数据库表: workflows, workflow_executions
支持上下文记忆的智能对话系统,保持会话连续性:
功能特性:
- ✅ 会话管理:创建、查询、删除对话
- ✅ 上下文记忆:自动维护历史消息
- ✅ 流式输出:支持 Server-Sent Events (SSE)
- ✅ RAG增强:自动检索关联知识库
- ✅ 工具调用:支持 Function Calling
对话流程:
用户发送消息
↓
Spring Boot 保存消息到数据库
↓
FastAPI LLM 服务
├── 加载历史对话 (最近N条)
├── 检索知识库 (如已关联)
├── 构建 Prompt (system + history + user + rag)
├── 调用通义千问 API
└── Function Calling (如需要)
↓
流式返回 LLM 响应
↓
Spring Boot 保存助手回复
↓
前端实时展示
数据库表: conversations, conversation_messages
基于 RBAC (Role-Based Access Control) 的权限管理系统:
功能模块:
- ✅ 用户注册/登录:支持邮箱验证码
- ✅ JWT 认证:Token 有效期 24 小时
- ✅ 角色管理:预置角色(管理员、普通用户)
- ✅ 权限管理:细粒度资源访问控制
- ✅ 登录日志:记录登录 IP、时间、设备
认证流程:
用户登录 (username + password)
↓
Spring Security 验证
↓
生成 JWT Token (包含 userId, username, roles)
↓
返回 Token 给前端
↓
前端存储 Token (localStorage)
↓
后续请求携带 Token (Authorization: Bearer <token>)
↓
JwtAuthenticationFilter 验证 Token
↓
提取用户信息并注入 SecurityContext
↓
Controller 获取当前用户
数据库表: users, roles, permissions, user_roles, role_permissions
JWT Token 结构:
{
"sub": "user123",
"username": "zhangsan",
"roles": ["ROLE_USER"],
"iat": 1704067200,
"exp": 1704153600
}| 模块 | 表数量 | 主要表 |
|---|---|---|
| 用户权限 | 5张 | users, roles, permissions, user_roles, role_permissions |
| 智能体 | 3张 | agents, agent_plugins, agent_knowledge |
| 知识库 | 3张 | knowledge_bases, documents, document_chunks |
| 插件 | 2张 | plugin_group, plugins |
| 对话 | 2张 | conversations, conversation_messages |
| 工作流 | 2张 | workflows, workflow_executions |
users ─┬─ user_roles ─── roles ─── role_permissions ─── permissions
│
├─ agents ─┬─ agent_plugins ─── plugins ─── plugin_group
│ └─ agent_knowledge ─── knowledge_bases ─── documents ─── document_chunks
│
├─ conversations ─── conversation_messages
│
└─ workflows ─── workflow_executions
(向量数据存储在 ChromaDB,document_chunks.vector_id 为 ChromaDB 文档 ID)
| 模块 | 接口数量 | Base Path | 服务 |
|---|---|---|---|
| 认证授权 | 6 | /v1/auth |
Spring Boot |
| 智能体 | 8 | /agent |
Spring Boot |
| 知识库 | 10 | /knowledge |
Spring Boot + FastAPI |
| 插件 | 7 | /plugin |
Spring Boot |
| 工作流 | 9 | /workflow |
Spring Boot + FastAPI |
| 对话 | 6 | /chat |
Spring Boot + FastAPI |
| 用户管理 | 5 | /user |
Spring Boot |
| 角色权限 | 8 | /role, /permission |
Spring Boot |
启动项目后,可访问以下地址查看完整 API 文档:
- Spring Boot Swagger UI: http://localhost/api/swagger-ui.html
- FastAPI Docs: http://localhost/fastapi/docs
| 页面 | 路由 | 功能说明 |
|---|---|---|
| 首页 | / |
智能体列表、推荐智能体 |
| 智能体管理 | /agents |
创建、编辑、测试、发布智能体 |
| 知识库详情 | /knowledge/:id |
文档上传、分块查看、RAG测试 |
| 插件管理 | /plugins |
OpenAPI导入、插件列表、测试 |
| 工作流编辑器 | /workflow/:id |
可视化拖拽编排、节点配置 |
| 对话界面 | /chat/:id |
多轮对话、流式输出 |
| 个人中心 | /profile |
用户信息、密码修改 |
| 登录注册 | /login, /register |
用户认证 |
0. Docker部署项目失败
- 检查docker源是否存在问题,使用宝塔面板配置的Docker源需要进行更改
- 执行以下命令 sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json
- 粘贴以下内容进入文件 { "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] }
- 启用该配置并重启Docker sudo systemctl daemon-reexec sudo systemctl restart docker
1. 如何获取通义千问 API Key?
- 访问 阿里云百炼平台
- 注册/登录阿里云账号
- 开通 DashScope 服务
- 在控制台创建 API Key
- 将 API Key 配置到
.env文件的DASHSCOPE_API_KEY字段
2. 如何修改 LLM 模型?
编辑 fastapi/src/core/config.py:
DEFAULT_MODEL = "qwen-max" # 可选:qwen-turbo, qwen-plus, qwen-max3. 如何调整文档分块大小?
编辑 fastapi/src/core/config.py:
CHUNK_SIZE = 500 # 调整分块大小
CHUNK_OVERLAP = 50 # 调整重叠大小4. 如何配置 CORS 跨域?
编辑 springbootapi/src/main/java/com/example/demo/config/CorsConfig.java:
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:5173") // 添加允许的源
.allowedMethods("*");
}5. 如何重置数据库?
# 进入容器
docker-compose exec mysql bash
# 登录 MySQL
mysql -u root -p
# 删除并重建数据库
DROP DATABASE ai_agent;
CREATE DATABASE ai_agent CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 重新执行初始化脚本
USE ai_agent;
SOURCE /docker-entrypoint-initdb.d/init.sql;
SOURCE /docker-entrypoint-initdb.d/init_knowledge.sql;
SOURCE /docker-entrypoint-initdb.d/init_workflow.sql;- ✅ 已添加索引:
users.username,agents.user_id,documents.knowledge_base_id - 建议添加:
conversation_messages.conversation_id,workflow_executions.workflow_id
- 调整
TOP_K参数平衡召回率和响应速度 - 使用
SIMILARITY_THRESHOLD过滤低相关性结果
- Redis 缓存热门智能体配置
- 缓存知识库元数据减少数据库查询
- ✅ 智能体 CRUD 管理
- ✅ 知识库 RAG 系统
- ✅ 插件系统 (OpenAPI/Function Calling)
- ✅ 工作流可视化编排
- ✅ 多轮对话与流式输出
- ✅ 用户认证与权限管理 (JWT + RBAC)
MIT License
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request