Claude Platform Docs
CLI, SDK e librerieSDK client

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?