Springboot利用大模型实现即时通信

gitee地址:https://gitee.com/myha/Springboot-langchain-chat

版本及工具说明

本项目版本: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

显示如下信息

注意:Connect to chroma at: http://localhost:8000这个地址,代码中用到

接下来我们上传我们本地的资料"装修建议.txt",我们利用接口上传,接口在agent->StoreController.java里面,上传后可以测试一下,接口在agent->AgentController.java

php 复制代码
@PostMapping("/search")
    public ResultUtil<String> search(String question) {
    return ResultUtil.ok(agentService.search(question));
}

你可以看看装修建议.txt,我们问的问题,答案就是在这里面。

下面我简单的描述一下这个给项目的主流程

用户上线------>分配一个客服

用户发消息------>大模型接收到消息,返回需要回复的信息

客服拿到大模型回复的信息发给用户------》用户收到消息

相关推荐
小七mod2 小时前
【MyBatis】MyBatis与Spring和Spring Boot整合原理
spring boot·spring·mybatis
猴哥源码2 小时前
基于Java+SpringBoot的动物领养平台
java·spring boot
华子w9089258592 小时前
基于 SpringBoot+VueJS 的农产品研究报告管理系统设计与实现
vue.js·spring boot·后端
猴哥源码3 小时前
基于Java+SpringBoot的在线小说阅读平台
java·spring boot
敲键盘的小夜猫3 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
上上迁6 小时前
分布式生成 ID 策略的演进和最佳实践,含springBoot 实现(Java版本)
java·spring boot·分布式
秋千码途6 小时前
小架构step系列07:查找日志配置文件
spring boot·后端·架构
王国强20097 小时前
LangChain 核心原理全解析 —— 拆解智能体系统的底层逻辑
langchain
大模型开发8 小时前
Java开发者LLM实战——使用LangChain4j构建本地RAG系统
程序员·langchain·llm
seventeennnnn9 小时前
谢飞机的Java高级开发面试:从Spring Boot到分布式架构的蜕变之旅
spring boot·微服务架构·java面试·分布式系统·电商支付