这是一个 AI 学习平台,用于理解和实践主流 AI 概念。Java Spring Boot 后端 + React TypeScript 前端,模块化单体架构。
- 后端: Java 17, Spring Boot 3.4.5, Spring AI 1.0.0-M6, PostgreSQL, Maven
- 前端: React 18, TypeScript, Vite, Ant Design 5
- AI: Spring AI (OpenAI chat + embedding, Ollama)
backend/src/main/java/com/aiplatform/
chat/ - 对话 Session/Message, SSE 流式
prompt/ - Prompt 模板 CRUD, {{variable}} 渲染
model/ - 多模型路由, ChatClient 管理
toolcall/ - 工具注册中心, 内建工具
rag/ - 文档摄入, 向量检索, Embedding
mcp/ - MCP stdio 客户端, JSON-RPC
skill/ - .md 技能文件加载, 热更新
memory/ - Token 窗口, 长期记忆
agent/ - ReAct 循环, 多步工具编排
common/ - 共享 DTO, 异常, 分页
# 后端
cd backend && mvnw spring-boot:run # 启动 (端口 8080)
# 前端
cd frontend && npm run dev # 启动 (端口 5173)
# 类型检查
cd frontend && npx tsc --noEmit
# MCP 示例
python mcp-examples/filesystem-server.py # MCP 文件系统服务器- 所有 API 前缀
/api/ - 统一响应格式:
{ code: int, message: string, data: T } - SSE 端点返回
text/event-stream,事件名:token/done - 分页参数:
page(0-indexed),size(default 20) - 异常统一由
GlobalExceptionHandler处理
- Spring AI ChatClient 而非原生 HTTP 调用 → 统一 LLM 抽象
- 模块化单体 而非微服务 → 学习项目,降低复杂度
- 模块间接口通信 →
ToolRegistry作为工具注册中心 - SSE (非 WebSocket) → 简单够用,单向推送
- 技能用 .md 文件 → 可读性好,热更新简单
- ReAct: LLM 输出 Thought → tool_call → 执行 → Observation → 继续/完成
- 最大步数 10 防止无限循环
- 工具结果以 AssistantMessage 注入回 messages 列表
- 步数达到上限时返回部分结果 + 警告
- 所有 Java 文件不加注释(约定)
- 前端使用 TypeScript 严格模式
- API 客户端在
frontend/src/services/api.ts - 前端页面放在
frontend/src/pages/ - 后端模块各包含: entity/ repository/ service/ controller/ dto/