AWS Bedrock
Provider bedrock. Adapter sobre o Amazon Bedrock, o serviço gerenciado da
AWS que serve modelos de vários fornecedores (Anthropic Claude, Meta Llama,
Amazon Titan/Nova, Mistral, Cohere…) atrás de uma única API e uma só fatura
(a da AWS). Você fala com todos eles pela mesma LLM(...) da jangada.
pip install "jangada-ai[bedrock]"provider=:"bedrock"- Autenticação: credenciais AWS padrão —
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYeAWS_REGION(ouAWS_DEFAULT_REGION). Também valem perfis (AWS_PROFILE), roles do IAM e o metadata do EC2/Lambda — a mesma cadeia de resolução doboto3. - Modelo: o model ID (ou inference profile) do Bedrock, ex.:
anthropic.claude-3-5-sonnet-20241022-v2:0.
from jangada_ai import LLM
# usa AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_REGION do ambiente
llm = LLM("bedrock", "anthropic.claude-3-5-sonnet-20241022-v2:0")
resp = llm.complete("Resuma {{ tema }} em uma frase.", tema="jangadas")
print(resp.text, resp.cost)Configuração via ambiente
No .env (ou variáveis do processo):
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=us-east-1A região importa: cada model ID só existe em algumas regiões, e inference
profiles (ex.: us.anthropic.claude-3-5-sonnet-...) habilitam roteamento
cross-region. Argumentos específicos do boto3 (ex.: endpoint_url,
region_name) vão por extra=.
O que faz
- Texto e streaming via a Converse API do Bedrock (interface unificada para todos os modelos).
- Structured output (
parse): tool-forcing quando o modelo suporta tools; caso contrário, instrução de JSON + validação commodel_validate_json. - Vision (
images=): nos modelos com visão (família Claude, Llama vision, Nova). - Documentos (
files=): extração de texto local antes do envio.
Quando escolher Bedrock
Quando sua stack já vive na AWS e você quer governança, faturamento e isolamento de rede (VPC) unificados, sem distribuir chaves de API de cada fornecedor. Combine como fallback do Claude direto (Anthropic) para ganhar redundância entre nuvens. Veja Providers e Retry e fallback.
O que mudou na 1.9.0
- Campos do Converse repassados:
extra={"additionalModelRequestFields": ...},guardrailConfig,promptVariables,requestMetadata,performanceConfig,serviceTiereadditionalModelResponseFieldPathsvão direto para a chamada (antes eram descartados em silêncio). tool_choice="none"não envia as tools (exceto quando o histórico já temtoolUse, que a API exige).- Stream: erro no meio do stream (throttling,
ModelStreamErrorException) vira erro normalizado também noastream, e o stream é fechado se você parar de consumir. - Tools nativas (Amazon Nova):
web_search()vira onova_groundingecode_execution()onova_code_interpreter(Nova 2). Exige perfisus.*e a permissão IAMbedrock:InvokeTool. Veja Tools nativas. - Usage com cache (
cache_read_tokens/cache_write_tokens) e system em lista de partes com o texto extraído.