Jangada AIJangada AI

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_KEY e AWS_REGION (ou AWS_DEFAULT_REGION). Também valem perfis (AWS_PROFILE), roles do IAM e o metadata do EC2/Lambda — a mesma cadeia de resolução do boto3.
  • 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-1

A 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 com model_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, serviceTier e additionalModelResponseFieldPaths vã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á tem toolUse, que a API exige).
  • Stream: erro no meio do stream (throttling, ModelStreamErrorException) vira erro normalizado também no astream, e o stream é fechado se você parar de consumir.
  • Tools nativas (Amazon Nova): web_search() vira o nova_grounding e code_execution() o nova_code_interpreter (Nova 2). Exige perfis us.* e a permissão IAM bedrock:InvokeTool. Veja Tools nativas.
  • Usage com cache (cache_read_tokens/cache_write_tokens) e system em lista de partes com o texto extraído.

On this page