Skip to content

dragunOnCode/agent-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAG Demo - Spring AI 对话记忆系统

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

快速开始

1. 配置OpenAI API Key

src/main/resources/application.yml 中设置你的OpenAI API Key,或者通过环境变量设置:

export OPENAI_API_KEY=your-api-key-here

2. 运行应用

mvn spring-boot:run

3. 访问H2控制台(可选)

应用启动后,可以访问 http://localhost:8080/h2-console 查看数据库内容。

连接信息:

  • JDBC URL: jdbc:h2:mem:ragdemo
  • 用户名: sa
  • 密码: (留空)

API 接口文档

1. 创建新对话

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"
}

2. 获取所有对话列表

GET /api/chat/conversations

3. 获取指定对话

GET /api/chat/conversations/{conversationId}

4. 发送消息

POST /api/chat/conversations/{conversationId}/messages
Content-Type: application/json

{
  "message": "什么是Spring AI?"
}

响应:

{
  "response": "Spring AI是..."
}

5. 获取对话消息历史

GET /api/chat/conversations/{conversationId}/messages

6. 更新对话标题

PATCH /api/chat/conversations/{conversationId}/title
Content-Type: application/json

{
  "title": "新标题"
}

7. 删除对话

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                    # 数据库初始化脚本

注意事项

  1. API Key配置:确保在运行前配置正确的OpenAI API Key
  2. 数据库:当前使用H2内存数据库,重启后数据会丢失。如需持久化,可改用MySQL或PostgreSQL
  3. Java版本:Spring Boot 3.5.9 需要 Java 17 或更高版本
  4. MyBatis-Plus:本项目使用MyBatis-Plus作为ORM框架,提供便捷的CRUD操作和自动填充功能

使用示例

使用curl测试API

# 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":"它的主要功能是什么?"}'

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages