Gli SDK di Anthropic forniscono un hook di "middleware" (o interceptor) che ti consente di eseguire codice prima che una richiesta venga inviata e dopo che la risposta è stata ricevuta. Usa il middleware per esigenze trasversali come logging, retry personalizzati, annotazione delle richieste e gestione del fallback in caso di rifiuto.
Ogni middleware può ispezionare o sostituire la richiesta prima di chiamare next(), e la risposta dopo che next() restituisce.
Ogni middleware è una funzione che riceve la richiesta in uscita e un callable next. Chiama next per inoltrare la richiesta al resto della catena (o direttamente al core dell'SDK se questo è l'ultimo middleware), e restituisci la sua risposta. Tutto ciò che precede la chiamata a next viene eseguito in uscita; tutto ciò che segue viene eseguito al ritorno.
def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
# Prima della richiesta
print(f"-> {request.method} {request.url}")
# Inoltra la richiesta al resto della catena
response = call_next(request)
# Dopo la richiesta
print(f"<- {response.status_code}")
return response
client = Anthropic(middleware=[logging_middleware])Quando registri più middleware, questi vengono applicati nell'ordine indicato: il codice "before" del primo middleware viene eseguito per primo, e il suo codice "after" viene eseguito per ultimo. Il middleware registrato sul client viene eseguito prima del middleware passato come opzione per singola richiesta.
Nell'SDK Go, chiamate ripetute a option.WithMiddleware si concatenano (prima il client, poi il metodo). Negli altri SDK, passa un array; le voci successive avvolgono quelle interne.
Ogni SDK accetta anche un client HTTP personalizzato (per la configurazione di proxy, TLS personalizzato o connection pooling). Viene utilizzato un solo client HTTP per ogni client SDK; impostarlo sostituisce quello predefinito. Il client HTTP personalizzato riceve le richieste dopo che tutti i middleware sono stati eseguiti.
Gli SDK includono un middleware di fallback per i rifiuti che ritenta automaticamente su un modello di fallback le richieste che Claude Fable 5 rifiuta. Consulta Rilevare e ritentare su un modello di fallback per la configurazione e gli esempi per ciascun linguaggio.
Was this page helpful?