Home / Class/ ConversationBufferWindowMemory Class — langchain Architecture

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

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