SDK-Middleware
Fange die Anfragen und Antworten des SDK ab und ändere sie.
Das Claude SDK bietet einen „middleware“ (Middleware)-Hook (auch „interceptor“ (Abfangfunktion) genannt), mit dem du Code ausführen kannst, bevor eine Anfrage gesendet wird und nachdem die Antwort empfangen wurde. Verwende Middleware für übergreifende Anliegen wie Logging, benutzerdefinierte Wiederholungsversuche, Annotation von Anfragen und die Behandlung von Fallbacks bei Ablehnungen.
Jede Middleware kann die Anfrage vor dem Aufruf von next() und die Antwort nach der Rückkehr von next() inspizieren oder ersetzen.
Middleware registrieren
Jede Middleware ist eine Funktion, die die ausgehende Anfrage und den nächsten Handler erhält. Rufe call_next(request) auf, um die Anfrage an den Rest der Kette weiterzuleiten (oder direkt an den SDK-Kern, wenn dies die letzte Middleware ist), und gib deren Antwort zurück. Alles vor diesem Aufruf wird auf dem Hinweg ausgeführt; alles danach 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])Reihenfolge der Middleware
Wenn du mehrere Middlewares registrierst, werden sie in der angegebenen Reihenfolge angewendet: Der „Vorher“-Code der ersten Middleware läuft zuerst, und ihr „Nachher“-Code läuft zuletzt. Auf dem Client registrierte Middleware läuft vor Middleware, die als Option pro Anfrage übergeben wird.
Im Go SDK werden wiederholte option.WithMiddleware-Aufrufe verkettet (zuerst Client, dann Methode). In den anderen SDKs übergibst du ein Array; spätere Einträge umschließen die inneren.
Den HTTP-Client ersetzen
Das 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 festlegst, ersetzt er den Standard-Client. Der benutzerdefinierte HTTP-Client erhält Anfragen, nachdem alle Middleware ausgeführt wurde.
Integrierte Middleware
Das SDK enthält eine Refusal-Fallback-Middleware, die eine Anfrage, die Claude ablehnt (stop_reason: "refusal"), automatisch mit einem Fallback-Modell wiederholt. Ablehnungen und Fallback listet die Modelle auf, deren Sicherheitsklassifikatoren Anfragen ablehnen können, und Clientseitiger Fallback mit der SDK-Middleware behandelt die Einrichtung und Beispiele für die einzelnen Sprachen.
Was this page helpful?