admin 管理员组

文章数量: 1184232

核心需求拆解​

首先得明确什么是 “记忆隔离”。在对话系统里,这意味着:​

  • 用户 A 的历史对话不能被用户 B 获取​
  • 同一用户的多轮对话必须保持上下文连贯​

技术选型思路​

SpringAI 本身提供了对话记忆(ChatMemory),如果不用这个的话就得手动维护一轮对话中上下文内容,会非常麻烦,ChatMemory实际上内部也是封装了一个map,这个map大致就是Map<用户id,List<消息>>这样子的结构,通过这个id进行用户的记忆隔离。本文先用基于内存的方式实现

实现步骤详解

1.导入ChatMemory所用到的包,使用ChatMemoryAutoConfigure配置类

 <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-autoconfigure-model-chat-memory</artifactId>
 </dependency>

2.在构造出ChatClient加上ChatMemory的配置

ChatClient chatClient = ChatClient
                .builder(dashScopeChatModel)
                //chatMemory专门提供存储记录的功能
                .defaultAdvisors(PromptChatMemoryAdvisor.builder(chatMemory).build())
                .defaultOptions(ChatOptions.builder().<

本文标签: 多用户 记忆 SpringAI