所有的大模型本身是不进行信息存储的,也不提供连续对话功能,所以想要实现连续对话功能需要开发者自己写代码才能实现。那怎么才能实现大模型的连续对话功能呢?
大模型连续对话功能不同的框架实现也是不同的,以行业使用最多的 Java AI 框架 Spring AI 和 Spring AI Alibaba 为例,给大家演示一下它们连续对话是如何实现的。
1.SpringAI连续对话实现
Spring AI 以 MySQL 数据库为例,我们来实现一下它的连续对话功能。
“
PS:我们只有先讲对话存储起来,才能实现连续对话功能,所以我们需要借助数据库存储来连续对话。
(1)准备工作
创建表:
添加数据库和 MyBatisPlus 依赖:
设置配置文件:
编写实体类:
编写 Mapper:
(2)自定义ChatMemory类
自定义的 ChatMemory 实现类,将对话记录存储到 MySQL:
(3)代码调用
编写代码测试历史对话保存到 MySQL 的功能:
以上程序执行结果如下:
2.SpringAIAlibaba实现连续对话
Spring AI Alibaba 连续对话的实现就简单很多了,因为它内置了 MySQL 和 Redis 的连续对话存储方式,接下来以 Redis 为例演示 SAA 的连续对话实现,它的实现步骤如下:
- 添加依赖。
- 设置配置文件,配置 Redis 连接信息。
- 添加 Redis 配置类,注入 RedisChatMemoryRepository 对象。
- 配置 ChatClient 实现连续对话。
具体实现如下。
(1)添加依赖
(2)设置配置文件
设置配置文件,配置 Redis 连接信息:
(3)添加Redis配置类
添加 Redis 配置类,注入 RedisChatMemoryRepository 对象,实现 Redis 自定义存储器注入:
(4)配置ChatClient实现连续对话
小结
通过以上代码大家也可以看出来,使用 Spring AI 实现连续对话是比较复杂的,需要自己实现数据库增删改查的代码,并且重写 ChatMemory 才能实现连续对话功能;而 Spring AI Alibaba 因为内置了连续对话的多种实现(Redis 和其他数据库),所以只需要简单配置就可以实现了。