基于 Spring AI 1.1.2 和 Spring Boot 3.5.9 实现的带有对话记忆功能的多对话管理后端系统。
- ✅ 多对话管理:支持创建、查询、删除多个独立对话
- ✅ 对话记忆:自动保存对话历史,AI可以基于上下文进行回复
- ✅ 消息持久化:使用MyBatis-Plus将对话和消息保存到数据库
- ✅ RESTful API:提供完整的REST API接口
- ✅ 可配置记忆大小:通过配置文件控制保存的消息数量
- Spring Boot 3.5.9
- Spring AI 1.1.2
- MyBatis-Plus 3.5.7
- H2 Database (内存数据库)
- Lombok
- Maven
在 src/main/resources/application.yml 中设置你的OpenAI API Key,或者通过环境变量设置:
export OPENAI_API_KEY=your-api-key-heremvn spring-boot:run应用启动后,可以访问 http://localhost:8080/h2-console 查看数据库内容。
连接信息:
- JDBC URL:
jdbc:h2:mem:ragdemo - 用户名:
sa - 密码: (留空)
POST /api/chat/conversations
Content-Type: application/json
{
"title": "关于Spring AI的讨论"
}响应:
{
"id": 1,
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"title": "关于Spring AI的讨论",
"createdAt": "2024-01-01T10:00:00",
"updatedAt": "2024-01-01T10:00:00"
}GET /api/chat/conversationsGET /api/chat/conversations/{conversationId}POST /api/chat/conversations/{conversationId}/messages
Content-Type: application/json
{
"message": "什么是Spring AI?"
}响应:
{
"response": "Spring AI是..."
}GET /api/chat/conversations/{conversationId}/messagesPATCH /api/chat/conversations/{conversationId}/title
Content-Type: application/json
{
"title": "新标题"
}DELETE /api/chat/conversations/{conversationId}在 application.yml 中可以配置以下参数:
app.chat.max-memory-size: 每个对话保存的最大消息数量(默认:10)app.chat.enable-memory: 是否启用对话记忆功能(默认:true)spring.ai.openai.chat.options.model: AI模型名称(默认:gpt-3.5-turbo)spring.ai.openai.chat.options.temperature: 温度参数(默认:0.7)
ragdemo/
├── pom.xml
├── src/main/java/com/example/ragdemo/
│ ├── RagDemoApplication.java # 主应用类
│ ├── config/
│ │ └── MyBatisPlusConfig.java # MyBatis-Plus配置类
│ ├── entity/
│ │ ├── Conversation.java # 对话实体
│ │ └── Message.java # 消息实体
│ ├── repository/
│ │ ├── ConversationRepository.java # 对话Mapper接口
│ │ └── MessageRepository.java # 消息Mapper接口
│ ├── service/
│ │ ├── ConversationService.java # 对话管理服务
│ │ ├── AiChatService.java # AI聊天服务
│ │ └── MemoryService.java # 记忆管理服务
│ └── controller/
│ └── ChatController.java # REST控制器
└── src/main/resources/
├── application.yml # 配置文件
└── db/
└── schema.sql # 数据库初始化脚本
- API Key配置:确保在运行前配置正确的OpenAI API Key
- 数据库:当前使用H2内存数据库,重启后数据会丢失。如需持久化,可改用MySQL或PostgreSQL
- Java版本:Spring Boot 3.5.9 需要 Java 17 或更高版本
- MyBatis-Plus:本项目使用MyBatis-Plus作为ORM框架,提供便捷的CRUD操作和自动填充功能
# 1. 创建对话
curl -X POST http://localhost:8080/api/chat/conversations \
-H "Content-Type: application/json" \
-d '{"title":"我的第一个对话"}'
# 保存返回的conversationId,例如:550e8400-e29b-41d4-a716-446655440000
# 2. 发送消息
curl -X POST http://localhost:8080/api/chat/conversations/550e8400-e29b-41d4-a716-446655440000/messages \
-H "Content-Type: application/json" \
-d '{"message":"你好,请介绍一下Spring AI"}'
# 3. 获取对话历史
curl http://localhost:8080/api/chat/conversations/550e8400-e29b-41d4-a716-446655440000/messages
# 4. 继续对话
curl -X POST http://localhost:8080/api/chat/conversations/550e8400-e29b-41d4-a716-446655440000/messages \
-H "Content-Type: application/json" \
-d '{"message":"它的主要功能是什么?"}'