LimitedConversationBufferMemory.py 782 B

1234567891011121314151617181920212223
  1. from langchain.memory import ConversationBufferMemory
  2. from typing import Dict, Any
  3. from pydantic import Field
  4. class LimitedConversationBufferMemory(ConversationBufferMemory):
  5. """
  6. 可以设置大小的对话Memeory缓存
  7. """
  8. max_size: int = Field(default=10, description="缓存大小")
  9. def __init__(self, max_size: int = 500, **kwargs: Any):
  10. super().__init__(**kwargs)
  11. self.max_size = max_size
  12. def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, str]) -> None:
  13. # 先调用父类的保存方法
  14. super().save_context(inputs, outputs)
  15. # 当缓冲区超过最大大小时,移除最早的消息
  16. while len(self.chat_memory.messages) > self.max_size:
  17. self.chat_memory.messages.pop(0)