Middleware del SDK
Intercepta y modifica las solicitudes y respuestas del SDK.
El SDK de Claude proporciona un hook de "middleware" (software intermedio), o interceptor, que te permite ejecutar código antes de que se envíe una solicitud y después de recibir la respuesta. Usa middleware para aspectos transversales como el registro, reintentos personalizados, anotación de solicitudes y manejo de respaldo ante rechazos.
Cada middleware puede inspeccionar o reemplazar la solicitud antes de llamar a next(), y la respuesta después de que next() retorne.
Registrar middleware
Cada middleware es una función que recibe la solicitud saliente y el siguiente manejador. Llama a call_next(request) para reenviar la solicitud al resto de la cadena (o directamente al núcleo del SDK si este es el último middleware), y devuelve su respuesta. Todo lo que está antes de esa llamada se ejecuta a la ida; todo lo que está después se ejecuta a la vuelta.
def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
# Antes de la solicitud
print(f"-> {request.method} {request.url}")
# Reenvía la solicitud al resto de la cadena
response = call_next(request)
# Después de la solicitud
print(f"<- {response.status_code}")
return response
client = Anthropic(middleware=[logging_middleware])Orden del middleware
Cuando registras varios middleware, se aplican en el orden dado: el código "antes" del primer middleware se ejecuta primero, y su código "después" se ejecuta al final. El middleware registrado en el cliente se ejecuta antes que el middleware pasado como opción por solicitud.
En el SDK de Go, las llamadas repetidas a option.WithMiddleware se concatenan (primero las del cliente, luego las del método). En los demás SDKs, pasa un arreglo; las entradas posteriores envuelven a las internas.
Reemplazar el cliente HTTP
El SDK también acepta un cliente HTTP personalizado (para configuración de proxy, TLS personalizado o "connection pooling" (agrupación de conexiones)). Solo se usa un cliente HTTP por cliente del SDK; configurarlo reemplaza el predeterminado. El cliente HTTP personalizado recibe las solicitudes después de que se haya ejecutado todo el middleware.
Middleware integrado
El SDK incluye un middleware de respaldo ante rechazos que reintenta automáticamente en un modelo de respaldo una solicitud que Claude rechaza (stop_reason: "refusal"). Rechazos y respaldo enumera los modelos cuyos clasificadores de seguridad pueden rechazar solicitudes, y Detectar y reintentar en un modelo de respaldo cubre la configuración y ejemplos por lenguaje.
Was this page helpful?