Die Anthropic SDKs bieten einen „middleware" (Middleware)- oder Interceptor-Hook, mit dem du Code ausführen kannst, bevor ein Request gesendet und nachdem die Response empfangen wurde. Verwende Middleware für übergreifende Anliegen wie Logging, benutzerdefinierte Retries, Request-Annotation und die Behandlung von Refusal-Fallbacks.
Jede Middleware kann den Request vor dem Aufruf von next() und die Response nach der Rückkehr von next() inspizieren oder ersetzen.
Jede Middleware ist eine Funktion, die den ausgehenden Request und ein aufrufbares next erhält. Rufe next auf, um den Request an den Rest der Kette weiterzuleiten (oder direkt an den SDK-Kern, wenn dies die letzte Middleware ist), und gib dessen Response zurück. Alles vor dem next-Aufruf läuft auf dem Hinweg; alles danach läuft auf dem Rückweg.
def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
# Vor der Anfrage
print(f"-> {request.method} {request.url}")
# Leite die Anfrage an den Rest der Kette weiter
response = call_next(request)
# Nach der Anfrage
print(f"<- {response.status_code}")
return response
client = Anthropic(middleware=[logging_middleware])Wenn du mehrere Middleware registrierst, werden sie in der angegebenen Reihenfolge angewendet: Der „before"-Code der ersten Middleware läuft zuerst, und ihr „after"-Code läuft zuletzt. Auf dem Client registrierte Middleware läuft vor Middleware, die als Option pro Request übergeben wird.
Im Go SDK werden wiederholte option.WithMiddleware-Aufrufe aneinandergehängt (zuerst Client, dann Methode). In den anderen SDKs übergibst du ein Array; spätere Einträge umschließen die inneren.
Jedes SDK akzeptiert auch einen benutzerdefinierten HTTP-Client (für Proxy-Konfiguration, benutzerdefiniertes TLS oder Connection-Pooling). Pro SDK-Client wird nur ein HTTP-Client verwendet; wenn du ihn setzt, ersetzt er den Standard. Der benutzerdefinierte HTTP-Client erhält Requests, nachdem alle Middleware durchlaufen wurden.
Die SDKs enthalten eine Refusal-Fallback-Middleware, die Requests, die Claude Fable 5 ablehnt, automatisch auf einem Fallback-Modell erneut versucht. Siehe Erkennen und auf einem Fallback-Modell erneut versuchen für die Einrichtung und Beispiele pro Sprache.
Was this page helpful?