langchain-hs-0.0.2.0: Haskell implementation of Langchain
Copyright(c) 2025 Tushar Adhatrao
LicenseMIT
MaintainerTushar Adhatrao <[email protected]>
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Langchain.Memory.Core

Description

Implementation of LangChain's memory management patterns, providing:

  • Chat history tracking with size limits
  • Message addition/trimming strategies
  • Integration with Runnable workflows

Example usage:

-- Create memory with 5-message window
memory = WindowBufferMemory 5 (initialChatMessage "You are an assistant")

-- Add user message
newMemory <- addUserMessage memory "Hello, world!"

-- Retrieve current messages
messages <- messages newMemory
-- Right [Message System "...", Message User "Hello, world!"]
Synopsis

Documentation

class BaseMemory m where Source #

Base typeclass for memory implementations Defines standard operations for chat history management.

Example instance:

instance BaseMemory MyMemory where
  messages = ...
  addUserMessage = ...

Methods

messages :: m -> IO (Either String ChatMessage) Source #

Retrieve current chat history

addUserMessage :: m -> Text -> IO (Either String m) Source #

Add user message to history

addAiMessage :: m -> Text -> IO (Either String m) Source #

Add AI response to history

addMessage :: m -> Message -> IO (Either String m) Source #

Add generic message to history

clear :: m -> IO (Either String m) Source #

Reset memory to initial state

data WindowBufferMemory Source #

Sliding window memory implementation. Stores chat history with maximum size limit.

Note: This implementation will not trim system messages.

Example:

>>> let mem = WindowBufferMemory 2 (NE.singleton (Message System "Sys" defaultMessageData))
>>> addMessage mem (Message User "Hello" defaultMessageData)
Right (WindowBufferMemory {maxWindowSize = 2, ...})

Constructors

WindowBufferMemory 

Fields

Instances

Instances details
Show WindowBufferMemory Source # 
Instance details

Defined in Langchain.Memory.Core

Eq WindowBufferMemory Source # 
Instance details

Defined in Langchain.Memory.Core

BaseMemory WindowBufferMemory Source # 
Instance details

Defined in Langchain.Memory.Core

Runnable WindowBufferMemory Source # 
Instance details

Defined in Langchain.Memory.Core

type RunnableInput WindowBufferMemory Source # 
Instance details

Defined in Langchain.Memory.Core

type RunnableOutput WindowBufferMemory Source # 
Instance details

Defined in Langchain.Memory.Core

trimChatMessage :: Int -> ChatMessage -> ChatMessage Source #

Trim chat history to last n messages Example:

>>> let msgs = NE.fromList [msg1, msg2, msg3]
>>> trimChatMessage 2 msgs
[msg2, msg3]

addAndTrim :: Int -> Message -> ChatMessage -> ChatMessage Source #

Add and maintain window size Example:

>>> let msgs = NE.fromList [msg1]
>>> addAndTrim 2 msg2 msgs
[msg1, msg2]

initialChatMessage :: Text -> ChatMessage Source #

Create initial chat history Example:

>>> initialChatMessage "You are Qwen"
[Message System "You are Qwen"]