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

wordpress云建站系统百度网盘app下载

wordpress云建站系统,百度网盘app下载,用织梦搭建网站,时时彩 网站开发大型语言模型(LLMs)是无状态的,这意味着它们不会保留关于之前交互的信息。当想在多次交互中保持上下文或状态时,这可能会成为一个限制。为了解决这一问题,Spring AI 提供了对话记忆功能,允许你在与大型语言…

大型语言模型(LLMs)是无状态的,这意味着它们不会保留关于之前交互的信息。当想在多次交互中保持上下文或状态时,这可能会成为一个限制。为了解决这一问题,Spring AI 提供了对话记忆功能,允许你在与大型语言模型的多次交互中存储和检索信息。

“对话记忆”(ChatMemory)抽象类让你能够实现多种类型的记忆,以支持不同的使用场景。消息的底层存储由“对话记忆存储库”(ChatMemoryRepository)处理,其唯一职责就是存储和检索消息。具体保留哪些消息以及何时删除这些消息,则由“对话记忆”(ChatMemory)的具体实现来决定。策略示例可能包括保留最近的 N 条消息、保留一段时间内的消息,或者保留不超过一定令牌(token)数量限制的消息。

在选择记忆类型之前,了解对话记忆与对话历史记录之间的区别至关重要。

  • 对话记忆(Chat Memory):大型语言模型在对话过程中保留并用于维持上下文感知能力的信息。
  • 对话历史记录(Chat History):整个对话过程的全部记录,包括用户与模型之间交换的所有消息。

“对话记忆”(ChatMemory)抽象类旨在管理对话记忆。它允许你存储和检索与当前对话上下文相关的消息。然而,它并不适合用于存储对话历史记录。如果你需要保留所有交换消息的完整记录,应考虑采用其他方法,例如借助 Spring Data 来高效存储和检索完整的对话历史记录。

快速入门

Spring AI 会自动配置一个 ChatMemory bean,可以直接在应用程序中使用它。默认情况下,它使用一个内存存储库来存储消息(InMemoryChatMemoryRepository)以及一个 MessageWindowChatMemory 实现来管理对话历史记录。如果已经配置了不同的存储库(例如 Cassandra、JDBC 或 Neo4j),Spring AI 将会改用该存储库。

@Autowired
ChatMemory chatMemory;

接下来的将进一步介绍 Spring AI 中可用的不同记忆类型和存储库。

记忆类型

“对话记忆”(ChatMemory)抽象类允许实现各种类型的记忆,以适应不同的使用场景。记忆类型的选择会显著影响应用程序的性能和行为。本节将介绍 Spring AI 提供的内置记忆类型及其特性。

消息窗口对话记忆(Message Window Chat Memory)

MessageWindowChatMemory 会维护一个消息窗口,其中包含的消息数量不超过指定的最大值。当消息数量超过该最大值时,较旧的消息会被移除,但系统消息会得以保留。默认的窗口大小为 20 条消息。

MessageWindowChatMemory memory = MessageWindowChatMemory.builder().maxMessages(10).build();

这是 Spring AI 用于自动配置 ChatMemory bean 的默认消息类型。

记忆存储

Spring AI 提供了 ChatMemoryRepository 抽象类用于存储对话记忆。本节将介绍 Spring AI 提供的内置存储库及其使用方法,不过,如果有需要,也可以自行实现存储库。

内存存储库

InMemoryChatMemoryRepository 使用 ConcurrentHashMap 在内存中存储消息。

默认情况下,如果尚未配置其他存储库,Spring AI 会自动配置一个类型为 InMemoryChatMemoryRepository 的 ChatMemoryRepository bean,你可以直接在应用程序中使用它。

@Autowired
ChatMemoryRepository chatMemoryRepository;

也可以手动创建 InMemoryChatMemoryRepository,按照以下方式操作:

ChatMemoryRepository repository = new InMemoryChatMemoryRepository();

JdbcChatMemoryRepository

JdbcChatMemoryRepository 是一个内置实现,它使用 JDBC 将消息存储在关系型数据库中。它开箱即用地支持多种数据库,非常适合需要持久化存储对话记忆的应用程序。

首先,将以下依赖项添加到项目中:

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

Spring AI 为 JdbcChatMemoryRepository 提供了自动配置功能,可以直接在应用程序中使用它。

@Autowired
JdbcChatMemoryRepository chatMemoryRepository;ChatMemory chatMemory = MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(10).build();

如果更倾向于手动创建 JdbcChatMemoryRepository,可以通过提供一个 JdbcTemplate 实例和一个 JdbcChatMemoryRepositoryDialect 来实现:

ChatMemoryRepository chatMemoryRepository = JdbcChatMemoryRepository.builder().jdbcTemplate(jdbcTemplate).dialect(new PostgresChatMemoryDialect()).build();ChatMemory chatMemory = MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(10).build();
支持的数据库与方言抽象

Spring AI 通过方言抽象支持多种关系型数据库。以下数据库是开箱即用地支持的:

  • PostgreSQL
  • MySQL / MariaDB
  • SQL Server
  • HSQLDB

当使用 JdbcChatMemoryRepositoryDialect.from(DataSource) 时,可以从 JDBC URL 中自动检测出正确的方言。可以通过实现 JdbcChatMemoryRepositoryDialect 接口来扩展对其他数据库的支持。

配置属性以下是翻译结果,使用表格呈现:
属性描述默认值
spring.ai.chat.memory.repository.jdbc.initialize-schema控制何时初始化数据库模式。可选值:embedded(默认)、always、never。embedded
spring.ai.chat.memory.repository.jdbc.schema用于初始化的模式脚本位置。支持 classpath: URL 和平台占位符。classpath:org/springframework/ai/chat/memory/repository/jdbc/schema-@@platform@@.sql
spring.ai.chat.memory.repository.jdbc.platform如果使用了 @@platform@@ 占位符,则在初始化脚本中使用的平台。自动检测
Schema 初始化

自动配置会在启动时,使用针对你数据库的供应商特定的 SQL 脚本,自动创建 SPRING_AI_CHAT_MEMORY 表。默认情况下,模式初始化仅针对嵌入式数据库(如 H2、HSQL、Derby 等)运行。

可以使用 spring.ai.chat.memory.repository.jdbc.initialize-schema 属性来控制模式初始化:

spring.ai.chat.memory.repository.jdbc.initialize-schema=embedded # 仅针对嵌入式数据库进行初始化(默认设置)spring.ai.chat.memory.repository.jdbc.initialize-schema=always # 总是进行初始化spring.ai.chat.memory.repository.jdbc.initialize-schema=never # 从不进行初始化(在与 Flyway/Liquibase 等数据库迁移工具一起使用时很有用)

若要覆盖模式脚本的位置,可以使用以下方式:

spring.ai.chat.memory.repository.jdbc.schema=classpath:/custom/path/schema-mysql.sql
扩展方言

若要为新数据库添加支持,需要实现 JdbcChatMemoryRepositoryDialect 接口,并提供用于选择、插入和删除消息的 SQL 语句。然后,你可以将自己的自定义方言传递给存储库构建器。

ChatMemoryRepository chatMemoryRepository = JdbcChatMemoryRepository.builder().jdbcTemplate(jdbcTemplate).dialect(new MyCustomDbDialect()).build();

CassandraChatMemoryRepository

CassandraChatMemoryRepository 使用 Apache Cassandra 来存储消息。它适用于需要持久化存储聊天记忆的应用程序,尤其是在需要高可用性、持久性、可扩展性以及利用生存时间(TTL,Time-To-Live)特性时。

CassandraChatMemoryRepository 采用时间序列模式,会记录所有过去的聊天窗口,这对于治理和审计非常有价值。建议将生存时间(TTL)设置为某个值,例如三年。

若要使用 CassandraChatMemoryRepository,首先需要在项目中添加相关依赖:

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

Spring AI 为 CassandraChatMemoryRepository 提供了自动配置功能,可以直接在应用程序中使用它。

@Autowired
CassandraChatMemoryRepository chatMemoryRepository;ChatMemory chatMemory = MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(10).build();

如果更倾向于手动创建 CassandraChatMemoryRepository,可以通过提供一个 CassandraChatMemoryRepositoryConfig 实例来实现:

ChatMemoryRepository chatMemoryRepository = CassandraChatMemoryRepository.create(CassandraChatMemoryConfig.builder().withCqlSession(cqlSession));ChatMemory chatMemory = MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(10).build();
配置属性
http://www.dtcms.com/wzjs/445560.html

相关文章:

  • 婚介交友网站建设真正永久免费的建站系统有哪些
  • 龙口网站设计北京网站优化方式
  • 本地安装wordpress账户是什么seo推广软件品牌
  • 那里有网站建设行业关键词一览表
  • wordpress 仿ifanr宁波优化推广找哪家
  • 万州那家做网站seo搜索引擎优化推广
  • 聊城做网站公司聊城博达云资源软文发布平台
  • 织梦网站公司seo是什么级别
  • dw网站结构图怎么做网络舆情
  • 手机壳在线设计网站引流推广营销
  • 临沂免费做网站什么是搜索引擎推广
  • 如何建导航网站网站设计公司排行
  • 上海定制网站建设公司企业培训计划方案
  • 沈阳做网站的网店运营工资一般多少
  • 可信网站认证是否必须做网络营销运营推广
  • 网站开发尾款如何做账seo网站优化多少钱
  • 网页设计与制作模板图片山东网站seo推广优化价格
  • 优秀材料写作网站媒体宣传推广方案
  • 如何建一个购物网站2023年8月疫情严重吗
  • 申请收费网站空间注册一个网站
  • 武义网站建设山东百度推广
  • 图书馆网站建设规划电商怎么做新手入门
  • 装修公司网站模板下载北京seo关键词优化收费
  • 上海网站建设方案服务数字营销服务商seo
  • 网上服务seo基础知识培训视频
  • 潍坊有哪些网站学历提升
  • 北京网站设计服务商百度营销登录入口
  • 如何做淘宝网网站域名教育机构
  • 跨境电商无货源怎么做google关键词优化排名
  • 网站建设的业务范围站长素材