Spring AI(6) :对话机器人-会话历史
本章代码已分享至Gitee:https://gitee.com/lengcz/ai-study.git文章目录会话历史本章代码已分享至Gitee:https://gitee.com/lengcz/ai-study.git会话历史添加ChatHisoryRepositoryimportjava.util.List;publicinterfaceChatHistoryRepository{/** * 保存会话记录 * param type * param chatId */voidsave(Stringtype,StringchatId);/** * 获取会话id集合 * param type * return */ListStringgetChatIds(Stringtype);/** * 删除会话 * param chatId */voiddelete(StringchatId);}添加实现类publicclassInMemoryChatHistoryRepositoryimplementsChatHistoryRepository{privatefinalMapString,ListStringchatHistorynewHashMap();Overridepublicvoidsave(Stringtype,StringchatId){chatHistory.computeIfAbsent(type,k-newArrayList());ListStringchatIdschatHistory.get(type);if(chatIds.contains(chatId)){return;}chatIds.add(chatId);}OverridepublicListStringgetChatIds(Stringtype){returnchatHistory.getOrDefault(type,newArrayList());}Overridepublicvoiddelete(StringchatId){}}聊天时保存chatId//1.保存会话idchatHistoryRepository.save(chat,chatId);编写获取chatIds 的接口RequiredArgsConstructor//有参构造器RestControllerRequestMapping(/ai/history)publicclassChatHistoryController{privatefinalChatHistoryRepositorychatHistoryRepository;privatefinalChatMemorychatMemory;/** * 获取会话ID列表 * param type * return */GetMapping(/{type})publicListStringgetChatIds(PathVariable(type)Stringtype){returnchatHistoryRepository.getChatIds(type);}}启动服务器测试这个接口这样这个页面的左侧聊天历史就可以了。http://localhost:8080/ai/history/chat编写历史消息接口定义一个消息实体MessageVO 然后通过ChatMemory查询历史消息并将消息转换成刚才定义的List MessageVO importlombok.Data;importlombok.NoArgsConstructor;importorg.springframework.ai.chat.messages.Message;NoArgsConstructorDatapublicclassMessageVO{privateStringrole;privateStringcontent;publicMessageVO(Messagemessage){switch(message.getMessageType()){caseUSER:roleuser;break;caseASSISTANT:roleassistant;break;// case SYSTEM:// role system;// break;// case TOOL:// role function;// break;default:roleunknown;break;}this.contentmessage.getText();}}***查询历史消息详情*paramtype*paramchatId*return*/GetMapping(/{type}/{chatId})publicListMessageVOgetChatHistory(PathVariable(type)Stringtype,PathVariable(chatId)StringchatId){ListMessagemessageschatMemory.get(chatId,Integer.MAX_VALUE);if(nullmessages){returnList.of();}returnmessages.stream().map(MessageVO::new).toList();}上面完成了查询聊天详情的接口启动服务然后增加几个聊天内容和记录然后查看接口消息。聊天后刷新页面会发现我们的聊天内容还在这就说明了会话的历史已经记录了。

相关新闻

Vue3 Dnd常见问题解答:解决90%的拖拽开发难题

Vue3 Dnd常见问题解答:解决90%的拖拽开发难题

Vue3 Dnd常见问题解答:解决90%的拖拽开发难题 【免费下载链接】vue3-dnd React Dnd implementation in Vue Composition-api. 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-dnd Vue3 Dnd 是基于 Vue Composition-api 实现的 React Dnd 功能&#xff0c…

2026/7/25 23:18:12 阅读更多 →
IDEA插件Qoder CN配置deepseek大模型

IDEA插件Qoder CN配置deepseek大模型

文章目录 Qoder CN 介绍核心能力:不止是代码补全主要特点产品形态 Qoder CN如何配置deepseek大模型如何选择deepseek 大模型最大的差异:12倍的价格杠杆架构与性能:定位决定设计如何选择:权衡性能与成本 传送门 Qoder CN 介绍 Qod…

2026/7/25 23:18:12 阅读更多 →
如何实现微信聊天数据的真正主权?WeChatMsg革新你的数字记忆管理

如何实现微信聊天数据的真正主权?WeChatMsg革新你的数字记忆管理

如何实现微信聊天数据的真正主权?WeChatMsg革新你的数字记忆管理 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…

2026/7/25 23:17:12 阅读更多 →

最新新闻

ScaleDown未来路线图:即将发布的5大令人期待的新功能

ScaleDown未来路线图:即将发布的5大令人期待的新功能

ScaleDown未来路线图:即将发布的5大令人期待的新功能 【免费下载链接】scaledown 项目地址: https://gitcode.com/gh_mirrors/sca/scaledown ScaleDown作为一款高效的AI提示词优化工具,正在持续进化以满足用户不断增长的需求。本文将为您揭秘Sca…

2026/7/25 23:25:15 阅读更多 →
如何快速配置WarcraftHelper:魔兽争霸3性能优化完整指南

如何快速配置WarcraftHelper:魔兽争霸3性能优化完整指南

如何快速配置WarcraftHelper:魔兽争霸3性能优化完整指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为《魔兽争霸3》在现代…

2026/7/25 23:25:15 阅读更多 →
AI代码安全审查实战:Claude Code如何重塑开发者的安全防线

AI代码安全审查实战:Claude Code如何重塑开发者的安全防线

你刚写完一段代码,准备提交到代码库。代码逻辑清晰,功能正常,测试也通过了。但就在点击提交按钮前,你心里会不会闪过一丝犹豫:这段代码真的安全吗?有没有潜在的SQL注入点?用户输入处理得够不够干…

2026/7/25 23:25:15 阅读更多 →
如何通过TEKLauncher实现《方舟:生存进化》的现代化游戏管理

如何通过TEKLauncher实现《方舟:生存进化》的现代化游戏管理

如何通过TEKLauncher实现《方舟:生存进化》的现代化游戏管理 【免费下载链接】TEKLauncher Launcher for ARK: Survival Evolved 项目地址: https://gitcode.com/gh_mirrors/te/TEKLauncher TEKLauncher是一款专为《方舟:生存进化》设计的开源启动…

2026/7/25 23:25:15 阅读更多 →
信息系统管理工程师-数据层知识点详解:存储、数据库与信息安全

信息系统管理工程师-数据层知识点详解:存储、数据库与信息安全

一、引言数据是信息系统的核心资产,数据的存放、管理与保护是信息系统管理工程师的核心职责,相关知识点在软考中级考试中占比约 15%-20%,覆盖选择题、案例分析题多个题型。从技术发展脉络看,存储技术从早期单机直连存储演进到分布…

2026/7/25 23:25:15 阅读更多 →
零代码配置:Codex客户端接入DeepSeek API打造免费AI编程助手

零代码配置:Codex客户端接入DeepSeek API打造免费AI编程助手

如果你是一名开发者,最近可能已经注意到一个现象:身边越来越多的人开始讨论“Codex”和“DeepSeek”的组合。这背后反映了一个非常实际的痛点:我们渴望一个强大、智能的编程助手,但受限于网络环境、订阅费用或对国外服务的依赖&am…

2026/7/25 23:24:15 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻