langchain.js
    Preparing search index...

    Function summarizationMiddleware

    • Summarization middleware that automatically summarizes conversation history when token limits are approached.

      This middleware monitors message token counts and automatically summarizes older messages when a threshold is reached, preserving recent messages and maintaining context continuity by ensuring AI/Tool message pairs remain together.

      Parameters

      • options: InferInteropZodInput

        Configuration options for the summarization middleware

      Returns AgentMiddleware<
          undefined,
          ZodObject<
              {
                  maxTokensBeforeSummary: ZodOptional<ZodNumber>;
                  messagesToKeep: ZodDefault<ZodNumber>;
                  model: ZodType<BaseLanguageModel, ZodTypeDef, BaseLanguageModel>;
                  summaryPrefix: ZodDefault<ZodString>;
                  summaryPrompt: ZodDefault<ZodString>;
                  tokenCounter: ZodOptional<
                      ZodFunction<
                          ZodTuple<[ZodArray<ZodAny, "many">], ZodUnknown>,
                          ZodUnion<[ZodNumber, ZodPromise<ZodNumber>]>,
                      >,
                  >;
              },
              "strip",
              ZodTypeAny,
              {
                  maxTokensBeforeSummary?: number;
                  messagesToKeep: number;
                  model?: any;
                  summaryPrefix: string;
                  summaryPrompt: string;
                  tokenCounter?: (
                      ...args: [any[], ...unknown[]],
                  ) => number | Promise<number>;
              },
              {
                  maxTokensBeforeSummary?: number;
                  messagesToKeep?: number;
                  model?: any;
                  summaryPrefix?: string;
                  summaryPrompt?: string;
                  tokenCounter?: (
                      ...args: [any[], ...unknown[]],
                  ) => number | Promise<number>;
              },
          >,
          any,
      >

      A middleware instance

      import { summarizationMiddleware } from "langchain";
      import { createAgent } from "langchain";

      const agent = createAgent({
      llm: model,
      tools: [getWeather],
      middleware: [
      summarizationMiddleware({
      model: new ChatOpenAI({ model: "gpt-4o" }),
      maxTokensBeforeSummary: 4000,
      messagesToKeep: 20,
      })
      ],
      });