Anthropic SDKは、リクエストが送信される前とレスポンスが受信された後にコードを実行できる「middleware」(ミドルウェア、またはインターセプター)フックを提供します。ロギング、カスタムリトライ、リクエストへの注釈付け、拒否時のフォールバック処理などの横断的関心事にミドルウェアを使用してください。
各ミドルウェアは、next()を呼び出す前にリクエストを検査または置き換えることができ、next()が返った後にレスポンスを検査または置き換えることができます。
各ミドルウェアは、送信されるリクエストとnext呼び出し可能オブジェクトを受け取る関数です。nextを呼び出してリクエストをチェーンの残りの部分(またはこれが最後のミドルウェアの場合はSDKコアに直接)に転送し、そのレスポンスを返します。next呼び出しの前にあるものは送信時に実行され、後にあるものは戻り時に実行されます。
def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
# リクエストの前
print(f"-> {request.method} {request.url}")
# リクエストをチェーンの残りに転送する
response = call_next(request)
# リクエストの後
print(f"<- {response.status_code}")
return response
client = Anthropic(middleware=[logging_middleware])複数のミドルウェアを登録すると、指定された順序で適用されます。最初のミドルウェアの「前」のコードが最初に実行され、その「後」のコードが最後に実行されます。クライアントに登録されたミドルウェアは、リクエストごとのオプションとして渡されたミドルウェアより先に実行されます。
Go SDKでは、option.WithMiddlewareを繰り返し呼び出すと連結されます(クライアントが先、次にメソッド)。他のSDKでは配列を渡します。後のエントリが内側をラップします。
各SDKはカスタムHTTPクライアント(プロキシ設定、カスタムTLS、またはコネクションプーリング用)も受け入れます。SDKクライアントごとに使用されるHTTPクライアントは1つだけで、設定するとデフォルトが置き換えられます。カスタムHTTPクライアントは、すべてのミドルウェアが実行された後にリクエストを受け取ります。
SDKには、Claude Fable 5が拒否したリクエストをフォールバックモデルで自動的にリトライする拒否フォールバックミドルウェアが同梱されています。セットアップと言語ごとの例については、フォールバックモデルでの検出とリトライを参照してください。
Was this page helpful?