langchain.js
    Preparing search index...

    Interface ContextEdit

    Protocol describing a context editing strategy.

    Implement this interface to create custom strategies for managing conversation context size. The apply method should modify the messages array in-place and return the updated token count.

    import { SystemMessage } from "langchain";

    class RemoveOldSystemMessages implements ContextEdit {
    async apply({ tokens, messages, countTokens }) {
    // Remove old system messages if over limit
    if (tokens > 50000) {
    messages = messages.filter(SystemMessage.isInstance);
    return await countTokens(messages);
    }
    return tokens;
    }
    }
    interface ContextEdit {
        apply(
            params: {
                countTokens: TokenCounter;
                messages: BaseMessage[];
                tokens: number;
            },
        ): number
        | Promise<number>;
    }

    Implemented by

    Index

    Methods

    Methods

    • Apply an edit to the message list, returning the new token count.

      This method should:

      1. Check if editing is needed based on tokens parameter
      2. Modify the messages array in-place (if needed)
      3. Return the new token count after modifications

      Parameters

      • params: { countTokens: TokenCounter; messages: BaseMessage[]; tokens: number }

        Parameters for the editing operation

        • countTokens: TokenCounter

          Function to count tokens in a message array

        • messages: BaseMessage[]

          Array of messages to potentially edit (modify in-place)

        • tokens: number

          Current token count of all messages

      Returns number | Promise<number>

      The updated token count after applying edits