Files
curso-langchain/slides/pages/agents/17.md
T
2026-05-29 11:50:55 +02:00

991 B

layout
layout
default

Middleware: Limitar Historial (Trim)

import { RemoveMessage } from "@langchain/core/messages";
import { createAgent, createMiddleware } from "langchain";
import { MemorySaver, REMOVE_ALL_MESSAGES } from "@langchain/langgraph";

const trimMessages = createMiddleware({
  name: "TrimMessages",
  beforeModel: (state) => {
    const messages = state.messages;
    if (messages.length <= 5) return;  // No recortar si hay pocos

    // Mantener primer mensaje + últimos 4
    const firstMsg = messages[0];
    const recentMsgs = messages.slice(-4);
    const newMessages = [firstMsg, ...recentMsgs];

    return {
      messages: [
        new RemoveMessage({ id: REMOVE_ALL_MESSAGES }),
        ...newMessages,
      ],
    };
  },
});

const agent = createAgent({
  model: "mistral:mistral-large-latest",
  tools: [],
  middleware: [trimMessages],
  checkpointer: new MemorySaver(),
});