YouTip LogoYouTip

Langchain Middleware Api

# LangChain Middleware API | Online Tutorial * * * ## AgentMiddleware Base Class Hook Methods | Method | Signature | Execution Frequency | Return Value | | --- | --- | --- | --- | | before_agent | (state, runtime) β†’ dict or None | 1 time | State update or None | | abefore_agent | (state, runtime) β†’ dict or None | 1 time | State update or None | | before_model | (state, runtime) β†’ dict or None | Per loop | State update or None | | abefore_model | (state, runtime) β†’ dict or None | Per loop | State update or None | | wrap_model_call | (request, handler) β†’ ModelResponse or AIMessage | Per loop | Model call result | | awrap_model_call | (request, handler) β†’ ModelResponse or AIMessage | Per loop | Model call result | | after_model | (state, runtime) β†’ dict or None | Per loop | State update or None | | aafter_model | (state, runtime) β†’ dict or None | Per loop | State update or None | | wrap_tool_call | (request, handler) β†’ ToolMessage or Command | Per tool call | Tool execution result | | awrap_tool_call | (request, handler) β†’ ToolMessage or Command | Per tool call | Tool execution result | | after_agent | (state, runtime) β†’ dict or None | 1 time | State update or None | | aafter_agent | (state, runtime) β†’ dict or None | 1 time | State update or None | ## Middleware Registration Middleware can be registered using the `middleware` parameter in `create_agent`: ```python from langchain.agents import create_agent from langchain_middleware import MyMiddleware agent = create_agent( llm, tools, middleware=[MyMiddleware()], ) ``` ## Middleware Execution Order Multiple middleware are executed in the order they are registered. Each middleware can: - Modify the state - Intercept and modify model/tool calls - Perform logging, monitoring, etc. ## Example: Custom Middleware ```python from langchain.agents import AgentMiddleware from langchain_core.messages import HumanMessage class LoggingMiddleware(AgentMiddleware): def before_model(self, state, runtime): print("Before model call") return {} def after_model(self, state, runtime): print("After model call") return {} ``` This example demonstrates how to create a simple logging middleware that prints messages before and after model calls.
← 03 Vue3 Ref ReactiveLangchain Messages Api β†’