Interface ChatMemory

All Known Implementing Classes:
MessageWindowChatMemory, TokenWindowChatMemory

public interface ChatMemory
Represents the memory (history) of a chat conversation. Since language models do not keep the state of the conversation, it is necessary to provide all previous messages on every interaction with the language model. ChatMemory helps with keeping track of the conversation and ensuring that messages fit within language model's context window.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    add(ChatMessage message)
    Adds a message to the chat memory.
    default void
    add(ChatMessage... messages)
    Adds messages to the chat memory
    default void
    Adds messages to the chat memory
    void
    Clears the chat memory.
    id()
    The ID of the ChatMemory.
    Retrieves messages from the chat memory.
    default void
    set(ChatMessage... messages)
    Replaces all messages in the chat memory with the specified messages.
    default void
    Replaces all messages in the chat memory with the specified messages.
  • Method Details

    • id

      Object id()
      The ID of the ChatMemory.
      Returns:
      The ID of the ChatMemory.
    • add

      void add(ChatMessage message)
      Adds a message to the chat memory.
      Parameters:
      message - The ChatMessage to add.
    • add

      default void add(ChatMessage... messages)
      Adds messages to the chat memory
      Parameters:
      messages - The ChatMessages to add
    • add

      default void add(Iterable<ChatMessage> messages)
      Adds messages to the chat memory
      Parameters:
      messages - The ChatMessages to add
    • set

      default void set(ChatMessage... messages)
      Replaces all messages in the chat memory with the specified messages. Unlike add, this method replaces the entire message history rather than appending to it.

      The default implementation delegates to set(Iterable<ChatMessage>).

      NOTE: This method is never called automatically by LangChain4j.

      Parameters:
      messages - The ChatMessages to set. Must not be null or empty.
      Since:
      1.11.0
    • set

      default void set(Iterable<ChatMessage> messages)
      Replaces all messages in the chat memory with the specified messages. Unlike add, this method replaces the entire message history rather than appending to it.

      Implementations should override this method to provide more efficient atomic operations if possible. The default implementation calls clear() followed by add(Iterable<ChatMessage>) which is not atomic.

      This method will typically be used when chat memory needs to be re-written to implement things like memory compaction.

      NOTE: This method is never called automatically by LangChain4j.

      Parameters:
      messages - The ChatMessages to set. Must not be null or empty.
      Since:
      1.11.0
    • messages

      List<ChatMessage> messages()
      Retrieves messages from the chat memory. Depending on the implementation, it may not return all previously added messages, but rather a subset, a summary, or a combination thereof.
      Returns:
      A list of ChatMessage objects that represent the current state of the chat memory.
    • clear

      void clear()
      Clears the chat memory.