# Springboot利用大模型实现即时通信 **Repository Path**: extraordinary-x/Springboot-langchain-chat ## Basic Information - **Project Name**: Springboot利用大模型实现即时通信 - **Description**: Springboot利用大模型实现即时通信 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-05 - **Last Updated**: 2024-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Springboot利用大模型实现即时通信 # 版本及工具说明 本项目版本:springboot3.2.8 + jdk17 + mybatis-plus3.5.7 安装python,可以参考:https://docs.python.org/zh-cn/3/using/windows.html#the-full-installer 本项目使用的是python3.11 安装向量库 chroma ,你可以理解为数据库,可以参考:https://docs.trychroma.com/getting-started 本项目使用的大模型API是《智谱》提供的,你需要去申请一个api key ,网站地址如下:https://open.bigmodel.cn/ # 项目简单介绍 **1、数据库准备,数据库文件chat.sql** **2、websocket通信** 为了实现websocket通信,本项目使用了netty这个开源框架,官方文档:https://netty.io/wiki/user-guide-for-4.x.html 关于通信的代码都位于`websocket`这个目录下,下面简单介绍一下 **NettyServer**,*启动**websocket**服务*,核心方法 **NettyInitializer** netty初始化 **NettyIdleStateHandler** 心跳检测,比如空闲一小时自动断开连接 **NettyConfig** 定义两个全局变量 **NettyTextHandler** 核心的业务处理模块,发送信息、监听连接状态 **3、LLM集成框架** 这里使用langchain4j,参考文档:https://docs.langchain4j.dev/ 在开始之前我们要启动我们前面安装的向量库chroma ```shell C:\Users\Administrator>chroma run ``` 显示如下信息 ![](readme-img/01.jpg) 注意:Connect to chroma at: http://localhost:8000这个地址,代码中用到 接下来我们上传我们本地的资料"**装修建议.txt**",我们利用接口上传,接口在agent->StoreController.java里面,上传后可以测试一下,接口在agent->AgentController.java ```php @PostMapping("/search") public ResultUtil search(String question) { return ResultUtil.ok(agentService.search(question)); } ``` ![](readme-img/1722825985983.jpg) 你可以看看**装修建议.txt**,我们问的问题,答案就是在这里面。 下面我简单的描述一下这个给项目的主流程 用户上线------>分配一个客服 用户发消息------>大模型接收到消息,返回需要回复的信息 客服拿到大模型回复的信息发给用户------》用户收到消息