Middleware в SDK
Перехват и изменение запросов и ответов SDK.
Claude SDK предоставляет хук «middleware» (промежуточное ПО), или «interceptor» (перехватчик), который позволяет выполнять код до отправки запроса и после получения ответа. Используйте middleware для сквозных задач, таких как логирование, пользовательские повторные попытки, аннотирование запросов и обработка резервного переключения при отказах.
Каждое middleware может проверять или заменять запрос перед вызовом next(), а также ответ после возврата из next().
Регистрация middleware
Каждое middleware — это функция, которая получает исходящий запрос и следующий обработчик. Вызовите call_next(request), чтобы передать запрос дальше по цепочке (или непосредственно ядру SDK, если это последнее middleware), и верните его ответ. Всё, что находится до этого вызова, выполняется на пути туда; всё, что после, — на обратном пути.
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])Порядок выполнения middleware
Когда вы регистрируете несколько middleware, они применяются в указанном порядке: код «до» первого middleware выполняется первым, а его код «после» — последним. Middleware, зарегистрированное на клиенте, выполняется раньше middleware, переданного в качестве параметра отдельного запроса.
В Go SDK повторные вызовы option.WithMiddleware объединяются (сначала клиентские, затем уровня метода). В остальных SDK передавайте массив; более поздние элементы оборачивают внутренние.
Замена HTTP-клиента
SDK также принимает пользовательский HTTP-клиент (для настройки прокси, пользовательского TLS или пула соединений). Для каждого клиента SDK используется только один HTTP-клиент; его установка заменяет клиент по умолчанию. Пользовательский HTTP-клиент получает запросы после выполнения всех middleware.
Встроенное middleware
SDK поставляется с middleware резервного переключения при отказах, которое автоматически повторяет запросы, отклонённые Claude Fable 5, на резервной модели. Инструкции по настройке и примеры для каждого языка см. в разделе Обнаружение отказа и повтор на резервной модели.
Was this page helpful?