SDKミドルウェア
Anthropic SDKでリクエストとレスポンスをインターセプトして変更します。
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では配列を渡します。後のエントリほど内側をラップします。
HTTPクライアントの置き換え
各SDKは、カスタムHTTPクライアント(プロキシ設定、カスタムTLS、コネクションプーリング用)も受け付けます。SDKクライアントごとに使用されるHTTPクライアントは1つだけで、設定するとデフォルトが置き換えられます。カスタムHTTPクライアントは、すべてのミドルウェアが実行された後にリクエストを受け取ります。
組み込みミドルウェア
SDKには、Claude Fable 5が拒否したリクエストをフォールバックモデルで自動的にリトライする拒否フォールバックミドルウェアが同梱されています。セットアップと言語ごとの例については、フォールバックモデルでの検出とリトライを参照してください。
Was this page helpful?