Skip to content

Latest commit

 

History

122 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 AI Agent 智能体应用市场

一站式智能体开发与部署平台 | 基于 Spring Boot + Vue 3 + FastAPI
支持智能体创建、知识库 RAG、插件调用、工作流编排和多轮对话

Java Spring Boot Vue Python FastAPI MySQL Docker


📖 项目简介

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

AI服务技术栈

  • 框架: 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 8000

FastAPI 文档: http://localhost:8000/docs

3. 前端开发 (Vue 3)
# 进入前端目录
cd vue

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 构建生产版本
npm run build

开发服务器: http://localhost:5173


📚 核心功能详解

1. 智能体管理

智能体是平台的核心实体,用户可以创建不同角色、能力的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 # 关联知识库

2. 知识库 RAG (Retrieval-Augmented Generation)

知识库系统支持文档上传、智能分块、向量化存储和语义检索,为智能体提供外部知识:

完整流程:

用户上传文档
    ↓
[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 # 相似度阈值

3. 插件系统

插件系统允许智能体调用外部 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


4. 工作流引擎

可视化工作流编排器,支持拖拽节点、连线,实现复杂的多步骤 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


5. 多轮对话

支持上下文记忆的智能对话系统,保持会话连续性:

功能特性:

  • ✅ 会话管理:创建、查询、删除对话
  • ✅ 上下文记忆:自动维护历史消息
  • ✅ 流式输出:支持 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


6. 用户与权限系统

基于 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

ER 关系图概览

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)

🔌 API 接口文档

接口概览

模块 接口数量 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

Swagger API 文档

启动项目后,可访问以下地址查看完整 API 文档:


🎨 前端页面

页面 路由 功能说明
首页 / 智能体列表、推荐智能体
智能体管理 /agents 创建、编辑、测试、发布智能体
知识库详情 /knowledge/:id 文档上传、分块查看、RAG测试
插件管理 /plugins OpenAPI导入、插件列表、测试
工作流编辑器 /workflow/:id 可视化拖拽编排、节点配置
对话界面 /chat/:id 多轮对话、流式输出
个人中心 /profile 用户信息、密码修改
登录注册 /login, /register 用户认证

🔧 常见问题

0. Docker部署项目失败
  1. 检查docker源是否存在问题,使用宝塔面板配置的Docker源需要进行更改
  2. 执行以下命令 sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json
  3. 粘贴以下内容进入文件 { "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] }
  4. 启用该配置并重启Docker sudo systemctl daemon-reexec sudo systemctl restart docker
1. 如何获取通义千问 API Key?
  1. 访问 阿里云百炼平台
  2. 注册/登录阿里云账号
  3. 开通 DashScope 服务
  4. 在控制台创建 API Key
  5. 将 API Key 配置到 .env 文件的 DASHSCOPE_API_KEY 字段
2. 如何修改 LLM 模型?

编辑 fastapi/src/core/config.py

DEFAULT_MODEL = "qwen-max"  # 可选:qwen-turbo, qwen-plus, qwen-max
3. 如何调整文档分块大小?

编辑 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!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

About

智能体创作平台是一个专为教学设计的简化版智能体开发平台

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages