| Copyright | (c) 2025 Tushar Adhatrao |
|---|---|
| License | MIT |
| Maintainer | Tushar Adhatrao <tusharadhatrao@gmail.com> |
| Stability | experimental |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
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
- class BaseMemory m where
- data WindowBufferMemory = WindowBufferMemory {}
- trimChatMessage :: Int -> ChatMessage -> ChatMessage
- addAndTrim :: Int -> Message -> ChatMessage -> ChatMessage
- initialChatMessage :: Text -> ChatMessage
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
Instances
| BaseMemory WindowBufferMemory Source # | |
Defined in Langchain.Memory.Core Methods messages :: WindowBufferMemory -> IO (Either String ChatMessage) Source # addUserMessage :: WindowBufferMemory -> Text -> IO (Either String WindowBufferMemory) Source # addAiMessage :: WindowBufferMemory -> Text -> IO (Either String WindowBufferMemory) Source # addMessage :: WindowBufferMemory -> Message -> IO (Either String WindowBufferMemory) Source # clear :: WindowBufferMemory -> IO (Either String WindowBufferMemory) Source # | |
data WindowBufferMemory Source #
Sliding window memory implementation. Stores chat history with maximum size limit.
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
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"]