这是一个基于 Spring Boot 和 Spring AI 构建的图书馆智能客服后端系统。该项目创新性地结合了 LLM (大语言模型) 与 DSL (领域特定语言) 技术,旨在提供准确、自然的图书馆业务查询服务。
传统的问答系统往往难以精准处理复杂的业务逻辑,而纯规则引擎又缺乏灵活性。本项目通过引入名为 LibraryQL 的 ANTLR4 DSL,构建了一个混合架构:
- 意图识别: 使用 LLM (Spring AI) 理解用户自然语言,并将其转换为结构化的 DSL (
LibraryQL)。 - 精准执行: DSL 解析器将结构化指令转换为精确的 SQL 查询或业务操作。
- 智能回复: 系统根据执行结果,结合上下文生成人性化的回复。
- 🤖 智能对话: 集成 Spring AI (OpenAI),支持自然语言交互。
- 🎯 领域特定语言 (DSL): 自研
LibraryQL(基于 ANTLR4),不仅能处理“查书”请求,还能精确处理“库存检查”、“借阅规则”等特定业务逻辑。 - 🔐 用户认证: 使用 JWT (JSON Web Token) 进行安全的用户身份验证和会话管理。
- 🚀 现代技术栈: 基于 Spring Boot 3.5.5,支持 Java 17+。
- 开发语言: Java 17
- 核心框架: Spring Boot 3.5.5
- AI 框架: Spring AI (spring-ai-starter-model-openai)
- DSL 解析: ANTLR 4.13.1
- 数据库: MySQL 8.0+
- ORM: MyBatis / MyBatis-Plus / Spring Data JPA
- 缓存: Redis
- 安全: Spring Security, JWT
项目核心在于 scr/main/resources/LibraryQL.g4 定义的语法。
流程示例:
- 用户提问: "帮我查一下所有关于人工智能的书,要最近出版的。"
- LLM 转换: 内部转换为 DSL (类似
BOOK CHECK STOCK SUBJECT '人工智能' LIMIT 5;) - DSL 执行: 解析器执行该 DSL,查询数据库。
- 返回结果: 系统返回书籍列表并生成回复。
- JDK 17 或更高版本
- Maven 3.8+
- MySQL 数据库
- Redis 服务
- OpenAI API Key (或兼容的 API 服务)
修改 src/main/resources/application.yml 或 application-dev.yml (推荐使用 dev profile):
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_library_db
username: root
password: your_password
data:
redis:
host: localhost
port: 6379
ai:
openai:
api-key: sk-proj-xxxxxxxxxxxxxxxxxxxx # 配置你的 API Key
base-url: https://api.openai.com/v1 # 可选:如果使用代理由于包含 ANTLR 代码生成,建议先执行 compile:
mvn clean compileMaven 会自动调用 ANTLR 插件将 LibraryQL.g4 编译为 Java 代码 (位于 target/generated-sources/antlr4)。
mvn spring-boot:run或者直接运行主类 com.web.ChatBotApplication。
- 发送消息:
POST /chat/send- Body:
{ "message": "我想借书", "userId": 123 }
- Body:
(详情见 src/main/resources/图书馆基本信息.md)
- 开放时间: 周一至周五 8:00 - 22:00
- 借阅期限: 普通图书 30 天