ConversationBufferWindowMemory Class — langchain Architecture
Architecture documentation for the ConversationBufferWindowMemory class in buffer_window.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4["ConversationBufferWindowMemory"] 48fb025a_9570_1ddd_d527_ec72c1ae6a6f["BaseChatMemory"] c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4 -->|extends| 48fb025a_9570_1ddd_d527_ec72c1ae6a6f fbc9e121_0c24_f36f_971f_2f0eb9d4238a["buffer_window.py"] c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4 -->|defined in| fbc9e121_0c24_f36f_971f_2f0eb9d4238a b0159363_70cc_d205_abb2_4321e1d1f248["buffer()"] c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4 -->|method| b0159363_70cc_d205_abb2_4321e1d1f248 4fb98dac_c79b_c7d5_66e3_7fd248255c6f["buffer_as_str()"] c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4 -->|method| 4fb98dac_c79b_c7d5_66e3_7fd248255c6f f1dfaa90_5e6d_93cc_0578_ef0cdbbe4b04["buffer_as_messages()"] c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4 -->|method| f1dfaa90_5e6d_93cc_0578_ef0cdbbe4b04 9b74ee00_453c_1b44_2f9d_e5b2c4b3673c["memory_variables()"] c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4 -->|method| 9b74ee00_453c_1b44_2f9d_e5b2c4b3673c d257d269_e284_5e2b_d56e_0e246f8bf49c["load_memory_variables()"] c8a80cfc_d57e_8f95_f465_c5bd71e2a7d4 -->|method| d257d269_e284_5e2b_d56e_0e246f8bf49c
Relationship Graph
Source Code
libs/langchain/langchain_classic/memory/buffer_window.py lines 18–59
class ConversationBufferWindowMemory(BaseChatMemory):
"""Use to keep track of the last k turns of a conversation.
If the number of messages in the conversation is more than the maximum number
of messages to keep, the oldest messages are dropped.
"""
human_prefix: str = "Human"
ai_prefix: str = "AI"
memory_key: str = "history"
k: int = 5
"""Number of messages to store in buffer."""
@property
def buffer(self) -> str | list[BaseMessage]:
"""String buffer of memory."""
return self.buffer_as_messages if self.return_messages else self.buffer_as_str
@property
def buffer_as_str(self) -> str:
"""Exposes the buffer as a string in case return_messages is False."""
messages = self.chat_memory.messages[-self.k * 2 :] if self.k > 0 else []
return get_buffer_string(
messages,
human_prefix=self.human_prefix,
ai_prefix=self.ai_prefix,
)
@property
def buffer_as_messages(self) -> list[BaseMessage]:
"""Exposes the buffer as a list of messages in case return_messages is True."""
return self.chat_memory.messages[-self.k * 2 :] if self.k > 0 else []
@property
def memory_variables(self) -> list[str]:
"""Will always return list of memory variables."""
return [self.memory_key]
@override
def load_memory_variables(self, inputs: dict[str, Any]) -> dict[str, Any]:
"""Return history buffer."""
return {self.memory_key: self.buffer}
Extends
Source
Frequently Asked Questions
What is the ConversationBufferWindowMemory class?
ConversationBufferWindowMemory is a class in the langchain codebase, defined in libs/langchain/langchain_classic/memory/buffer_window.py.
Where is ConversationBufferWindowMemory defined?
ConversationBufferWindowMemory is defined in libs/langchain/langchain_classic/memory/buffer_window.py at line 18.
What does ConversationBufferWindowMemory extend?
ConversationBufferWindowMemory extends BaseChatMemory.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free