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

news2024/11/26 12:50:20

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

C:\Users\Administrator>chroma run

显示如下信息

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zsh 配置 docker 自动补全

zsh 配置 docker 自动补全 在终端中使用 docker 的命令的时候必须要全部手敲&#xff0c;没有提示&#xff0c;于是就在找是否有自动补全的脚本&#xff0c;搜索了一圈踩了一些坑总结了一下具体的步骤。 首先执行如下命令&#xff1a; mkdir -p ~/.zsh/completion curl -L h…

Visual Studio创建 OpenCV项目

1、cmake 编译 opencv 参考链接&#xff1a;CMake编译OpenCV3.4.1心得_cmake 3.4.1-CSDN博客 1&#xff09;opencv文件名最好不要有空格 2&#xff09;没有下载opencv_contrib&#xff0c;不用配置OPENCV_EXTRA_MODULES_PATH 1、Visual Studio创建 OpenCV项目 参考链接&am…

esp32通过smartconfig连接wifi

esp32通过smartconfig连接wifi整体设计流程 1.流程图 2.代码实现 #include <WiFi.h> #include <SPIFFS.h>// 定义存储文件的文件名 const char* wifi_config_file "/wifi_config.txt";// 定义变量存储 WiFi 信息 // 1&#xff09;不填写为空时通过sma…

LangGraph Studio

文章目录 一、关于 LangGraph Studio下载 二、设置三、打开一个项目三、调用图开始新的运行配置图运行 四、创建和编辑线程1、创建一个线程2、选择一个线程3、编辑线程状态 五、如何向图表添加中断1、将中断添加到节点列表2、向特定节点添加中断 六、Human-in-the-loop七、编辑…

多模态大模型intern-vl 1.5 论文解读:How Far Are We to GPT-4V?

论文&#xff1a;https://arxiv.org/pdf/2404.16821 目录 1 介绍 3.1 整体架构 3.2 强大的视觉编码器 InternViT-6B-448px-V1.2 InternViT-6B-448px-V1.5 3.3 动态高分辨率 动态宽高比匹配 图像分割与缩略图 InternVL 1.5&#xff0c;这是一款开源的多模态大语言模型&…

Onenet服务器创建产品和设备

Onenet服务器创建产品和设备 (1)浏览器搜索 Onenet, 或者打开这个网址 OneNET - 中国移动物联网开放平台 (10086.cn) (2)登录注册, 密码特殊符号是 (3)进入此网址, 设备管理页面 设备列表 - OneNET物联网平台 (10086.cn) (4)点击产品开发,创建产品 (5)其他行业 (6)设备接…

功能管理之语录管理功能开发(八)

云风网 云风笔记 云风知识库 这里话不多说&#xff0c;直接上效果图,开发逻辑和专栏上篇用户管理大致相同

【JVM基础12】——垃圾回收-说一下JVM有哪些垃圾回收器?

目录 1- 引言&#xff1a;垃圾回收器2- ⭐核心&#xff1a;垃圾回收器详解2-1 串行垃圾回收器2-2 并行垃圾回收器2-3 CMS&#xff08;并发垃圾回收&#xff09;——主要作用在老年代 3- 小结3-1 说一下JVM有哪些垃圾回收器&#xff1f; 1- 引言&#xff1a;垃圾回收器 在 JVM …

人在职场,一半清醒,一半糊涂

职场如战场&#xff0c;同事之间&#xff0c;除了利益竞争&#xff0c;鲜有情谊。 想要扎根立足&#xff0c;学会清醒做事&#xff0c;糊涂做人&#xff0c;才有可能避免“踩坑”&#xff0c;行稳致远。 01 人在职场&#xff0c;清醒做事&#xff0c;才不会被排挤出局。 职…

Fluent Mybatis

官方文档&#xff1a;https://gitee.com/fluent-mybatis/fluent-mybatis/wikis 新的ORM框架&#xff0c;整个设计理念非常符合工程师思维。 Fluent Mybatis 介绍 何为 Fluent Mybatis&#xff1f; Fluent Mybatis, 是一款 Mybatis 语法增强框架, 综合了 Mybatis Plus, Dynam…

codetop标签双指针题目大全解析(C++解法),双指针刷穿地心!!!!!

写在前面&#xff1a;此篇博客是以[双指针总结]博客为基础的针对性训练&#xff0c;题源是codetop标签双指针近一年&#xff0c;频率由高到低 1.无重复字符的最长子串2.三数之和3.环形链表4.合并两个有序数组5.接雨水6.环形链表II7.删除链表的倒数第N个节点8.训练计划II9.最小覆…

python爬虫代理ip多线程配置的详细教程

在网络爬虫的世界里&#xff0c;代理IP和多线程配置是两个非常重要的技巧。它们不仅能帮助我们提高爬虫的效率&#xff0c;还能有效地避免被目标网站封禁。今天&#xff0c;我就带大家一起探讨如何在Python中配置代理IP和多线程&#xff0c;实现高效的网络爬取。 代理IP的基本…

【vue3|第19期】vue3一般组件与路由组件的探讨

日期&#xff1a;2024年8月2日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xff…

stm32cubemx生成驱动程序里面的变量,如何被main函数调用

用stm32cubemx生成了一个串口中断程序&#xff0c;功能实现了对不定长输入字符的统计和输出打印&#xff0c;在主函数写了回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 想重新排版&#xff0c;把回调函数放到UART.c里面&#xff0c; 考虑到main.c和uart…

使用Adobe Photoshop CS5给图片加水印

使用Adobe Photoshop CS5给图片加水印 前言1.我这里使用的是Adobe Photoshop CS52.新建空白画布3.写入水印内容4.按 Ctrl T 将其倾斜5.右键图层选择“混合选项”6.选择描边&#xff0c;颜色选择灰色7.效果如下8.填充选择0&#xff0c;不透明度选择75%9.打开编辑&#xff0c;选…

上海冷链配送新篇章 华鼎冷链科技以卓越服务餐饮品牌

在快速发展的上海餐饮连锁行业中&#xff0c;冷链运输作为保障食品安全与品质的关键环节&#xff0c;正迎来前所未有的发展机遇与挑战。华鼎冷链科技作为该领域的佼佼者&#xff0c;正引领着上海乃至全国冷链运输行业的新风尚。 华鼎冷链科技的成功并非一蹴而就。首先&#xff…

1990-2023年上市公司常用变量数据(1400+指标)

1990-2023年上市公司常用变量数据&#xff08;1400指标&#xff09; 1、时间&#xff1a;1990-2023年 2、范围&#xff1a;上市公司 3、格式&#xff1a;dta 4、来源&#xff1a;上市公司年报 5、指标&#xff1a;包括上市公司基本信息&#xff08;性质、行业、地址&#…

Linux智能控制器用于非标自动化印刷包装机械

科技的不断发展&#xff0c;印刷包装机械行业也在不断寻求创新和突破。Linux 智能控制器、非标自动化以及二次开发等技术的出现&#xff0c;为该行业的发展带来了新的机遇。本文将结合 BLIoTLink 协议软件&#xff0c;探讨这些技术如何加速印刷包装机械产业的升级。 Linux 智能…

C++STL专题 vector底层实现

目录 一&#xff0c; vector的手搓 1.构造函数 2. 拷贝构造的实现 3.析构函数 4.begin() end() 的实现 5.reserve的实现 6.size和capacity的实现 7.push_back的实现 8.pop_back的实现 9.empty的实现 10.insert的实现 11.erase的实现 12.resize的实现 13.clear的实…

Cadence23学习笔记(十七)

吴老师的网站里面有很多cadence的开源项目&#xff0c;可以用来学习&#xff1a; 全志 H3 SOC 官方参考设计 DD3 16bitX2 原理图及PCB – 吴川斌的博客 (mr-wu.cn) cadence设置显示实时的走线长度&#xff1a; 在allegro进行布线时可以实时显示当先布线的实际长度有助于pcb的…