LangChain Middleware API


Métodos hook de la clase base AgentMiddleware

MétodoFirmaFrecuencia de ejecuciónValor de retorno
before_agent(state, runtime) → dict o None1 vezActualización de estado o None
abefore_agent(state, runtime) → dict o None1 vezActualización de estado o None
before_model(state, runtime) → dict o NoneCada bucleActualización de estado o None
abefore_model(state, runtime) → dict o NoneCada bucleActualización de estado o None
wrap_model_call(request, handler) → ModelResponse o AIMessageCada bucleResultado de la llamada al modelo
awrap_model_call(request, handler) → ModelResponse o AIMessageCada bucleResultado de la llamada al modelo
after_model(state, runtime) → dict o NoneCada bucleActualización de estado o None
aafter_model(state, runtime) → dict o NoneCada bucleActualización de estado o None
wrap_tool_call(request, handler) → ToolMessage o CommandCada llamada a herramientaResultado de ejecución de la herramienta
awrap_tool_call(request, handler) → ToolMessage o CommandCada llamada a herramientaResultado de ejecución de la herramienta
after_agent(state, runtime) → dict o None1 vezActualización de estado o None
aafter_agent(state, runtime) → dict o None1 vezActualización de estado o None

Resumen de decoradores

DecoradorParámetrosDescripción
@before_agentstate_schema, tools, can_jump_to, nameSe ejecuta antes de que comience el Agent
@after_agentstate_schema, tools, can_jump_to, nameSe ejecuta después de que finalice el Agent
@before_modelstate_schema, tools, can_jump_to, nameSe ejecuta antes de la llamada al modelo
@after_modelstate_schema, tools, can_jump_to, nameSe ejecuta después de la llamada al modelo
@wrap_model_callstate_schema, tools, nameIntercepta la ejecución del modelo
@wrap_tool_calltools, nameIntercepta la ejecución de la herramienta
@dynamic_promptNingunoGenera dinámicamente el mensaje del sistema

Propiedades clave de ModelRequest

PropiedadTipoDescripción
modelBaseChatModelModelo actual
messageslist[AnyMessage]Lista de mensajes (sin incluir el system message)
system_messageSystemMessage o NoneMensaje del sistema actual
toolslistLista de herramientas disponibles
tool_choiceAnyEstrategia de selección de herramientas
response_formatResponseFormat o NoneFormato de salida estructurada
statedictEstado actual del Agent
runtimeRuntimeContexto 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],
)

Estructura de ModelResponse

PropiedadTipoDescripción
resultlist[BaseMessage]Lista de mensajes devueltos por el modelo
structured_responseAny o NoneResultado de salida estructurada

Valor de retorno especial ExtendedModelResponse

PropiedadDescripción
model_responseModelResponse subyacente
commandObjeto Command opcional, utilizado para actualizaciones adicionales de estado
Otras extensiones