Claude Platform Docs

Middleware du SDK

Interceptez et modifiez les requêtes et les réponses du SDK.

Le SDK Claude fournit un hook de « middleware » (intergiciel), ou intercepteur, qui vous permet d'exécuter du code avant l'envoi d'une requête et après la réception de la réponse. Utilisez un middleware pour des préoccupations transversales telles que la journalisation, les nouvelles tentatives personnalisées, l'annotation des requêtes et la gestion du repli en cas de refus.

Chaque middleware peut inspecter ou remplacer la requête avant d'appeler next(), et la réponse après le retour de next().

Enregistrement d'un middleware

Chaque middleware est une fonction qui reçoit la requête sortante et le gestionnaire suivant. Appelez call_next(request) pour transmettre la requête au reste de la chaîne (ou directement au cœur du SDK s'il s'agit du dernier middleware), et renvoyez sa réponse. Tout ce qui précède cet appel s'exécute à l'aller ; tout ce qui le suit s'exécute au retour.

def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
    # Avant la requête
    print(f"-> {request.method} {request.url}")

    # Transmettre la requête au reste de la chaîne
    response = call_next(request)

    # Après la requête
    print(f"<- {response.status_code}")

    return response


client = Anthropic(middleware=[logging_middleware])

Ordre des middlewares

Lorsque vous enregistrez plusieurs middlewares, ils s'appliquent dans l'ordre indiqué : le code « avant » du premier middleware s'exécute en premier, et son code « après » s'exécute en dernier. Les middlewares enregistrés sur le client s'exécutent avant les middlewares transmis en tant qu'option par requête.

Dans le SDK Go, les appels répétés à option.WithMiddleware se concatènent (d'abord ceux du client, puis ceux de la méthode). Dans les autres SDK, transmettez un tableau ; les entrées ultérieures enveloppent les entrées intérieures.

Remplacement du client HTTP

Le SDK accepte également un client HTTP personnalisé (pour la configuration d'un proxy, un TLS personnalisé ou le regroupement de connexions). Un seul client HTTP est utilisé par client SDK ; le définir remplace celui par défaut. Le client HTTP personnalisé reçoit les requêtes après l'exécution de tous les middlewares.

Middleware intégré

Le SDK inclut un middleware de repli en cas de refus qui relance automatiquement, sur un modèle de repli, une requête que Claude refuse (stop_reason: "refusal"). Refus et repli répertorie les modèles dont les classificateurs de sécurité peuvent refuser des requêtes, et Détecter et relancer sur un modèle de repli couvre la configuration et des exemples pour chaque langage.

Was this page helpful?