当前位置: 首页 > 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.lryc.cn/news/593427.html

相关文章:

  • 基于单片机病床呼叫系统/床位呼叫系统
  • C#操作WPS表格
  • 大模型军备竞赛升级!Grok 4 携 “多智能体内生化” 破局,重构 AI 算力与 Agent 2.0 时代
  • 张 关于大语言模型(LLM)置信度研究的经典与前沿论文 :温度缩放;语义熵;自一致性;事实与反思;检索增强;黑盒引导;
  • [MySQL基础3] 数据控制语言DCL和MySQL中的常用函数
  • 一个基于阿里云的C端Java服务的整体项目架构
  • 阿里云ssl证书自动安装及续订(acme)
  • NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
  • LRU算法及优化
  • SpringBoot五分钟快速入门指南
  • Java行为型模式---访问者模式
  • Nestjs框架: 理解 RxJS响应式编程的核心概念与实践
  • 如何构建未来的人-AI-环境智能教育生态系统
  • OpenCV 官翻 3 - 特征检测 Feature Detection
  • Vue 3 中导出 Excel 文件
  • 【Web APIs】JavaScript 自定义属性操作 ② ( H5 自定义属性 )
  • 光纤收发器上的指示灯各代表的含义
  • 【ChatOpenAI】常用方法详解
  • 如何设计一个软件项目管理系统:架构设计合集(六)
  • min_25筛学习笔记+牛客多校02E
  • AWS Partner: Sales Accreditation (Business)
  • C++命名空间深度解析:避免命名冲突的终极解决方案
  • Kafka、RabbitMQ 与 RocketMQ 高可靠消息保障方案对比分析
  • 【数据结构初阶】--双向链表(二)
  • 明细列表,明细grid中的默认按钮失效,配置按钮失效
  • windows wsl2-06-docker hello world
  • windows wsl ubuntu 如何安装 open-jdk8
  • rustdesk客户端编译
  • NX二次开发常用函数坐标转化UF_MTX4_csys_to_csys和UF_MTX4_vec3_multipl
  • 【REACT18.x】creat-react-app在添加eslint时报错Environment key “jest/globals“ is unknown