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,我们问的问题,答案就是在这里面。

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

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

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

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

相关推荐
MC丶科30 分钟前
Spring Boot + Vue 实现一个在线商城(商品展示、购物车、订单)!从零到一完整项目
前端·vue.js·spring boot
王国强20092 小时前
Workflows vs Agents:如何选择你的 LLM 应用架构?
langchain
q***98523 小时前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
西岭千秋雪_3 小时前
Kafka客户端整合
java·spring boot·分布式·kafka·linq
tanxinji3 小时前
Netty编写Echo服务器
java·netty
在逃的吗喽3 小时前
Spring Boot的web基础配置
前端·spring boot
玲小珑4 小时前
LangChain.js 完全开发手册(十九)前端 AI 开发进阶技巧
前端·langchain·ai编程
大模型真好玩4 小时前
LangChain1.0实战之多模态RAG系统(一)——多模态RAG系统核心架构及智能问答功能开发
人工智能·langchain·agent
程序猿小蒜4 小时前
基于springboot的汽车资讯网站开发与实现
java·前端·spring boot·后端·spring
それども4 小时前
SpringBoot 切面AOP获取注解为null
java·spring boot·spring