SpringAi高度自定义Mysql数据库持久化教程

SpringAi高度自定义Mysql数据库持久化教程
何平安总所周知SpringAi提供的Mysql JDBC数据库记忆存储的表只有四个字段,这非常限制了我们的发挥,想要实现高度自定义可以参考我的方法;
创建MysqlChatMemory类:
1 |
|
可以看到ChatMemory有四个方法可以实现,get就是获取数据列表,其中last(“limit 10”)就是限制10条对话记忆上下文,同等于MessageWindowChatMemory.builder().chatMemoryRepository(chatMemoryRepository).maxMessages(15).build();
这里可以看到我的add方法没有实现,因为它传入的Message只能获取对话角色,文本,媒体三个参数;所以我们就需要在对话完后自己去添加数据库,参考我的对话代码:、
Flux<String> content = chatClient.prompt() .user(messageDto.getMessage()) .advisors(advisorSpec -> advisorSpec.param(CONVERSATION_ID, messageDto.getChatId())) .stream() .content(); content.doOnNext(chunk -> {}).reduce((s1, s2) -> s1 + s2).subscribe( result -> { // 流式结束后, springAiChatMemoryMapper.insert(new SpringAiChatMemory() .setContent(messageDto.getMessage()) .setType("USER") .setModel(modelName) .setConversationId(messageDto.getChatId()) .setTimestamp(LocalDateTime.now())); springAiChatMemoryMapper.insert(new SpringAiChatMemory() .setContent(result) .setModel(modelName) .setType("ASSISTANT") .setConversationId(messageDto.getChatId()) .setTimestamp(LocalDateTime.now())); } ); return content;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
我的SpringAiChatMemory:
```java
@Data
@Accessors(chain = true)
@TableName(value = "spring_ai_chat_memory")
public class SpringAiChatMemory {
private Long id;
private String conversationId;
private String content;
private String type;
private LocalDateTime timestamp;
private String model;
}
我在这里就实现了对话模型数据的添加,原来的JdbcChatMemoryRepository是没有这个字段的;
在线体验我的作品: https://hepingan.top
评论
匿名评论隐私政策