diff --git a/src/oss/langchain/middleware.mdx b/src/oss/langchain/middleware.mdx index 929b7ff5b8..c7e3113226 100644 --- a/src/oss/langchain/middleware.mdx +++ b/src/oss/langchain/middleware.mdx @@ -415,10 +415,12 @@ Limit the number of model calls to prevent infinite loops or excessive costs. ```python from langchain.agents import create_agent from langchain.agents.middleware import ModelCallLimitMiddleware +from langgraph.checkpoint.memory import InMemorySaver agent = create_agent( model="gpt-4o", + checkpointer=InMemorySaver(), # Required for thread limiting tools=[], # Add tools as needed middleware=[ ModelCallLimitMiddleware( @@ -434,10 +436,12 @@ agent = create_agent( :::js ```typescript import { createAgent, modelCallLimitMiddleware } from "langchain"; +import { MemorySaver } from "@langchain/langgraph"; const agent = createAgent({ model: "gpt-4o", tools: [...], + checkpointer: new MemorySaver(), // Required for thread limiting middleware: [ modelCallLimitMiddleware({ threadLimit: 10, // Max 10 calls per thread (across runs) @@ -523,6 +527,7 @@ To limit tool calls globally across all tools or for specific tools, set `toolNa ```python from langchain.agents import create_agent from langchain.agents.middleware import ToolCallLimitMiddleware +from langgraph.checkpoint.memory import InMemorySaver # Global limit: max 20 calls per thread, 10 per run @@ -562,6 +567,7 @@ critical_tool_limiter = ToolCallLimitMiddleware( agent = create_agent( model="gpt-4o", tools=[search_tool, database_tool, scraper_tool], + checkpointer=InMemorySaver(), # Required for thread limiting middleware=[ global_limiter, search_limiter, @@ -575,6 +581,7 @@ agent = create_agent( :::js ```typescript import { createAgent, toolCallLimitMiddleware } from "langchain"; +import { MemorySaver } from "@langchain/langgraph"; // Global limit: max 20 calls per thread, 10 per run const globalLimiter = toolCallLimitMiddleware({ @@ -613,6 +620,7 @@ const criticalToolLimiter = toolCallLimitMiddleware({ const agent = createAgent({ model: "gpt-4o", tools: [searchTool, databaseTool, scraperTool], + checkpointer: new MemorySaver(), // Required for thread limiting middleware: [globalLimiter, searchLimiter, databaseLimiter, webScraperLimiter], }); ```