更新时间:2024-10-16 GMT+08:00
分享

History

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();

相关文档