# summarizationMiddleware

> **Function** in `langchain`

📖 [View in docs](https://reference.langchain.com/javascript/langchain/index/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.

## Signature

```javascript
summarizationMiddleware(options: __type): AgentMiddleware<undefined, ZodObject<__type & __type, "strip", ZodTypeAny, __type, __type>, __type, readonly ClientTool | ServerTool[], readonly []>
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `options` | `__type` | Yes | Configuration options for the summarization middleware |

## Returns

`AgentMiddleware<undefined, ZodObject<__type & __type, "strip", ZodTypeAny, __type, __type>, __type, readonly ClientTool | ServerTool[], readonly []>`

A middleware instance

## Examples

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

// Single condition: trigger if tokens >= 4000 AND messages >= 10
const agent1 = createAgent({
  llm: model,
  tools: [getWeather],
  middleware: [
    summarizationMiddleware({
      model: new ChatOpenAI({ model: "gpt-4o" }),
      trigger: { tokens: 4000, messages: 10 },
      keep: { messages: 20 },
    })
  ],
});

// Multiple conditions: trigger if (tokens >= 5000 AND messages >= 3) OR (tokens >= 3000 AND messages >= 6)
const agent2 = createAgent({
  llm: model,
  tools: [getWeather],
  middleware: [
    summarizationMiddleware({
      model: new ChatOpenAI({ model: "gpt-4o" }),
      trigger: [
        { tokens: 5000, messages: 3 },
        { tokens: 3000, messages: 6 },
      ],
      keep: { messages: 20 },
    })
  ],
});
```

---

[View source on GitHub](https://github.com/langchain-ai/langchainjs/blob/6d212ef91affd19b71dac22fd3761287a96108bf/libs/langchain/src/agents/middleware/summarization.ts#L279)