Skip to content

kjore/ChatBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chatbot Backend - 图书馆智能客服系统

这是一个基于 Spring BootSpring AI 构建的图书馆智能客服后端系统。该项目创新性地结合了 LLM (大语言模型)DSL (领域特定语言) 技术,旨在提供准确、自然的图书馆业务查询服务。

📖 项目简介

传统的问答系统往往难以精准处理复杂的业务逻辑,而纯规则引擎又缺乏灵活性。本项目通过引入名为 LibraryQL 的 ANTLR4 DSL,构建了一个混合架构:

  1. 意图识别: 使用 LLM (Spring AI) 理解用户自然语言,并将其转换为结构化的 DSL (LibraryQL)。
  2. 精准执行: DSL 解析器将结构化指令转换为精确的 SQL 查询或业务操作。
  3. 智能回复: 系统根据执行结果,结合上下文生成人性化的回复。

✨ 核心特性

  • 🤖 智能对话: 集成 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

🏛️ 业务与 DSL 示例

项目核心在于 scr/main/resources/LibraryQL.g4 定义的语法。

流程示例:

  1. 用户提问: "帮我查一下所有关于人工智能的书,要最近出版的。"
  2. LLM 转换: 内部转换为 DSL (类似 BOOK CHECK STOCK SUBJECT '人工智能' LIMIT 5;)
  3. DSL 执行: 解析器执行该 DSL,查询数据库。
  4. 返回结果: 系统返回书籍列表并生成回复。

🚀 快速开始

1. 环境要求

  • JDK 17 或更高版本
  • Maven 3.8+
  • MySQL 数据库
  • Redis 服务
  • OpenAI API Key (或兼容的 API 服务)

2. 配置应用

修改 src/main/resources/application.ymlapplication-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 # 可选:如果使用代理

3. 构建项目

由于包含 ANTLR 代码生成,建议先执行 compile:

mvn clean compile

Maven 会自动调用 ANTLR 插件将 LibraryQL.g4 编译为 Java 代码 (位于 target/generated-sources/antlr4)。

4. 运行

mvn spring-boot:run

或者直接运行主类 com.web.ChatBotApplication

5. API 接口

  • 发送消息: POST /chat/send
    • Body: { "message": "我想借书", "userId": 123 }

📚 附录:图书馆基本信息

(详情见 src/main/resources/图书馆基本信息.md)

  • 开放时间: 周一至周五 8:00 - 22:00
  • 借阅期限: 普通图书 30 天

About

智能图书馆聊天客服。这个是后端,前端请看frontend项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors