LangChain Middleware API
Métodos hook de la clase base AgentMiddleware
| Método | Firma | Frecuencia de ejecución | Valor de retorno |
|---|---|---|---|
| before_agent | (state, runtime) → dict o None | 1 vez | Actualización de estado o None |
| abefore_agent | (state, runtime) → dict o None | 1 vez | Actualización de estado o None |
| before_model | (state, runtime) → dict o None | Cada bucle | Actualización de estado o None |
| abefore_model | (state, runtime) → dict o None | Cada bucle | Actualización de estado o None |
| wrap_model_call | (request, handler) → ModelResponse o AIMessage | Cada bucle | Resultado de la llamada al modelo |
| awrap_model_call | (request, handler) → ModelResponse o AIMessage | Cada bucle | Resultado de la llamada al modelo |
| after_model | (state, runtime) → dict o None | Cada bucle | Actualización de estado o None |
| aafter_model | (state, runtime) → dict o None | Cada bucle | Actualización de estado o None |
| wrap_tool_call | (request, handler) → ToolMessage o Command | Cada llamada a herramienta | Resultado de ejecución de la herramienta |
| awrap_tool_call | (request, handler) → ToolMessage o Command | Cada llamada a herramienta | Resultado de ejecución de la herramienta |
| after_agent | (state, runtime) → dict o None | 1 vez | Actualización de estado o None |
| aafter_agent | (state, runtime) → dict o None | 1 vez | Actualización de estado o None |
Resumen de decoradores
| Decorador | Parámetros | Descripción |
|---|---|---|
| @before_agent | state_schema, tools, can_jump_to, name | Se ejecuta antes de que comience el Agent |
| @after_agent | state_schema, tools, can_jump_to, name | Se ejecuta después de que finalice el Agent |
| @before_model | state_schema, tools, can_jump_to, name | Se ejecuta antes de la llamada al modelo |
| @after_model | state_schema, tools, can_jump_to, name | Se ejecuta después de la llamada al modelo |
| @wrap_model_call | state_schema, tools, name | Intercepta la ejecución del modelo |
| @wrap_tool_call | tools, name | Intercepta la ejecución de la herramienta |
| @dynamic_prompt | Ninguno | Genera dinámicamente el mensaje del sistema |
Propiedades clave de ModelRequest
| Propiedad | Tipo | Descripción |
|---|---|---|
| model | BaseChatModel | Modelo actual |
| messages | list[AnyMessage] | Lista de mensajes (sin incluir el system message) |
| system_message | SystemMessage o None | Mensaje del sistema actual |
| tools | list | Lista de herramientas disponibles |
| tool_choice | Any | Estrategia de selección de herramientas |
| response_format | ResponseFormat o None | Formato de salida estructurada |
| state | dict | Estado actual del Agent |
| runtime | Runtime | Contexto de ejecución (runtime) |
El método override() de ModelRequest se utiliza para crear una nueva solicitud con modificaciones:
Ejemplo
new_request = request.override(
model=different_model,
system_message=SystemMessage(content="Nuevo mensaje"),
tools=[new_tool],
)
model=different_model,
system_message=SystemMessage(content="Nuevo mensaje"),
tools=[new_tool],
)
Estructura de ModelResponse
| Propiedad | Tipo | Descripción |
|---|---|---|
| result | list[BaseMessage] | Lista de mensajes devueltos por el modelo |
| structured_response | Any o None | Resultado de salida estructurada |
Valor de retorno especial ExtendedModelResponse
| Propiedad | Descripción |
|---|---|
| model_response | ModelResponse subyacente |
| command | Objeto Command opcional, utilizado para actualizaciones adicionales de estado |