Middleware degli SDK
Intercetta e modifica richieste e risposte negli SDK di Anthropic.
Gli SDK di Anthropic forniscono un hook "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 aspetti trasversali come il logging, i tentativi di ripetizione personalizzati, l'annotazione delle richieste e la 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 il controllo.
Registrazione del middleware
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 all'andata; tutto ciò che la 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])Ordine dei middleware
Quando registri più middleware, questi vengono applicati nell'ordine indicato: il codice "before" (prima) del primo middleware viene eseguito per primo, e il suo codice "after" (dopo) viene eseguito per ultimo. I middleware registrati sul client vengono eseguiti prima dei middleware passati come opzione per singola richiesta.
Nell'SDK Go, le chiamate ripetute a option.WithMiddleware vengono concatenate (prima quelle del client, poi quelle del metodo). Negli altri SDK, passa un array; le voci successive avvolgono quelle interne.
Sostituzione del client HTTP
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 ciascun client SDK; impostarlo sostituisce quello predefinito. Il client HTTP personalizzato riceve le richieste dopo che tutti i middleware sono stati eseguiti.
Middleware integrati
Gli SDK includono un middleware di fallback in caso di rifiuto 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?