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

wordpress云建站系统我的百度购物订单

wordpress云建站系统,我的百度购物订单,360网站做推广,网站大全浏览器大型语言模型(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/43998.html

相关文章:

  • wordpress加密视频seo是什么姓
  • 培训学校类网站建设方案网店推广方式有哪些
  • 做多语言网站多少钱google搜索引擎入口下载
  • 手机网站如何制作手机百度官网
  • 网站视频如何下载铜川网络推广
  • 玉环网站建设app001推广平台官网
  • 网站建设的基本技术步骤seo提升排名技巧
  • 天津个人做网站steam交易链接在哪里
  • 响应式网站 分辨率女排联赛排名
  • 佛山自己网站建设怎么被百度收录
  • 中山网站制作公司手机网站排名优化
  • 王烨烨seo新方法
  • 建设网站翻译英文翻译一键优化表格
  • 山东做网站网站排名点击工具
  • 网站开发编辑器百度小说风云榜排名
  • 网站建设多少钱个人百度知道答题赚钱
  • 网站如何判断做的好不好网站建设服务
  • 昆明做网站排名快手推广网站
  • 深圳网站建设 手机网站建设开源seo软件
  • 怎样用dede搭建网站产品营销网站建设
  • 音乐网站制作教程步骤哈尔滨企业网站模板建站
  • 做外贸的网站主要有哪些内容哪些行业适合做网络推广
  • 郑州门户网站建设怎么发布信息到百度
  • 怎么自己做网站服务器linux百度推广全国代理商排名
  • 如何利用dw建设网站网站seo分析报告
  • wordpress引用图片广州seo招聘信息
  • 外国网站翻墙怎么做sem优化师
  • 长沙房地产开发商排名百度刷排名seo软件
  • 企业网站无锡怎么做ppt
  • livemesh wordpress重庆seo优化公司