Instalando e Configurando o SDK Python da Anthropic
O pacote Python oficial anthropic é a maneira recomendada de chamar a API Claude a partir do Python.
Ele lida com cabeçalhos de autenticação, serialização de requisições, novas tentativas e análise de respostas para que você não precise construir essa infraestrutura sozinho.
Esta página cobre a instalação, a configuração de um cliente e a realização da sua primeira chamada real.
Resumo
O pacote anthropic é instalado com um único comando pip install anthropic em qualquer ambiente Python 3.8+.
Uma instância de cliente, anthropic.Anthropic(), é o objeto que você configura uma vez e reutiliza para cada chamada em sua aplicação.
Por padrão, ele lê sua chave de API de ANTHROPIC_API_KEY, mas você pode substituir a chave, o tempo limite, o número de novas tentativas e até mesmo a URL base através de argumentos do construtor.
Existe também um cliente assíncrono, anthropic.AsyncAnthropic, com a mesma interface para uso dentro de aplicações asyncio.
Obter a configuração correta uma vez, em um só lugar, evita espalhar instâncias de cliente ad-hoc com configurações inconsistentes por uma base de código.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
pip install anthropic
export ANTHROPIC_API_KEY="sk-ant-..."import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5-20260630",
max_tokens=200,
messages=[{"role": "user", "content": "Confirme se o SDK está instalado corretamente."}],
)
print(response.content[0].text)Quando usar isso:
- Iniciando qualquer novo projeto Python que chama o Claude.
- Você deseja novas tentativas automáticas, respostas tipadas e suporte a streaming sem escrever código HTTP bruto.
- Você está construindo um script síncrono ou um serviço baseado em
asyncio(useAsyncAnthropicpara este último).
Exemplo de Trabalho
import os
import anthropic
# Um ambiente virtual recomendado primeiro:
# python -m venv .venv && source .venv/bin/activate
# pip install anthropic
def build_client() -> anthropic.Anthropic:
return anthropic.Anthropic(
api_key=os.environ["ANTHROPIC_API_KEY"],
timeout=30.0, # segundos, por requisição
max_retries=2, # novas tentativas automáticas para respostas 429/5xx
)
def main() -> None:
client = build_client()
response = client.messages.create(
model="claude-sonnet-5-20260630",
max_tokens=150,
messages=[
{"role": "user", "content": "Liste três usos para o SDK Python da Anthropic."}
],
)
print(response.content[0].text)
print(f"Tokens usados: {response.usage.input_tokens} entrada / {response.usage.output_tokens} saída")
if __name__ == "__main__":
main()O que isso demonstra:
- Construir o cliente uma vez, em uma função dedicada, em vez de construí-lo inline onde quer que seja usado.
- Definir
timeoutemax_retriesexplícitos em vez de confiar nos padrões, o que é importante quando você passa de um teste rápido. - Ler
usageda resposta para rastrear o consumo de tokens junto com o texto gerado.
Mergulho Profundo
Como Funciona
pip install anthropicbaixa o pacote (e suas dependências HTTP) do PyPI; ele suporta Python 3.8 e versões mais recentes.- Gerenciadores de pacotes como
poetry add anthropicouuv add anthropicfuncionam de forma idêntica e são recomendados para projetos que fixam dependências. anthropic.Anthropic()é um cliente síncrono:client.messages.create(...)bloqueia até que a resposta (ou o stream completo) seja recebida.anthropic.AsyncAnthropic()espelha os mesmos nomes de métodos, mas retorna objetos awaitable, para uso dentro de funçõesasync def.- Cada cliente pode ser construído uma vez e reutilizado em muitas chamadas; não há necessidade de construir um novo cliente por requisição.
Opções Úteis do Construtor
| Opção | Tipo | Padrão | Propósito |
|---|---|---|---|
api_key | str | lê ANTHROPIC_API_KEY | Substitui ou passa explicitamente a chave da API |
timeout | float ou httpx.Timeout | Padrão do SDK (vários minutos) | Tempo máximo de espera por uma requisição/resposta |
max_retries | int | 2 | Novas tentativas automáticas para respostas 429/5xx com backoff |
base_url | str | URL padrão da API da Anthropic | Aponta para um proxy, gateway ou endpoint de teste |
O Cliente Assíncrono
import asyncio
import anthropic
async def main() -> None:
client = anthropic.AsyncAnthropic()
response = await client.messages.create(
model="claude-haiku-4-5-20260601",
max_tokens=100,
messages=[{"role": "user", "content": "Diga olá assincronamente."}],
)
print(response.content[0].text)
asyncio.run(main())Notas Python
# Reutilize uma instância de cliente em um módulo ou aplicativo em vez de
# construir uma nova a cada chamada de função - conexões e
# a configuração de retentativas são configuradas uma vez, no momento da importação ou inicialização.
import anthropic
client = anthropic.Anthropic() # nível de módulo, criado uma vez
def summarize(text: str) -> str:
response = client.messages.create(
model="claude-haiku-4-5-20260601",
max_tokens=200,
messages=[{"role": "user", "content": f"Resuma: {text}"}],
)
return response.content[0].textArmadilhas
- Instalar no Python do sistema em vez de um ambiente virtual. Isso causa conflitos de versão entre projetos não relacionados ao longo do tempo. Correção: crie um ambiente virtual (
venv,poetryouuv) por projeto antes de instalar. - Construir um novo cliente em cada chamada de função. Isso é um desperdício e pode contornar a reutilização de conexões. Correção: construa o cliente uma vez, na inicialização do módulo ou do aplicativo, e passe-o ou reutilize uma instância em nível de módulo.
- Usar o cliente síncrono dentro de uma função
async def.client.messages.create(...)bloqueia o loop de eventos durante a chamada síncrona dentro de código assíncrono. Correção: useanthropic.AsyncAnthropiccomawaitdentro de funções assíncronas. - Não fixar a versão do SDK em produção. Uma dependência
anthropicnão fixada pode introduzir alterações que quebram em uma nova instalação. Correção: fixe um intervalo de versão específico emrequirements.txtou no seu arquivo de lock, e atualize deliberadamente. - Substituir
base_urlacidentalmente copiando a configuração de exemplo. Apontar para a URL errada causa erros de conexão confusos que parecem não relacionados à configuração. Correção: definabase_urlapenas intencionalmente (por exemplo, para um proxy) e remova-o se copiado de um exemplo não relacionado. - Assumir que
timeoutcobre toda a resposta em streaming. Para gerações longas em streaming, um timeout muito curto pode interromper um stream legítimo em andamento. Correção: defina um timeout mais longo para casos de uso de streaming ou use substituições de timeout por requisição.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
SDK Python oficial anthropic | Quase sempre, para projetos Python | Nunca, este é o padrão recomendado |
Cliente HTTP bruto (requests/httpx) | Você precisa evitar a dependência, ou está depurando no nível HTTP | Você quer novas tentativas integradas, respostas tipadas e análise de streaming |
anthropic.AsyncAnthropic | Serviços asyncio de alta concorrência | Scripts simples onde o código síncrono é mais fácil de ler e depurar |
FAQs
Quais versões do Python o SDK da Anthropic suporta?
Python 3.8 e mais recentes; verifique a página PyPI do pacote para o piso exato atual, pois as versões mínimas suportadas podem mudar entre os lançamentos principais do SDK.
Preciso definir ANTHROPIC_API_KEY se passar api_key explicitamente?
Não, um argumento explícito api_key para anthropic.Anthropic(api_key=...) tem precedência sobre a variável de ambiente.
Qual é a diferença entre Anthropic e AsyncAnthropic?
Anthropic é um cliente síncrono cujos métodos bloqueiam até serem concluídos; AsyncAnthropic expõe os mesmos métodos como awaitables para uso em código asyncio.
Devo criar um novo cliente para cada requisição?
Não, construa uma instância de cliente e reutilize-a em sua aplicação; não há benefício em recriá-la por chamada e isso adiciona sobrecarga desnecessária.
O que max_retries realmente tenta novamente?
Falhas transitórias, respostas de limite de taxa 429 e erros de servidor 5xx, usando backoff exponencial; ele não tenta novamente erros de validação da classe 400, pois eles não terão sucesso em uma nova tentativa.
Posso usar o SDK atrás de um proxy corporativo ou gateway personalizado?
Sim, passe um argumento base_url apontando para seu proxy ou gateway ao construir o cliente.
Como sei se minha instalação foi bem-sucedida?
Execute um script mínimo que constrói um cliente e faz uma chamada messages.create(); uma resposta bem-sucedida confirma tanto a instalação quanto a autenticação.
Um ambiente virtual é necessário?
Não estritamente necessário, mas fortemente recomendado, pois isola a versão do pacote anthropic de outros projetos na mesma máquina.
O que acontece se eu chamar o método create() do cliente síncrono dentro de uma função assíncrona?
Ele é executado de forma síncrona e bloqueia o loop de eventos durante a chamada, o que pode travar outros trabalhos assíncronos concorrentes; use AsyncAnthropic em vez disso em código assíncrono.
Posso definir um modelo padrão global para não repeti-lo em cada chamada?
Não diretamente através do construtor, pois model é um parâmetro por chamada, mas você pode envolver o cliente em sua própria função ou classe auxiliar que forneça um argumento de modelo padrão.
A opção timeout se aplica por requisição ou para toda a vida útil do cliente?
Por requisição; é quanto tempo uma única chamada messages.create() tem permissão para levar antes de gerar um erro de timeout.
Relacionados
- Noções Básicas de Fundamentos da API Claude - suas primeiras chamadas de trabalho.
- Autenticando Chamadas da API Claude com o Cabeçalho x-api-key - configuração de chave em profundidade.
- Construindo um Wrapper Reutilizável para a API Claude - envolvendo o cliente com padrões para toda a aplicação.
- Tratando Limites de Taxa com Backoff Exponencial - o que
max_retriesfaz nos bastidores.
Versões da Pilha: Escrito contra a linha de modelos Claude atual em ~junho de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (o padrão), e Claude Haiku 4.5 - e o SDK oficial
anthropicpara Python (último lançamento 0.x). Nomes de modelos, versões de SDK e preços mudam rapidamente - verifique os detalhes atuais em platform.claude.com/docs antes de confiar neles.