diff --git a/libs/langgraph/langgraph/agent/__init__.py b/libs/langgraph/langgraph/agent/__init__.py index a7b8c1d19..cd2bc4ecc 100644 --- a/libs/langgraph/langgraph/agent/__init__.py +++ b/libs/langgraph/langgraph/agent/__init__.py @@ -135,7 +135,7 @@ def _make_model_request_node( ) # visit middleware in order for mw in middleware: - request = mw.modify_model_request(request) + request = mw.modify_model_request(request, state) # prepare messages if request.system_prompt: messages = [SystemMessage(request.system_prompt)] + request.messages diff --git a/libs/langgraph/langgraph/agent/types.py b/libs/langgraph/langgraph/agent/types.py index 54ed7cc84..4cb9fc283 100644 --- a/libs/langgraph/langgraph/agent/types.py +++ b/libs/langgraph/langgraph/agent/types.py @@ -31,7 +31,9 @@ class AgentMiddleware: def before_model(self, state: AgentState) -> AgentState | None: pass - def modify_model_request(self, request: ModelRequest) -> ModelRequest: + def modify_model_request( + self, request: ModelRequest, state: AgentState + ) -> ModelRequest: return request def after_model(self, state: AgentState) -> AgentState | None: diff --git a/libs/langgraph/tests/test_agent.py b/libs/langgraph/tests/test_agent.py index b75a282bd..4df2d43ad 100644 --- a/libs/langgraph/tests/test_agent.py +++ b/libs/langgraph/tests/test_agent.py @@ -156,6 +156,10 @@ def test_create_agent_invoke( def before_model(self, state): calls.append("NoopSeven.before_model") + def modify_model_request(self, request, state): + calls.append("NoopSeven.modify_model_request") + return request + def after_model(self, state): calls.append("NoopSeven.after_model") @@ -163,6 +167,10 @@ def test_create_agent_invoke( def before_model(self, state): calls.append("NoopEight.before_model") + def modify_model_request(self, request, state): + calls.append("NoopEight.modify_model_request") + return request + def after_model(self, state): calls.append("NoopEight.after_model") @@ -216,11 +224,15 @@ def test_create_agent_invoke( assert calls == [ "NoopSeven.before_model", "NoopEight.before_model", + "NoopSeven.modify_model_request", + "NoopEight.modify_model_request", "NoopEight.after_model", "NoopSeven.after_model", "my_tool", "NoopSeven.before_model", "NoopEight.before_model", + "NoopSeven.modify_model_request", + "NoopEight.modify_model_request", "NoopEight.after_model", "NoopSeven.after_model", ]