From ef360465485bd4178859f9a2650300cf9b4b3610 Mon Sep 17 00:00:00 2001 From: Mahmut CAVDAR <4072246+mcavdar@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:05:17 +0100 Subject: [PATCH 1/2] Replace ModelRequestHandler with Callable[[ModelRequest], ModelResponse] --- src/oss/python/migrate/langchain-v1.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/oss/python/migrate/langchain-v1.mdx b/src/oss/python/migrate/langchain-v1.mdx index 4b4191c7a..ec3c70933 100644 --- a/src/oss/python/migrate/langchain-v1.mdx +++ b/src/oss/python/migrate/langchain-v1.mdx @@ -492,24 +492,24 @@ This functionality has been ported to the middleware interface in v1. ```python v1 (new) from langchain.agents import create_agent from langchain.agents.middleware import ( - AgentMiddleware, ModelRequest, ModelRequestHandler + AgentMiddleware, ModelRequest ) -from langchain.messages import AIMessage +from langchain.agents.middleware.types import ModelResponse from langchain_openai import ChatOpenAI - +from typing import Callable basic_model = ChatOpenAI(model="gpt-5-nano") advanced_model = ChatOpenAI(model="gpt-5") class DynamicModelMiddleware(AgentMiddleware): - def wrap_model_call(self, request: ModelRequest, handler: ModelRequestHandler) -> AIMessage: + def wrap_model_call(self, request: ModelRequest, handler: Callable[[ModelRequest], ModelResponse]) -> ModelResponse: if len(request.state.messages) > self.messages_threshold: model = advanced_model else: model = basic_model - - return handler(request.replace(model=model)) + request.model = model + return handler(request) def __init__(self, messages_threshold: int) -> None: self.messages_threshold = messages_threshold From 59a4ae6ab56a3f94f73b66273baecd8538a1ca21 Mon Sep 17 00:00:00 2001 From: Mason Daugherty Date: Mon, 27 Oct 2025 17:01:39 -0400 Subject: [PATCH 2/2] fix --- src/oss/python/migrate/langchain-v1.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oss/python/migrate/langchain-v1.mdx b/src/oss/python/migrate/langchain-v1.mdx index ec3c70933..5f8e5cfc4 100644 --- a/src/oss/python/migrate/langchain-v1.mdx +++ b/src/oss/python/migrate/langchain-v1.mdx @@ -368,7 +368,7 @@ class CustomState(AgentState): @tool # [!code highlight] def greet( - runtime: ToolRuntime[CustomState] + runtime: ToolRuntime[None, CustomState] ) -> str: """Use this to greet the user by name.""" user_name = runtime.state.get("user_name", "Unknown") # [!code highlight]