Claude Platform Docs
SDKs, CLI e bibliotecasSDKs de cliente

Middleware do SDK

Intercepte e modifique as requisições e respostas do SDK.

O Claude SDK fornece um hook de "middleware" (intermediário), ou interceptor, que permite executar código antes de uma requisição ser enviada e depois que a resposta é recebida. Use middleware para preocupações transversais, como logging, retentativas personalizadas, anotação de requisições e tratamento de fallback em caso de recusa.

Cada middleware pode inspecionar ou substituir a requisição antes de chamar next(), e a resposta depois que next() retorna.

Registrando middleware

Cada middleware é uma função que recebe a requisição de saída e o próximo handler. Chame call_next(request) para encaminhar a requisição para o restante da cadeia (ou diretamente para o núcleo do SDK, se este for o último middleware) e retorne sua resposta. Tudo o que vem antes dessa chamada é executado na ida; tudo o que vem depois é executado na volta.

def logging_middleware(request: APIRequest, call_next: CallNext) -> APIResponse[Any]:
    # Antes da requisição
    print(f"-> {request.method} {request.url}")

    # Encaminha a requisição para o restante da cadeia
    response = call_next(request)

    # Depois da requisição
    print(f"<- {response.status_code}")

    return response


client = Anthropic(middleware=[logging_middleware])

Ordem dos middlewares

Quando você registra vários middlewares, eles são aplicados na ordem fornecida: o código "antes" do primeiro middleware é executado primeiro, e seu código "depois" é executado por último. Middlewares registrados no cliente são executados antes dos middlewares passados como opção por requisição.

No SDK Go, chamadas repetidas a option.WithMiddleware são concatenadas (primeiro as do cliente, depois as do método). Nos outros SDKs, passe um array; as entradas posteriores envolvem as internas.

Substituindo o cliente HTTP

O SDK também aceita um cliente HTTP personalizado (para configuração de proxy, TLS personalizado ou pool de conexões). Apenas um cliente HTTP é usado por cliente do SDK; defini-lo substitui o padrão. O cliente HTTP personalizado recebe as requisições depois que todos os middlewares foram executados.

Middleware integrado

O SDK inclui um middleware de fallback em caso de recusa que repete automaticamente, em um modelo de fallback, uma requisição que Claude recusa (stop_reason: "refusal"). Recusas e fallback lista os modelos cujos classificadores de segurança podem recusar requisições, e Detectar e repetir em um modelo de fallback aborda a configuração e exemplos por linguagem.

Was this page helpful?