code: from typing import Any, Dict, List, Union
  
  from langchain.memory.chat_memory import BaseChatMemory
  from langchain.schema.messages import BaseMessage, get_buffer_string
  
  
  class ConversationBufferWindowMemory(BaseChatMemory):
      """Buffer for storing conversation memory inside a limited size window."""
  
      human_prefix: str = "Human"
      ai_prefix: str = "AI"
      memory_key: str = "history"  #: :meta private:
      k: int = 5
      """Number of messages to store in buffer."""
  
      @property
      def buffer(self) -> Union[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 True."""
          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 False."""
          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.
  
          :meta private:
          """
          return [self.memory_key]
  
      def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]:
          """Return history buffer."""
          return {self.memory_key: self.buffer}
  
apis: langchain.schema.messages.get_buffer_string
extract_api: [((899, 989), 'langchain.schema.messages.get_buffer_string', 'get_buffer_string', (['messages'], {'human_prefix': 'self.human_prefix', 'ai_prefix': 'self.ai_prefix'}), '(messages, human_prefix=self.human_prefix, ai_prefix=self.\n    ai_prefix)\n', (916, 989), False, 'from langchain.schema.messages import BaseMessage, get_buffer_string\n')]