spring-ai 第九模型介绍-聊天记录

第九模型介绍-聊天记录

官网

大型语言模型(LLMs)是无状态的,这意味着它们不会保留之前交互的信息。当您希望在多次交互中保持上下文或状态时,这可能是一个限制。为了解决这个问题,Spring AI 提供了聊天记忆功能,使您能够存储和检索在与 LLM 的多次交互中的信息。

spring-ai网址https://docs.spring.io/spring-ai/reference/api/chat-memory.html】

核心架构分为两层

  • ChatMemory(记忆管理层)

如果您需要维护所有消息交换的完整记录,您应该考虑使用其他方法,例如依赖于Spring Data以高效地存储和检索完整的聊天历史记录
Spring AI自动配置一个ChatMemory bean,您可以在应用程序中直接使用。默认情况下,它使用内存中的仓库来存储消息

策略类型 实现类 描述
消息窗口 MessageWindowChatMemory 维护一个固定大小的消息窗口,当消息数超过设定值(默认为20)时,自动移除最旧的消息。
摘要记忆 ConversationSummaryChatMemory 对超过Token限制的历史对话进行摘要,将摘要作为后续对话的上下文,节省Token用量。
时间窗口 需自定义 根据时间戳,只保留最近一段时间内的消息作为上下文。
  • ChatMemoryRepository(存储层)

存储层负责将消息存储在持久化存储中,例如数据库或文件系统。

Spring AI 提供了以下几种开箱即用的实现:

  • InMemoryChatMemoryRepository:
    • 默认实现,消息存储在内存中,适合开发或测试,重启即丢失。
  • JdbcChatMemoryRepository:
    • 用于关系型数据库持久化。官方支持 MySQL、PostgreSQL、SQL Server、HSQLDB 等

关键差异:ChatMemory 与 ChatHistory

在使用 Spring AI 的记忆功能时,理解这两个概念的区别至关重要:

  • ChatMemory:

专为维护当前对话的上下文感知而设计,用于提升模型回答质量。

  • ChatHistory:

指代完整的、原始的对话记录。官方文档明确指出,ChatMemory 不适合存储完整历史,如需保存所有记录,应考虑使用 Spring Data 等其他方案。

基于内存存储进行演示

源码示例

https://gitee.com/kcnf_open/spring-ai-sample/tree/master/spring-ai/spring-ai-sample08

  • yaml配置

    In application.yml

    spring:
    ai:
    zhipuai:
    api-key: ${ZHIPUAI_API_KEY}
    chat:
    options:
    model: glm-4v-flash
    datasource:
    url: jdbc:h2:file:./data/chat_memory
    username: sa
    password:
    driver-class-name: org.h2.Driver
    h2:
    console:
    enabled: true
    path: /h2-console
    sql:
    init:
    mode: always
    schema-locations: classpath:schema.sql

  • 测试代码

http://127.0.0.1:8082/index.html

  • 测试结果
数据库查询
  • 本地数据位置

  • 可视化客户端查询

http://localhost:8082/h2-console

复制代码
登录信息:
JDBC URL: jdbc:h2:file:./data/chat_memory
Username: sa
Password: (留空,不填)
  • 查询结果

    SELECT * FROM SPRING_AI_CHAT_MEMORY;

相关推荐
小码吃趴菜6 小时前
面试小论文准备
人工智能
最贪吃的虎6 小时前
【每日一问系列】LangChain中支持几种Model?
人工智能
AGV算法笔记6 小时前
二维码目标检测论文精读:EA-OBB 如何用轻量化旋转检测提升 QR 码定位效果?
人工智能·目标检测·目标跟踪
nap-joker6 小时前
基于大语言模型的大规模人群中的生物年龄预测
人工智能·语言模型·自然语言处理·生物年龄·器官特异的生物年龄
Omics Pro6 小时前
上海AI Lab+复旦大学:双轨协同实现自动化虚拟细胞建模
运维·人工智能·语言模型·自然语言处理·数据挖掘·数据分析·自动化
星爷AG I6 小时前
19-2 符号学(AGI基础理论)
人工智能·agi
happyprince6 小时前
2026年04月12日全球AI前沿动态
人工智能
xixixi777776 小时前
Token 经济引爆 AI 产业加速:从百模大战到百虾大战,谁在定义 2026 的中国 AI?
大数据·人工智能·机器学习·ai·大模型·算力·通信
爱上珍珠的贝壳6 小时前
ESP32-S3-CAM:豆包语音识别文字后控制小车(一)——注册豆包火山引擎开发者接口
人工智能·语音识别·智能硬件·火山引擎·esp32-s3·豆包语音