Buffer for storing conversation memory and an in-memory kv store.
| 5 | |
| 6 | |
| 7 | class BufferMemory(BaseMemory): |
| 8 | """Buffer for storing conversation memory and an in-memory kv store.""" |
| 9 | |
| 10 | conversation_history = ChatMessageHistory() |
| 11 | kv_memory = {} |
| 12 | |
| 13 | def load_memory( |
| 14 | self, key: Optional[str] = None, default: Optional[Any] = None, **kwargs |
| 15 | ) -> Any: |
| 16 | """Return history buffer by key or all memories.""" |
| 17 | if not key: |
| 18 | return self.kv_memory |
| 19 | |
| 20 | return self.kv_memory.get(key, default) |
| 21 | |
| 22 | def load_conversation(self, **kwargs) -> ChatMessageHistory: |
| 23 | """Return history buffer and format it into a conversational string format.""" |
| 24 | return self.conversation_history |
| 25 | |
| 26 | def save_memory(self, key: str, value: Any) -> None: |
| 27 | self.kv_memory[key] = value |
| 28 | |
| 29 | def save_conversation( |
| 30 | self, message: str, message_type: MessageType, **kwargs |
| 31 | ) -> None: |
| 32 | """Save context from this conversation to buffer.""" |
| 33 | self.conversation_history.save_message( |
| 34 | message=message, message_type=message_type, **kwargs |
| 35 | ) |
| 36 | |
| 37 | def clear(self) -> None: |
| 38 | """Clear memory contents.""" |
| 39 | self.conversation_history.clear() |
| 40 | self.kv_memory = {} |