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

佛山网站推广怎么做青羊网站建设

佛山网站推广怎么做,青羊网站建设,建造网站需要多少钱,韩国原生ip站群服务器大型语言模型(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/565570.html

相关文章:

  • 爱站网自媒体数据织梦如何一个后台做两个网站
  • 黑龙江俄语网站制作制作深圳网站建设
  • 网站常用插件辽宁自助网站建设公司
  • 网站模板小偷wordpress自建站邮箱
  • 如何做网站域名解析免费的排版软件
  • 有域名如何做网站南部县网站建设公司
  • 山东省工程建设信息官方网站网站页面布局用什么做
  • 帝国cms地方门户网站模板水果网站建设案例
  • 公司内部网站建设奖励办法学习网站开发培训
  • 电子商务网站建设报告范文记事本做网站怎么改字体
  • 网站建设协议 模板下载长尾关键词挖掘网站
  • 深圳网站建设 合作品牌福州网站网页设计
  • 上海制作网站多少钱深圳市住房和建设局地址
  • ssh jsp做网站域名备案的网站名称
  • 旅游网站建设规模iis网站目录权限设置
  • 济南专业网站设计网站建设资讯站
  • 域名访问网站的知识网站建设的评价
  • 宜昌网站网站建设快三网站开发
  • 官方网站建立大连建设工程项目管理信息网
  • CP网站开发制作H5个人介绍网页
  • 天长做网站公司全球做的比较好的网站
  • 做视频直播网站需要多少资金wordpress framework
  • 建设彩票网站合法吗免费推广的软件
  • h5网站设计方案唐山网站主页制作
  • 成都网站建设详细内容什么是网站外部链接
  • 石家庄响应式模板建站服务器做网站需安装哪些软件
  • 网站建设公司的流程免费学校网站系统
  • 建设银行网站机构特点业务发展固始网站建设公司
  • 济宁网站建设济宁ui设计工作流程
  • 山西省网站建设哪家好网站开发时如何设计英文版本