# SCAI **Repository Path**: baidu.co/SCAI ## Basic Information - **Project Name**: SCAI - **Description**: SpringAI学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-02 - **Last Updated**: 2025-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 该项目是一个基于Java的Spring Boot应用程序,主要用于构建智能聊天系统。以下是该项目的主要功能和组件概述: ### 项目概述 该项目旨在开发一个智能聊天系统,支持多种聊天类型和记忆功能,能够根据用户需求进行对话交互。系统集成了AI模型,支持向量存储和文档检索功能,适用于构建智能客服、聊天机器人等应用。 ### 主要功能 - **多类型聊天支持**:系统支持多种聊天类型,能够根据聊天类型保存和管理聊天记录。 - **聊天记忆**:通过`ChatMemory`组件,系统可以保存和读取聊天历史,实现上下文连续的对话体验。 - **AI对话处理**:集成AI模型(如DeepSeekChatModel),实现智能对话处理。 - **文档检索**:支持文档加载和检索功能,可用于构建基于文档内容的问答系统。 - **向量存储**:使用向量存储技术(如PgVector),支持高效存储和检索向量数据。 ### 主要组件 - **App.java**:Spring Boot应用程序的入口点,配置了组件扫描和自动配置排除。 - **ChatTypeHistoryAdvisor.java**:聊天类型历史顾问,用于在聊天前后处理聊天历史记录。 - **ChatTypeTitleAdvisor.java**:聊天类型标题顾问,用于处理聊天标题的生成和更新。 - **LoveAI.java**:AI服务类,实现了具体的聊天逻辑。 - **AiAutoConfiguration.java**:AI相关的自动配置类,配置了聊天记忆、聊天客户端等Bean。 - **DataSourceConfiguration.java**:数据源配置类,配置了MySQL和PostgreSQL的数据源。 - **MyVectorStoreConfiguration.java**:向量存储配置类,配置了向量存储组件。 - **SimpleChatController.java**:简单的聊天控制器,提供了REST API接口用于聊天交互。 - **ChatTypeHistory.java**:聊天类型历史实体类,映射了数据库中的聊天历史记录表。 - **ChatHistoryMapper.java**:聊天历史记录的MyBatis Mapper接口。 - **ChatTypeHistoryService.java**:聊天类型历史服务接口及其实现类,用于管理聊天历史记录。 - **MyDocumentLoader.java**:文档加载器,用于加载Markdown文档,支持文档检索功能。 - **DateUtils.java**:日期工具类,提供了丰富的日期处理方法。 - **StringUtil.java**:字符串工具类,提供了字符串处理方法。 ### 使用示例 1. **启动应用**:运行`App.java`中的`main`方法启动Spring Boot应用。 2. **发送聊天请求**:通过访问`/simple/chat`接口发送聊天请求,例如: ```http GET /simple/chat?prompt=你好 HTTP/1.1 ``` 3. **测试聊天功能**:使用`ChatTest.java`中的测试用例测试聊天功能。 ### 依赖项 - Spring Boot - MyBatis Plus - PostgreSQL JDBC Driver - DeepSeekChatModel (或其他AI模型) - PgVector (向量存储) ### 构建与部署 1. **构建项目**:使用Maven构建项目,确保`pom.xml`中包含了所有必要的依赖。 2. **配置数据库**:配置MySQL和PostgreSQL的数据源信息。 3. **运行应用**:启动应用后,可以通过REST API进行聊天交互。 ### 测试 - **单元测试**:使用`ChatTest.java`和`LoadTest.java`进行单元测试,验证聊天和文档加载功能。 该项目提供了一个完整的智能聊天系统的基础框架,可以根据具体需求进行扩展和优化。