当前位置: 首页 > news >正文

Spring AI 1.0版本 + 千问大模型之 文本记忆对话

上篇文章,主要是简单讲解了一下文本对话的功能。由于模型不具备上下文记忆功能,只能一问一答。因此我们需要实现记忆对话功能,这样大模型回答信息才能够更加准确。

1、pom依赖
项目构建就不详细说了,大家可以参考上篇 文本对话 文章。

    <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-chat-memory-repository-jdbc</artifactId></dependency>

2、修改ChatConfig类

@Component
public class ChatConfig {@Beanpublic ChatMemory chatMemory() {// 默认存储最近的 10 条消息return MessageWindowChatMemory.builder().maxMessages(10).build();}@Beanpublic ChatClient init(OpenAiChatModel chatModel, ChatMemory chatMemory) {return ChatClient.builder(chatModel).defaultSystem("你是一个智能助手,请以友好的语气回答问题。").defaultAdvisors(new SimpleLoggerAdvisor(),MessageChatMemoryAdvisor.builder(chatMemory).build()).build();}
}

这里我这边采用了内存形式存储消息。Spring AI 除此之外还提供了其他的消息存储方式,详细内容可以参考 https://docs.spring.io/spring-ai/reference/api/chat-memory.html

3、ChatController类

@RestController
@RequestMapping(value = "/api/chat")
public class ChatController {@Resourceprivate ChatClient chatClient;@GetMapping("/chat")public String chat(@RequestParam(value = "message") String message,@RequestParam(value = "chatId") String chatId) {return chatClient.prompt(message).advisors(a -> a.param(ChatMemory.CONVERSATION_ID, chatId)).call().content();}
}

参数中的chatId,可以根据自己的实际场景去设定,一般是一个会话页面。

以上功能就可以实现会话记忆功能了。

http://www.dtcms.com/a/287402.html

相关文章:

  • LeetCode中等题--167.两数之和II-输入有序数组
  • MySQL基础教程
  • XSS漏洞----基于Dom的xss
  • 力扣24:两两交换链表中的节点
  • SQLALchemy
  • 单元测试学习+AI辅助单测
  • 计算机网络:(十一)多协议标记交换 MPLS
  • GaussDB union 的用法
  • Java NIO Selector高并发场景下CPU占用飙升问题排查与解决方案
  • NIO零拷贝
  • MySQL的union、union all导致排序失效
  • 低输入电源5.5V/2A同步降压转换器具有多种模式选择
  • roslaunch 文件的核心语法和使用技巧
  • (LeetCode 每日一题) 1233. 删除子文件夹 (排序)
  • TCP/UDP协议深度解析(四):TCP的粘包问题以及异常情况处理
  • 7.19 换根dp | vpp |滑窗
  • 医养照护与管理实训基地建设:创新模式与突破路径
  • 扭蛋机系统开发:打造多元化娱乐生态的新引擎
  • 响应式单位rpx及搭配使用UI产品工具
  • Ambiguity-Resolved Waveform Design for Cell-free OFDM-Based ISAC Systems
  • 【MySQL笔记】视图
  • 力扣 hot100 Day49
  • day25 力扣90.子集II 力扣46.全排列 力扣47.全排列 II
  • 二、环境搭建之CentOS安装Docker
  • GitHub:只支持 Git 作为唯一的版本库格式进行托管
  • 二分查找-69.x的平方根-力扣(LeetCode)
  • 安装单机版本Redis
  • 电商商品综合排序:从需求分析到实时计算的全方位指南
  • 初识Redis---Redis的特性介绍
  • GM-3568JHF vs 普通 RK3568 开发板 — 工业应用对比文案