更新时间:2024-11-21 GMT+08:00
配置Histroy(Java SDK)
History缓存,用于存储历史对话信息,辅助模型理解上下文信息,历史消息对有固定窗口、消息摘要等策略。
- 初始化:消息记录支持不同的存储方式,如内存、DCS(Redis)、RDS(Sql)。
import com.huaweicloud.pangu.dev.sdk.api.memory.config.MessageHistoryConfig; import com.huaweicloud.pangu.dev.sdk.api.memory.config.ServerInfoRedis; import com.huaweicloud.pangu.dev.sdk.api.memory.config.ServerInfoSql; import com.huaweicloud.pangu.dev.sdk.memory.messagehistory.ChatMessageHistory; import com.huaweicloud.pangu.dev.sdk.memory.messagehistory.RedisChatMessageHistory; import com.huaweicloud.pangu.dev.sdk.memory.messagehistory.SqlChatMessageHistory; String sessionTag = "session_tag_test"; // 内存型 ChatMessageHistory chatMessage = new ChatMessageHistory(); // Redis RedisChatMessageHistory redisChat = new RedisChatMessageHistory(MessageHistoryConfig.builder() .serverInfo(ServerInfoRedis.builder().build()) .sessionTag("test-memory-0624") .build()); // Sql SqlChatMessageHistory sqlChat = new SqlChatMessageHistory( MessageHistoryConfig.builder().serverInfo(ServerInfoSql.builder().build()).sessionTag(sessionTag).build());
- 添加、查找、删除数据。
//更新数据 chatMessage.addAIMessage("i am ai."); chatMessage.addUserMessage("i am tester."); // 查找数据 chatMessage.getMessages().toString(); // 清理 chatMessage.clear();
- 消息策略(windows-size):将固定轮次历史对话信息,作为历史上下文信息。
import com.huaweicloud.pangu.dev.sdk.api.memory.config.MemoryStoreConfig; import com.huaweicloud.pangu.dev.sdk.api.memory.config.MessageHistoryConfig; import com.huaweicloud.pangu.dev.sdk.llms.model.MessagePo; import com.huaweicloud.pangu.dev.sdk.memory.messagehistory.RedisChatMessageHistory; import com.huaweicloud.pangu.dev.sdk.api.memory.config.ServerInfoRedis; import com.huaweicloud.pangu.dev.sdk.memory.ConversationBufferMemory; // 历史消息存储 RedisChatMessageHistory redisChat = new RedisChatMessageHistory(MessageHistoryConfig.builder() .serverInfo(ServerInfoRedis.builder().build()) .sessionTag("test-memory") .build()); // 固定窗口策略 ConversationBufferMemory memory = new ConversationBufferMemory(MemoryStoreConfig.builder().messageHistory(redisChat).build()); memory.getChatMessage().addUserMessage("This is me, the human"); memory.getChatMessage().addAIMessage("This is me, the AI"); System.out.print(MessagePo.toString(memory.getChatMessage().getMessages())); memory.getChatMessage().clear();
- 消息策略(信息摘要):将历史消息进行摘要后,作为历史上下文信息。
import com.huaweicloud.pangu.dev.sdk.api.memory.config.MemoryStoreConfig; import com.huaweicloud.pangu.dev.sdk.api.memory.config.MessageHistoryConfig; import com.huaweicloud.pangu.dev.sdk.llms.model.MessagePo; import com.huaweicloud.pangu.dev.sdk.memory.messagehistory.RedisChatMessageHistory; import com.huaweicloud.pangu.dev.sdk.api.memory.config.ServerInfoRedis; import com.huaweicloud.pangu.dev.sdk.memory.ConversationSummaryMemory; // 历史消息存储 RedisChatMessageHistory redisChat = new RedisChatMessageHistory(MessageHistoryConfig.builder() .serverInfo(ServerInfoRedis.builder().build()) .sessionTag("test-memory") .build()); // 摘要策略 ConversationSummaryMemory memory = new ConversationSummaryMemory(MemoryStoreConfig.builder().messageHistory(redisChat).llm(LLMs.of(LLMs.PANGU)).build()); memory.getChatMessage().addUserMessage("This is me, the human"); memory.getChatMessage().addAIMessage("This is me, the AI"); System.out.print(MessagePo.toString(memory.getChatMessage().getMessages())); memory.getChatMessage().clear();
父主题: 配置Memory(Java SDK)