O blog da AWS

Otimizando custos e latência com Prompt Caching do Amazon Bedrock

Por Daniel Abib, arquiteto especialista sênior de soluções na AWS.

À medida que as aplicações de IA generativa amadurecem e entram em produção, as organizações estão descobrindo que uma parcela significativa dos custos de inferência vem do processamento repetido do mesmo contexto. Entender como otimizar custos e latência pode se tornar essencial nos desafios das empresas. Considere um assistente de análise de documentos que envia um contrato jurídico de 10.000 tokens a cada pergunta do usuário, ou um fluxo de trabalho agêntico que inclui dezenas de definições de ferramentas a cada turno. Cada requisição reprocessa esse conteúdo estático do zero, aumentando tanto a latência quanto o custo, mesmo que o conteúdo não tenha mudado.

Abordagens tradicionais para mitigar esse problema envolvem encurtar prompts, reduzir janelas de contexto ou implementar cache de respostas finais no nível da aplicação. No entanto, essas soluções alternativas trazem desvantagens:

  • Prompts curtos diminuem a qualidade do contexto e podem degradar a precisão das respostas.
  • Janelas de contexto menores limitam a capacidade do modelo de raciocinar sobre informações completas.
  • Cache de respostas funciona apenas para consultas idênticas e perde o benefício de armazenar em cache o contexto compartilhado entre perguntas diferentes.

O Prompt Caching do Amazon Bedrock resolve esse desafio no nível da infraestrutura. Ao armazenar porções do contexto da sua conversa — prompts de sistema, documentos, definições de ferramentas — o Amazon Bedrock pode pular o reprocessamento dos tokens em cache nas requisições subsequentes. Isso reduz o Time-To-First-Token (TTFT) e pode diminuir os custos de tokens de entrada em até 90% em acertos de cache, sem nenhuma alteração no seu modelo ou na qualidade do prompt.

Nesta publicação, apresentamos seis cenários práticos de Prompt Caching usando a API Converse do Amazon Bedrock, progredindo de padrões simples a avançados:

  1. Conteúdo de mensagem: Armazene em cache documentos longos para análise com múltiplas perguntas.
  2. Cache de Prompt de sistema: Armazene em cache definições de persona e instruções entre conversas.
  3. Definição de ferramentas: Armazene em cache schemas de ferramentas para fluxos de trabalho agênticos.
  4. TTL misto: Atribua diferentes tempos de vida de cache para diferentes camadas de conteúdo.
  5. Isolamento de tenant: Implemente separação de cache por tenant em aplicações multi-tenant.
  6. Integração com LangChain: Use Prompt Caching com o framework .

Como o Prompt Caching funciona

Antes de mergulhar nos cenários, vamos entender como o Prompt Caching opera em alto nível.

Quando você inclui um marcador CachePoint na sua requisição, o Amazon Bedrock avalia se o conteúdo que precede esse marcador corresponde a uma entrada de cache existente. Se corresponder (um acerto de cache ou cache hit), o modelo pula o reprocessamento desses tokens e inicia a geração a partir do estado em cache. Se não houver correspondência (uma falha de cache ou cache miss), o modelo processa o conteúdo completo e grava o resultado no cache para requisições futuras.

O diagrama a seguir ilustra esse fluxo:

Figura 1: Fluxo de requisição do Prompt Caching — a primeira requisição (Falha de Cache → Escrita) processa todos os tokens e grava no Cache. A segunda requisição (Acerto de Cache → Leitura) pula os tokens em Cache e lê do Cache, resultando em menor TTFT e custo reduzido de tokens de entrada.

Os conceitos-chave a entender são:

  1. Escopo do Cache: As entradas de cache são delimitadas por conta AWS e Região AWS. As entradas não são compartilhadas entre contas.
  2. Limites de tokens: Cada checkpoint de cache deve atender ao limite mínimo de tokens do modelo. Por exemplo, o Anthropic Claude Sonnet 4.6 requer pelo menos 2.048 tokens. Já o Anthropic Claude Sonnet 4.5 requer pelo menos 1.024 tokens.
  3. Time-To-Live (TTL): As entradas de cache expiram com base no TTL especificado na requisição. O padrão é 5 minutos, com modelos selecionados suportando até 1 hora.
  4. Sintaxe agnóstica de modelo: A sintaxe CachePoint da API Converse é idêntica em todas as famílias de modelos suportadas, incluindo Anthropic Claude e Amazon Nova.

Modelos suportados e limites de tokens

A tabela a seguir resume os limites mínimos de tokens para cada modelo suportado:

Modelo Limite Mínimo de Tokens TTL de 5 minutos TTL de 1 hora
Claude Sonnet 4.6 2.048 tokens Sim Sim
Claude Opus 4.6 4.096 tokens Sim Sim
Claude Sonnet 4.5 1.024 tokens Sim Sim
Claude Opus 4.5 4.096 tokens Sim Sim
Claude Haiku 4.5 4.096 tokens Sim Sim
Claude 3.7 Sonnet 1.024 tokens Sim Não
Claude 3.5 Sonnet v2 1.024 tokens Sim Não
Nova Micro 1.536 tokens Sim Não
Nova Lite 1.536 tokens Sim Não
Nova Pro 1.024 tokens Sim Não
Nova Premier 1.024 tokens Sim Não

Para as informações mais atualizadas sobre suporte a modelos, consulte a documentação de Prompt Caching do Amazon Bedrock.

Preços

O Prompt Caching introduz duas categorias de tokens além dos tokens de entrada e saída padrão:

Tipo de Token Descrição Custo vs Entrada Padrão
CacheWriteInputTokens Tokens gravados no Cache (primeira requisição) 25% mais alto que a entrada padrão
CacheReadInputTokens Tokens lidos do Cache (requisições subsequentes) 90% menor que a entrada padrão

A economia de custos é significativa para cargas de trabalho com contexto repetido. Por exemplo, se você envia um documento de 10.000 tokens com 10 perguntas diferentes, a primeira requisição incorre em um custo de escrita no cache, mas as 9 requisições restantes leem do cache com custo 90% reduzido: uma economia líquida de aproximadamente 75% nos custos de tokens de entrada para esse contexto de documento. Consulte os preços do Amazon Bedrock para informações detalhadas sobre preços.

Pré-requisitos

Antes de começar com os cenários, certifique-se de ter o seguinte:

  1. Uma conta AWS com acesso ao Amazon Bedrock em uma região AWS suportada (como us-west-2).
  2. Acesso ao modelo habilitado para o modelo de destino. Os exemplos neste post usam o Anthropic Claude Sonnet 4.5 (global.anthropic.claude-sonnet-4-5-20250929-v1:0) devido ao seu menor numero de tokens requerido para o cache. Consulte Gerenciar acesso a modelos para instruções.
  3. Python 10 ou posterior com as seguintes dependências instaladas:
pip install boto3>=1.35.76 langchain-aws>=0.2.12 matplotlib pandas
  1. Credenciais AWS configuradas através do perfil padrão ou variáveis de ambiente. Consulte Configurar a AWS CLI para instruções de configuração.

Cenário 1: Cache de conteúdo de mensagem

O caso de uso mais comum para Prompt Caching é o armazenamento em cache de documentos longos ou conteúdo de referência que os usuários consultam repetidamente. Pense em uma aplicação de geração aumentada por recuperação (retrieval aumented generation ou RAG) onde os usuários fazem múltiplas perguntas sobre o mesmo documento, ou um assistente de codificação que referencia uma base de código grande.

Como funciona

Coloque um bloco de conteúdo CachePoint após o conteúdo estático e antes da pergunta dinâmica. O Amazon Bedrock armazena em cache tudo antes do checkpoint e reutiliza nas requisições subsequentes:

content = [
    {"text": "<conteúdo estático do documento>"},
    {"cachePoint": {"type": "default"}},   # armazena em Cache tudo acima
    {"text": "<pergunta do usuário>"}       # dinâmico — muda a cada requisição
]

Implementação

Primeiro, configuramos o cliente do Amazon Bedrock runtime e definimos um documento de exemplo. Em uma aplicação de produção, esse documento poderia ser um PDF, um artigo de base de conhecimento ou qualquer conteúdo que exceda o limite de 2.048 tokens:

import boto3
import json
import time

MODEL_ID = "global.anthropic.claude-sonnet-4-5-20250929-v1:0" # Requisito mínimo de tokens para ativar o cache: 1.024 tokens
AWS_REGION = "us-west-2"

bedrock = boto3.client("bedrock-runtime", region_name=AWS_REGION)

# Documento GRANDE o suficiente (>1024 tokens necessários para Claude Sonnet 4.5)
DOCUMENT = """
O Sistema Solar: Uma Visão Completa

INTRODUÇÃO
O Sistema Solar é um sistema planetário localizado na Via Láctea, composto pelo Sol e todos os objetos celestes que orbitam ao seu redor devido à sua força gravitacional. Este sistema inclui oito planetas principais, suas luas, planetas anões, asteroides, cometas e incontáveis partículas de poeira e gás interplanetário.

O SOL
O Sol é uma estrela de tipo espectral G2V, frequentemente chamada de "anã amarela". Contém aproximadamente 99,86% da massa total do Sistema Solar. Com um diâmetro de cerca de 1,4 milhão de quilômetros, o Sol é composto principalmente de hidrogênio (74%) e hélio (24%), com traços de elementos mais pesados. Sua energia é gerada através de reações de fusão nuclear em seu núcleo, onde temperaturas atingem 15 milhões de graus Celsius.

A estrutura solar consiste em várias camadas: o núcleo, a zona radiativa, a zona convectiva, a fotosfera, a cromosfera e a coroa. A fotosfera é a camada visível do Sol, com temperatura de cerca de 5.500°C. A coroa, a camada mais externa da atmosfera solar, é paradoxalmente muito mais quente que a fotosfera, atingindo milhões de graus.

PLANETAS ROCHOSOS

Mercúrio
Mercúrio é o planeta mais próximo do Sol, orbitando a uma distância média de 58 milhões de quilômetros. É também o menor dos oito planetas, com um diâmetro de apenas 4.879 km. Sua superfície é fortemente cratada, semelhante à Lua, devido à ausência de atmosfera significativa que pudesse protegê-lo de impactos de meteoritos.

A temperatura em Mercúrio varia drasticamente, de -180°C durante a noite a 430°C durante o dia, a maior variação de temperatura de qualquer planeta do Sistema Solar. Um dia em Mercúrio (de nascer do sol a nascer do sol) dura 176 dias terrestres, enquanto seu ano dura apenas 88 dias terrestres.

Vênus
Vênus, o segundo planeta a partir do Sol, é frequentemente chamado de "planeta irmão" da Terra devido ao seu tamanho similar (diâmetro de 12.104 km vs. 12.742 km da Terra). No entanto, as semelhanças terminam aí. Vênus possui a atmosfera mais densa de todos os planetas rochosos, composta principalmente de dióxido de carbono (96%) com nuvens de ácido sulfúrico.

O efeito estufa descontrolado em Vênus resulta em temperaturas superficiais de cerca de 465°C, tornando-o o planeta mais quente do Sistema Solar, ainda mais quente que Mercúrio. A pressão atmosférica na superfície é 92 vezes maior que a da Terra. Vênus também é único por sua rotação retrógrada, girando no sentido oposto ao da maioria dos outros planetas.

Terra
A Terra, nosso planeta natal, é o terceiro a partir do Sol e o quinto maior do Sistema Solar. É o único corpo celeste conhecido por abrigar vida. A Terra possui uma atmosfera rica em nitrogênio (78%) e oxigênio (21%), essencial para a maioria das formas de vida conhecidas.

A presença de água líquida na superfície, um campo magnético protetor, e a distância ideal do Sol (cerca de 150 milhões de km, conhecida como 1 Unidade Astronômica) criaram condições perfeitas para o desenvolvimento e manutenção da vida. A Terra tem uma lua natural, simplesmente chamada de "Lua", que estabiliza a inclinação axial do planeta e influencia as marés oceânicas.

Marte
Marte, o quarto planeta, é conhecido como o "Planeta Vermelho" devido ao óxido de ferro (ferrugem) em sua superfície. Com metade do diâmetro da Terra (6.779 km), Marte possui a atmosfera mais fina entre os planetas rochosos, composta principalmente de CO2 (95%). Marte exibe características geológicas fascinantes, incluindo o Monte Olimpo, o maior vulcão do Sistema Solar com 21 km de altura, e o Vale Marineris, um sistema de cânions que se estende por 4.000 km. Evidências sugerem que Marte teve água líquida em sua superfície no passado, e água congelada ainda existe em suas calotas polares. O planeta tem dois pequenos satélites naturais, Fobos e Deimos.

CINTURÃO DE ASTEROIDES
Entre Marte e Júpiter encontra-se o Cinturão de Asteroides, uma região contendo milhões de objetos rochosos. O maior destes é Ceres, agora classificado como planeta anão com diâmetro de cerca de 940 km. O cinturão principal contém cerca de 1-2 milhões de asteroides com mais de 1 km de diâmetro.

PLANETAS GIGANTES GASOSOS

Júpiter
Júpiter é o quinto planeta a partir do Sol e o maior do Sistema Solar. É um gigante gasoso com uma massa mais de duas vezes e meia a de todos os outros planetas do Sistema Solar combinados, mas apenas um milésimo da massa do Sol. Com um diâmetro de 139.820 km, Júpiter poderia conter mais de 1.300 Terras em seu volume.

A atmosfera de Júpiter é composta principalmente de hidrogênio (90%) e hélio (10%), com traços de metano, vapor d'água, amônia e outros compostos. A característica mais proeminente de Júpiter é a Grande Mancha Vermelha, uma tempestade anticiclônica que persiste há pelo menos 350 anos e é grande o suficiente para engolir três Terras.

Júpiter possui um poderoso campo magnético, cerca de 14 vezes mais forte que o da Terra. O planeta tem pelo menos 95 luas conhecidas, incluindo as quatro grandes luas galileanas: Io, Europa, Ganimedes e Calisto. Europa é particularmente interessante para astrobiólogos devido a evidências de um oceano subsuperficial que pode abrigar vida.

Saturno
Saturno é o sexto planeta a partir do Sol e o segundo maior do Sistema Solar. É famoso por seu impressionante sistema de anéis, composto principalmente de partículas de gelo e rocha que variam em tamanho desde grãos minúsculos até blocos do tamanho de montanhas.

Com uma densidade média inferior à da água, Saturno flutuaria se houvesse um oceano grande o suficiente para contê-lo. O planeta tem um diâmetro de 116.460 km e leva 29,5 anos terrestres para completar uma órbita ao redor do Sol. Saturno possui pelo menos 146 luas confirmadas, sendo Titã a maior delas e a única lua do Sistema Solar com uma atmosfera densa.

CONCLUSÃO
O Sistema Solar é um laboratório natural para compreender a formação e evolução planetária. Desde mundos rochosos escaldantes próximos ao Sol até os reinos gelados das regiões externas, cada corpo celeste oferece insights únicos sobre processos físicos, químicos e potencialmente biológicos. Missões espaciais continuam revelando novas maravilhas, transformando nossa compreensão deste sistema que chamamos de lar.
"""

Em seguida, definimos nossa função de Cache. Os elementos-chave são o bloco CachePoint posicionado entre o documento estático e a pergunta dinâmica:

def converse_with_Cache(document, question):
    """Consulta um documento com Prompt Caching habilitado."""
    content = [
        {"text": document},
        {"cachePoint": {"type": "default"}},
        {"text": question}
    ]

    response = bedrock.converse(
        modelId=MODEL_ID,
        messages=[{"role": "user", "content": content}],
        inferenceConfig={"maxTokens": 512}
    )
    return response["usage"]

Agora podemos observar o comportamento do cache em duas requisições. A primeira requisição grava no cache, e a segunda lê dele:

# Requisição 1 — escrita no Cache (primeira vez vendo este conteúdo)
usage1 = converse_with_Cache(DOCUMENT, "Quais são os pontos-chave?")
print("Requisição 1 (escrita no Cache esperada):")
print(json.dumps(usage1, indent=2))

time.sleep(1)

# Requisição 2 — leitura do Cache (mesmo documento, pergunta diferente)
usage2 = converse_with_Cache(DOCUMENT, "Resuma as conclusões.")
print("\nRequisição 2 (leitura do Cache esperada):")
print(json.dumps(usage2, indent=2))

Lendo métricas de Cache

O objeto usage da resposta inclui dois campos específicos de Cache:

Campo Descrição
CacheWriteInputTokens Tokens gravados no Cache (aparece na primeira requisição)
CacheReadInputTokens Tokens lidos do Cache (aparece nas requisições subsequentes)

Em nossos testes com o Claude Sonnet 4.5 e um documento excedendo 1.024 tokens, a primeira requisição mostra a escrita no Cache:

{
  "inputTokens": 28,
  "outputTokens": 253,
  "CacheWriteInputTokens": 1898,
  "CacheReadInputTokens": 0
}

E a segunda requisição com o mesmo prefixo de documento lê do Cache:

{
  "inputTokens": 28,
  "outputTokens": 294,
  "CacheWriteInputTokens": 0,
  "CacheReadInputTokens": 1898
}

Observe que CacheReadInputTokens agora reflete os 2.082 tokens lidos do cache, todo o prefixo do documento foi reutilizado sem reprocessamento. Apenas 28 tokens (a própria pergunta) foram processados como entrada padrão. Esses tokens em cache são cobrados na tarifa reduzida de leitura de cache (90% menor que a entrada padrão).

Gerenciamento simplificado de Cache

Os modelos Claude no Amazon Bedrock suportam gerenciamento simplificado de Cache: você pode colocar um único CachePoint, e o Amazon Bedrock verifica automaticamente acertos de cache em todos os prefixos até aproximadamente 20 blocos de conteúdo antes desse marcador. Isso significa que você não precisa colocar manualmente múltiplos checkpoints de cache para obter acertos de cache em porções anteriores da sua conversa.

Para controle mais granular, você pode colocar múltiplos marcadores CachePoint após cada seção de conteúdo:

content = [
    {"text": SECAO_1},
    {"cachePoint": {"type": "default"}},
    {"text": SECAO_2},
    {"cachePoint": {"type": "default"}},
    {"text": SECAO_3},
    {"cachePoint": {"type": "default"}},
    {"text": PERGUNTA}
]

Essa abordagem permite acertos parciais de cache. Se apenas as duas primeiras seções corresponderem a uma requisição anterior, o modelo reutiliza o cache para essas seções e processa o conteúdo restante.

Variante com streaming

A mesma sintaxe de cache funciona com converse_stream. A principal diferença é que as métricas de cache chegam no evento metadata ao final do stream, em vez de na resposta imediata:

def converse_stream_with_Cache(document, question):
    content = [
        {"text": document},
        {"cachePoint": {"type": "default"}},
        {"text": question}
    ]

    response = bedrock.converse_stream(
        modelId=MODEL_ID,
        messages=[{"role": "user", "content": content}],
        inferenceConfig={"maxTokens": 512}
    )

    text = ""
    usage = {}
    for event in response["stream"]:
        if "contentBlockDelta" in event:
            text += event["contentBlockDelta"]["delta"].get("text", "")
        elif "metadata" in event:
            usage = event["metadata"].get("usage", {})

    return usage, text

Benchmark de TTFT

Para quantificar a melhoria de latência, podemos medir o Time-To-First-Token (TTFT) com e sem cache:

def measure_ttft(document, question, use_Cache=True, iterations=5):
    """Mede o TTFT usando ConverseStream."""
    ttfts = []
    for i in range(iterations):
        if use_Cache:
            content = [
                {"text": document},
                {"cachePoint": {"type": "default"}},
                {"text": question}
            ]
        else:
            content = [{"text": document + "\n\n" + question}]

        start = time.time()
        response = bedrock.converse_stream(
            modelId=MODEL_ID,
            messages=[{"role": "user", "content": content}],
            inferenceConfig={"maxTokens": 512}
        )
        for event in response["stream"]:
            if "contentBlockDelta" in event:
                ttft = time.time() - start
                ttfts.append(ttft)
                for _ in response["stream"]:
                    pass
                break
        time.sleep(0.5)
    return ttfts

Em nossos testes com um documento excedendo 5.000 tokens, as requisições com cache mostraram consistentemente menor TTFT mediano em comparação com requisições sem cache. A melhoria exata varia com base no tamanho do documento, modelo e carga atual, mas o benefício direcional é claro: menos tokens para processar significa entrega mais rápida do primeiro token.

Cenário 2: Cache de Prompt de sistema

Muitas aplicações usam prompts de sistema detalhados que definem a persona do modelo, diretrizes e expertise de domínio. Esses prompts de sistema podem ter milhares de tokens e permanecem constantes em todas as interações do usuário. O Prompt Cache de sistema permite que você pague o custo total de processamento uma vez e reutilize o prompt de sistema em cache para cada mensagem subsequente.

Como funciona

O parâmetro system da API Converse aceita um array de blocos de conteúdo. Coloque um CachePoint após o texto do sistema:

system = [
    {"text": "<Prompt de sistema detalhado>"},
    {"cachePoint": {"type": "default"}}
]

Implementação

Definimos um prompt de sistema abrangente, como neste exemplo, uma persona de Consultor Especialista em Ciência Espacial com diretrizes detalhadas de resposta. O Prompt excede o limite de 2.048 tokens para habilitar o cache:


SYSTEM_PROMPT = """Você é um Consultor Especialista em Ciência Espacial, um assistente de IA altamente conhecedor especializado em astronomia, astrofísica, ciência planetária e exploração espacial. Seu papel é fornecer informações precisas, abrangentes e envolventes sobre todos os aspectos da ciência espacial.

## Áreas de Expertise Principal

### Ciência Planetária
Você possui conhecimento profundo sobre formação planetária, composição, atmosferas e geologia em todo o nosso sistema solar e além. Isso inclui entender os planetas rochosos internos (Mercúrio, Vênus, Terra e Marte), os gigantes gasosos (Júpiter e Saturno), os gigantes de gelo (Urano e Netuno), planetas anões como Plutão e Ceres, e os incontáveis corpos menores que habitam nosso sistema solar.

Você compreende os processos que moldam mundos planetários: vulcanismo, tectônica, erosão atmosférica, impactos de meteoritos, criovulcanismo e diferenciação planetária. Você pode explicar como os campos magnéticos planetários surgem e protegem atmosferas, como as estações mudam em diferentes mundos, e como a água e outros voláteis se comportam sob condições planetárias variadas.

Sua expertise se estende a luas e sistemas de satélites. Você conhece as fascinantes luas do sistema solar: Io vulcânica de Júpiter, Europa com seu oceano subsuperficial, Titã de Saturno com seus lagos de metano, Encélado com seus gêiseres de água, Tritão de Netuno com seu nitrogênio congelado, e nossa própria Lua com sua história de formação única. Você entende como as forças de maré moldam esses mundos e como eles podem abrigar ambientes habitáveis.

### Astrofísica e Cosmologia
Sua expertise se estende à física fundamental que governa o universo. Você entende evolução estelar desde nebulosas de formação estelar até supernovas e buracos negros. Você pode explicar o ciclo de vida das estrelas, desde anãs vermelhas de longa vida até gigantes azuis de curta vida, e como a massa estelar determina o destino de uma estrela.

Você compreende a estrutura e evolução de galáxias, incluindo nossa Via Láctea. Você conhece os diferentes tipos de galáxias - espirais, elípticas e irregulares - e como elas se formam, interagem e evoluem ao longo de bilhões de anos. Você entende o papel dos buracos negros supermassivos nos centros galácticos e como eles influenciam a evolução galáctica.

Seu conhecimento abrange cosmologia moderna: a teoria do Big Bang, expansão do universo, radiação cósmica de fundo em micro-ondas, energia escura, matéria escura e a estrutura em larga escala do cosmos. Você pode discutir o destino final do universo, a natureza do espaço-tempo e os princípios fundamentais que governam a realidade física.

Você está familiarizado com fenômenos astrofísicos exóticos: pulsares, magnetares, buracos negros, estrelas de nêutrons, anãs brancas, quasares, blazares e explosões de raios gama. Você entende ondas gravitacionais e como elas nos permitem observar eventos cósmicos violentos de novas maneiras.

### Exploração Espacial
Você é versado na história e no futuro da exploração espacial humana e robótica. Você conhece os marcos da era espacial: o lançamento do Sputnik, Yuri Gagarin como primeiro humano no espaço, o programa Apollo e os pousos na Lua, as estações espaciais Skylab, Mir e ISS, os programas de ônibus espaciais, e as missões robóticas pioneiras.

Você entende missões robóticas atuais e passadas: as sondas Voyager explorando o espaço interestelar, Cassini-Huygens em Saturno, New Horizons em Plutão, os rovers marcianos Spirit, Opportunity, Curiosity e Perseverance, as missões da ESA como Rosetta, as missões lunares chinesas, e as sondas solares Parker e Solar Orbiter.

Você está familiarizado com tecnologia espacial: sistemas de propulsão (químicos, iônicos, nucleares), navegação espacial, sistemas de suporte à vida, proteção contra radiação, comunicações no espaço profundo, telescópios espaciais e instrumentos científicos. Você entende os desafios únicos da engenharia espacial: vácuo, radiação, microgravidade, temperaturas extremas e confiabilidade de longo prazo.

Você acompanha desenvolvimentos atuais em exploração espacial comercial: SpaceX e seu sistema Starship, Blue Origin e New Glenn, os planos da Artemis da NASA para retornar à Lua, a estação espacial Gateway lunar, missões planejadas para Marte, e o crescente papel de empresas privadas na exploração espacial.

### Astrobiologia e Busca por Vida
Você possui conhecimento especializado sobre as condições necessárias para a vida, zonas habitáveis ao redor de estrelas, e a busca por vida no universo. Você entende os requisitos fundamentais para a vida como a conhecemos: água líquida, fontes de energia, elementos básicos (CHNOPS), e ambientes estáveis.

Você conhece os ambientes potencialmente habitáveis no sistema solar: o oceano subsuperficial de Europa, os mares de Encélado, os lagos de Titã, o antigo Marte úmido, e possivelmente até a alta atmosfera de Vênus. Você entende como extremófilos na Terra informam nossa busca por vida em outros lugares.

Você está familiarizado com a busca por exoplanetas e a caracterização de suas atmosferas em busca de bioassinaturas. Você conhece métodos de detecção de exoplanetas: trânsitos, velocidade radial, imageamento direto e microlentes gravitacionais. Você entende o conceito de zonas habitáveis e como elas variam com tipos estelares.

### Observação Astronômica
Você possui conhecimento sobre técnicas de observação astronômica, desde telescópios terrestres até observatórios espaciais. Você entende diferentes comprimentos de onda da luz: rádio, infravermelho, visível, ultravioleta, raios-X e raios gama, e o que cada um revela sobre o cosmos.

Você conhece grandes observatórios: o Telescópio Espacial Hubble, o Telescópio Espacial James Webb, o Observatório de Raios-X Chandra, os telescópios VLT do ESO, os observatórios Keck, o Atacama Large Millimeter Array (ALMA), e observatórios de ondas gravitacionais como LIGO e Virgo.

## Diretrizes de Resposta

### Precisão Científica
Sempre priorize precisão científica em suas respostas. Base suas explicações em nosso entendimento científico atual. Quando houver incerteza ou debate científico, reconheça isso explicitamente e apresente diferentes perspectivas. Distinga claramente entre fatos estabelecidos, teorias bem suportadas, hipóteses especulativas e ficção científica.

### Clareza e Acessibilidade
Adapte suas explicações ao nível aparente de conhecimento do questionador. Para perguntas básicas, forneça explicações claras e acessíveis usando analogias quando apropriado. Para perguntas avançadas, você pode usar terminologia técnica mais livremente, mas sempre defina termos especializados na primeira vez que os usar.

Use analogias e comparações para tornar conceitos abstratos mais concretos. Por exemplo, compare tamanhos planetários a objetos familiares, distâncias cósmicas a viagens terrestres, ou escalas de tempo geológicas a eventos históricos humanos.

### Contexto e Perspectiva
Sempre forneça contexto apropriado para suas respostas. Explique não apenas o que sabemos, mas como sabemos disso - as missões, observações e experimentos que forneceram as evidências. Quando relevante, mencione a história das descobertas e como nosso entendimento evoluiu.

Coloque informações em perspectiva usando comparações e escalas apropriadas. Ajude os usuários a compreender as vastas escalas de espaço e tempo envolvidas na astronomia.

### Engajamento e Entusiasmo
Transmita genuíno entusiasmo pelo maravilhoso universo que habitamos. A ciência espacial é repleta de descobertas surpreendentes e belas - compartilhe esse senso de admiração. Use linguagem envolvente que capture a imaginação enquanto permanece cientificamente rigorosa.

### Desenvolvimentos Atuais
Mantenha-se consciente de que a ciência espacial é um campo em rápida evolução. Novas descobertas são feitas regularmente. Quando apropriado, mencione desenvolvimentos recentes e missões futuras planejadas. Se sua informação puder estar desatualizada, indique isso ao usuário.

### Limitações e Incertezas
Seja honesto sobre as limitações de nosso conhecimento atual. A ciência é um processo contínuo de descoberta e refinamento. Quando não souber algo ou quando houver questões não resolvidas, diga isso claramente. É melhor admitir incerteza do que fornecer informações potencialmente incorretas.

## Estilo de Comunicação

Mantenha um tom profissional mas acessível. Seja paciente e encorajador com todas as perguntas, independentemente do nível de sofisticação. Evite jargão desnecessário, mas não simplifique excessivamente conceitos complexos de maneiras que possam ser enganosas.

Estruture respostas longas de forma clara com seções e subtítulos quando apropriado. Use listas numeradas ou com marcadores para organizar informações complexas. Comece com uma resposta direta à pergunta, depois forneça detalhes e contexto adicional.

Quando apropriado, sugira recursos adicionais ou áreas relacionadas de interesse que o usuário possa querer explorar. Encoraje curiosidade e aprendizado contínuo sobre nosso fascinante universo.
"""

A função de cache coloca o CachePoint no parâmetro system, mantendo as mensagens do usuário separadas:

def converse_system_Cached(question):
    response = bedrock.converse(
        modelId=MODEL_ID,
        system=[
            {"text": SYSTEM_PROMPT},
            {"cachePoint": {"type": "default"}}
        ],
        messages=[{"role": "user", "content": [{"text": question}]}],
        inferenceConfig={"maxTokens": 512}
    )
    return response["usage"], response["output"]["message"]["content"][0]["text"]

# Requisição 1 — escrita no Cache
usage1, _ = converse_system_Cached("Quais são os locais mais promissores para encontrar vida microbiana?")
print("Requisição 1 (escrita no Cache esperada):")
print(json.dumps(usage1, indent=2))

time.sleep(1)

# Requisição 2 — pergunta diferente, mesmo Prompt de sistema — leitura do Cache
usage2, _ = converse_system_Cached("Como as ondas gravitacionais nos ajudam a estudar o universo?")
print("\nRequisição 2 (leitura do Cache esperada — pergunta de usuário diferente):")
print(json.dumps(usage2, indent=2))

A percepção crítica aqui é que a mensagem do usuário muda entre as requisições, mas o prompt de sistema permanece idêntico. O Amazon Bedrock armazena em cache o prefixo do prompt de sistema e o reutiliza, independentemente do que o usuário pergunte.

Quando usar Cache de Prompt de sistema

O Cache de Prompt de sistema é ideal para:

  • Assistentes baseados em persona com descrições detalhadas de papel e diretrizes comportamentais
  • Fluxos de trabalho agênticos com instruções extensas que permanecem constantes entre turnos
  • Bots de atendimento ao cliente com políticas complexas da empresa e protocolos de resposta
  • Assistentes específicos de domínio com bases de conhecimento incorporadas no Prompt de sistema

Cenário 3: Cache de definição de ferramentas

Aplicações agênticas frequentemente definem dezenas de ferramentas com schemas JSON detalhados. Essas definições de ferramentas podem coletivamente conter milhares de tokens e raramente mudam entre requisições. O cache de definição de ferramentas evita o reprocessamento desses schemas a cada turno.

Como funciona

Adicione um CachePoint como último elemento no array tools dentro do toolConfig:

toolConfig = {
    "tools": [
        {"toolSpec": {"name": "tool_1", "description": "...", "inputSchema": {"json": {...}}}},
        {"toolSpec": {"name": "tool_2", "description": "...", "inputSchema": {"json": {...}}}},
        {"cachePoint": {"type": "default"}}   # após todas as definições de ferramentas
    ]
}

Implementação

Definimos um conjunto de ferramentas com tema espacial com schemas abrangentes. Em uma aplicação de produção, essas podem ser integrações de API, consultas a banco de dados ou chamadas a serviços externos:

TOOLS_LIST = [
    {
        "name": "analyze_celestial_object",
        "description": "Analisa um objeto celeste e retorna informações detalhadas sobre suas propriedades físicas, composição, órbita e características observacionais. Suporta planetas, luas, estrelas, exoplanetas e galáxias com diferentes níveis de profundidade de análise.",
        "input_schema": {
            "type": "object",
            "properties": {
                "object_name": {
                    "type": "string",
                    "description": "O nome do objeto celeste a ser analisado (ex: Marte, Titã, Proxima Centauri)"
                },
                "object_type": {
                    "type": "string",
                    "enum": ["planet", "moon", "star", "exoplanet", "galaxy", "asteroid", "comet", "nebula"],
                    "description": "O tipo de objeto celeste"
                },
                "analysis_depth": {
                    "type": "string",
                    "enum": ["basic", "standard", "comprehensive"],
                    "description": "Nível de detalhe da análise: basic (visão geral), standard (propriedades principais), comprehensive (análise completa)"
                },
                "output_units": {
                    "type": "object",
                    "properties": {
                        "mass": {
                            "type": "string",
                            "enum": ["kg", "earth_masses", "solar_masses", "jupiter_masses"],
                            "description": "Unidade para medidas de massa"
                        },
                        "distance": {
                            "type": "string",
                            "enum": ["km", "au", "light_years", "parsecs"],
                            "description": "Unidade para medidas de distância"
                        },
                        "temperature": {
                            "type": "string",
                            "enum": ["celsius", "kelvin", "fahrenheit"],
                            "description": "Unidade para temperatura"
                        }
                    }
                },
                "include_history": {
                    "type": "boolean",
                    "description": "Incluir histórico de descoberta e observações importantes"
                }
            },
            "required": ["object_name", "object_type"]
        }
    },
    {
        "name": "calculate_orbital_mechanics",
        "description": "Realiza cálculos de mecânica orbital incluindo planejamento de trajetória, transferências de Hohmann, assistências gravitacionais, velocidade de escape e previsões de posição orbital. Essencial para missões espaciais e planejamento de trajetórias.",
        "input_schema": {
            "type": "object",
            "properties": {
                "calculation_type": {
                    "type": "string",
                    "enum": ["hohmann_transfer", "gravity_assist", "escape_velocity", "orbital_period", "delta_v"],
                    "description": "Tipo de cálculo orbital a ser realizado"
                },
                "origin_body": {
                    "type": "string",
                    "description": "Corpo celeste de origem (ex: Terra, Marte)"
                },
                "destination_body": {
                    "type": "string",
                    "description": "Corpo celeste de destino (opcional para alguns cálculos)"
                },
                "spacecraft_mass": {
                    "type": "number",
                    "description": "Massa da espaçonave em quilogramas"
                },
                "initial_orbit": {
                    "type": "object",
                    "properties": {
                        "altitude": {"type": "number", "description": "Altitude da órbita inicial em km"},
                        "eccentricity": {"type": "number", "description": "Excentricidade orbital (0 = circular)"},
                        "inclination": {"type": "number", "description": "Inclinação orbital em graus"}
                    }
                },
                "target_orbit": {
                    "type": "object",
                    "properties": {
                        "altitude": {"type": "number", "description": "Altitude da órbita alvo em km"},
                        "eccentricity": {"type": "number", "description": "Excentricidade orbital"},
                        "inclination": {"type": "number", "description": "Inclinação orbital em graus"}
                    }
                }
            },
            "required": ["calculation_type", "origin_body"]
        }
    },
    {
        "name": "search_exoplanets",
        "description": "Busca no catálogo de exoplanetas confirmados com base em critérios específicos como zona habitável, tamanho, método de detecção, distância da Terra e características atmosféricas. Retorna dados atualizados de missões como Kepler, TESS e observatórios terrestres.",
        "input_schema": {
            "type": "object",
            "properties": {
                "habitable_zone_only": {
                    "type": "boolean",
                    "description": "Filtrar apenas exoplanetas na zona habitável de suas estrelas"
                },
                "max_distance_light_years": {
                    "type": "number",
                    "description": "Distância máxima da Terra em anos-luz"
                },
                "planet_type": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": ["terrestrial", "super_earth", "neptune_like", "gas_giant"]
                    },
                    "description": "Tipos de planetas a incluir na busca"
                },
                "detection_method": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": ["transit", "radial_velocity", "direct_imaging", "microlensing", "timing"]
                    },
                    "description": "Métodos de detecção utilizados"
                },
                "has_atmosphere_data": {
                    "type": "boolean",
                    "description": "Incluir apenas planetas com dados atmosféricos disponíveis"
                },
                "min_mass_earth_masses": {
                    "type": "number",
                    "description": "Massa mínima em massas terrestres"
                },
                "max_mass_earth_masses": {
                    "type": "number",
                    "description": "Massa máxima em massas terrestres"
                },
                "sort_by": {
                    "type": "string",
                    "enum": ["distance", "discovery_date", "mass", "radius", "temperature"],
                    "description": "Campo para ordenação dos resultados"
                },
                "limit": {
                    "type": "integer",
                    "description": "Número máximo de resultados a retornar",
                    "minimum": 1,
                    "maximum": 100
                }
            },
            "required": []
        }
    },
    {
        "name": "predict_astronomical_event",
        "description": "Prevê eventos astronômicos futuros como eclipses solares e lunares, trânsitos planetários, conjunções, chuvas de meteoros, passagens de cometas e alinhamentos planetários para uma localização específica na Terra.",
        "input_schema": {
            "type": "object",
            "properties": {
                "event_type": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": ["solar_eclipse", "lunar_eclipse", "planetary_transit", "conjunction", "meteor_shower", "comet_passage", "planetary_alignment"]
                    },
                    "description": "Tipos de eventos astronômicos a prever"
                },
                "location": {
                    "type": "object",
                    "properties": {
                        "latitude": {"type": "number", "minimum": -90, "maximum": 90},
                        "longitude": {"type": "number", "minimum": -180, "maximum": 180},
                        "city_name": {"type": "string", "description": "Nome da cidade (alternativo a lat/lon)"}
                    },
                    "description": "Localização do observador na Terra"
                },
                "time_range": {
                    "type": "object",
                    "properties": {
                        "start_date": {"type": "string", "format": "date", "description": "Data inicial (YYYY-MM-DD)"},
                        "end_date": {"type": "string", "format": "date", "description": "Data final (YYYY-MM-DD)"}
                    },
                    "required": ["start_date", "end_date"]
                },
                "minimum_visibility": {
                    "type": "string",
                    "enum": ["any", "partial", "total", "optimal"],
                    "description": "Visibilidade mínima requerida do evento"
                },
                "include_times": {
                    "type": "boolean",
                    "description": "Incluir horários exatos de início, máximo e fim do evento"
                }
            },
            "required": ["event_type", "time_range"]
        }
    },
    {
        "name": "analyze_spectroscopy_data",
        "description": "Analisa dados espectroscópicos de objetos celestes para determinar composição química, temperatura, velocidade radial, campo magnético e outras propriedades físicas. Suporta espectros de estrelas, nebulosas, galáxias e atmosferas planetárias.",
        "input_schema": {
            "type": "object",
            "properties": {
                "spectrum_data": {
                    "type": "object",
                    "properties": {
                        "wavelengths": {
                            "type": "array",
                            "items": {"type": "number"},
                            "description": "Array de comprimentos de onda em nanômetros"
                        },
                        "intensities": {
                            "type": "array",
                            "items": {"type": "number"},
                            "description": "Array de intensidades correspondentes"
                        }
                    }
                },
                "object_type": {
                    "type": "string",
                    "enum": ["star", "nebula", "galaxy", "planetary_atmosphere", "interstellar_medium"],
                    "description": "Tipo de objeto celeste sendo analisado"
                },
                "analysis_goals": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": ["chemical_composition", "temperature", "radial_velocity", "magnetic_field", "rotation_rate", "atmospheric_pressure"]
                    },
                    "description": "Objetivos específicos da análise espectroscópica"
                },
                "spectral_resolution": {
                    "type": "number",
                    "description": "Resolução espectral em angstroms"
                },
                "calibration_applied": {
                    "type": "boolean",
                    "description": "Indica se calibração já foi aplicada aos dados"
                }
            },
            "required": ["object_type", "analysis_goals"]
        }
    }
    # ... ferramentas adicionais
]

Construímos o formato de ferramentas da API Converse e adicionamos o CachePoint:

def build_converse_tools():
    """Converte definições de ferramentas para o formato da API Converse com Cache point."""
    tools = []
    for tool in TOOLS_LIST:
        tools.append({
            "toolSpec": {
                "name": tool["name"],
                "description": tool["description"],
                "inputSchema": {"json": tool["input_schema"]}
            }
        })
    # Adiciona CachePoint após todas as specs de ferramentas
    tools.append({"cachePoint": {"type": "default"}})
    return tools


def converse_tools_Cached(question):
    response = bedrock.converse(
        modelId=MODEL_ID,
        messages=[{"role": "user", "content": [{"text": question}]}],
        toolConfig={"tools": build_converse_tools()},
        inferenceConfig={"maxTokens": 512}
    )
    return response["usage"]

# Requisição 1 — escrita no Cache
usage1 = converse_tools_Cached("Planeje uma missão para Europa.")
print("Requisição 1 (escrita no Cache esperada):")
print(json.dumps(usage1, indent=2))

time.sleep(1)

# Requisição 2 — pergunta diferente, mesmas ferramentas — leitura do Cache
usage2 = converse_tools_Cached("Calcule a velocidade de escape de Marte.")
print("\nRequisição 2 (leitura do Cache esperada):")
print(json.dumps(usage2, indent=2))

O cache de definição de ferramentas é particularmente valioso para fluxos de trabalho agênticos onde o mesmo conjunto de ferramentas é invocado em muitos turnos de conversa. Ao armazenar em Cache os schemas de ferramentas uma vez, você evita o reprocessamento de milhares de tokens de definições de schema a cada turno.

Cenário 4: Cache com TTL misto

Nem todo conteúdo em cache tem o mesmo ciclo de vida. Material de referência central (conhecimento de domínio, catálogos de produtos, regras de conformidade) raramente muda e se beneficia de durações de cache mais longas, enquanto o contexto específico de sessão (turnos recentes de conversa, preferências do usuário) muda mais frequentemente e deve expirar antes. O cache com TTL misto permite atribuir diferentes tempos de expiração a diferentes camadas de conteúdo dentro de uma única requisição.

Como funciona

Cada CachePoint pode incluir um campo ttl. Há uma restrição de ordenação: checkpoints com TTL mais longo devem aparecer antes dos mais curtos na requisição:

content = [
    {"text": "<material de referência central>"},
    {"cachePoint": {"type": "default", "ttl": "1h"}},    # TTL mais longo primeiro
    {"text": "<contexto específico de sessão>"},
    {"cachePoint": {"type": "default", "ttl": "5m"}},    # TTL mais curto depois
    {"text": "<pergunta do usuário>"}
]

Implementação

Dividimos nosso conteúdo em duas camadas — uma seção de referência central armazenada em cache por 1 hora e uma seção de contexto de sessão armazenada em Cache por 5 minutos:


import boto3
import json
import time

MODEL_ID = "global.anthropic.claude-sonnet-4-5-20250929-v1:0"
AWS_REGION = "us-west-2"
CACHE_TTL_LONG = "1h"
CACHE_TTL_SHORT = "5m"

bedrock = boto3.client("bedrock-runtime", region_name=AWS_REGION)

SPACE_SECTION_1 = """
O universo é uma vastidão misteriosa que tem cativado a imaginação humana por milênios. Desde as primeiras civilizações que olhavam para o céu noturno e se perguntavam sobre a natureza das estrelas, até os astrônomos modernos usando telescópios sofisticados e naves espaciais para explorar galáxias distantes, nossa busca para compreender o cosmos continua sem trégua.

Nosso sistema solar, localizado na Via Láctea, abriga oito planetas, numerosos planetas anões e incontáveis objetos menores incluindo asteroides, cometas e meteoroides. O Sol, uma estrela de sequência principal tipo G de meia-idade, fornece a energia que sustenta a vida na Terra e influencia a dinâmica de todos os objetos dentro de seu alcance gravitacional.

O Sol em si é um objeto fascinante de estudo. Seu núcleo atinge temperaturas de 15 milhões de graus Celsius, onde a fusão nuclear converte hidrogênio em hélio, liberando tremendas quantidades de energia. Esta energia leva milhares de anos para viajar do núcleo até a superfície, onde finalmente irradia para o espaço como luz e calor. A superfície do Sol, chamada fotosfera, exibe uma textura granular causada por células de convecção de plasma quente subindo e esfriando. Manchas solares, regiões mais escuras na superfície, marcam áreas de intensa atividade magnética que podem gerar erupções solares e ejeções de massa coronal capazes de interromper comunicações e redes elétricas na Terra.

Mercúrio, o planeta mais interno, experimenta variações extremas de temperatura devido à sua proximidade com o Sol e falta de atmosfera substancial. Vênus, frequentemente chamado de gêmeo da Terra devido ao seu tamanho similar, possui uma atmosfera espessa composta principalmente de dióxido de carbono, criando um efeito estufa descontrolado que o torna o planeta mais quente do nosso sistema solar. A Terra, nosso lar, é o único planeta conhecido por abrigar vida, com sua combinação única de água líquida, temperaturas moderadas e campo magnético protetor.

A Lua da Terra, nosso único satélite natural, desempenha um papel crucial na estabilização da inclinação axial do nosso planeta, que mantém condições climáticas relativamente estáveis. A atração gravitacional da Lua cria marés nos oceanos da Terra, que influenciaram a evolução dos ecossistemas costeiros. A teoria principal para a formação da Lua sugere que ela resultou de uma colisão entre a Terra primitiva e um corpo do tamanho de Marte chamado Theia aproximadamente 4,5 bilhões de anos atrás. Este impacto gigante ejetou material em órbita ao redor da Terra, que eventualmente se aglutinou para formar a Lua.

Marte, o Planeta Vermelho, tem sido objeto de fascinação e especulação sobre a possibilidade de vida extraterrestre. Sua aparência enferrujada vem do óxido de ferro prevalente em sua superfície. O planeta apresenta o maior vulcão do sistema solar, Olympus Mons, e um sistema de cânions, Valles Marineris, que empequecem o Grand Canyon. Evidências dos rovers e orbitadores marcianos sugerem que água líquida uma vez fluiu na superfície marciana, esculpindo vales fluviais e leitos de lagos. Hoje, gelo de água existe nas calotas polares e possivelmente em depósitos subsuperficiais. A atmosfera fina, composta principalmente de dióxido de carbono, fornece pouca proteção contra a radiação solar prejudicial.

O cinturão de asteroides entre Marte e Júpiter contém milhões de objetos rochosos, remanescentes do sistema solar primitivo que nunca se aglutinaram em um planeta. O maior objeto neste cinturão é Ceres, agora classificado como planeta anão com um diâmetro de cerca de 940 quilômetros. Esses asteroides variam em tamanho desde pequenos seixos até corpos massivos de centenas de quilômetros de diâmetro. Cientistas estudam essas rochas antigas para entender as condições que existiam durante a formação do nosso sistema solar aproximadamente 4,6 bilhões de anos atrás. Alguns asteroides são compostos principalmente de rocha, outros de metal, e alguns contêm quantidades significativas de gelo de água e compostos orgânicos.

Júpiter, o rei dos planetas, domina o sistema solar externo com seu tamanho massivo e poderoso campo magnético. Este gigante gasoso poderia conter mais de 1.300 Terras em seu volume. Sua icônica Grande Mancha Vermelha é um sistema de tempestade que tem persistido por pelo menos 350 anos, maior que a própria Terra. As quatro maiores luas de Júpiter, descobertas por Galileu em 1610, constituem um sistema solar em miniatura. O oceano subsuperficial de Europa, a atividade vulcânica de Io, o campo magnético de Ganimedes e a superfície antiga e craterada de Calisto cada uma conta histórias únicas sobre processos planetários.

A atmosfera de Júpiter consiste principalmente de hidrogênio e hélio, com traços de metano, amônia, vapor de água e outros compostos. A rápida rotação do planeta, completando um dia em pouco menos de 10 horas, cria fortes correntes atmosféricas que produzem a aparência característica de bandas. Tempestades de relâmpagos em Júpiter podem ser milhares de vezes mais poderosas que as da Terra. O forte campo magnético do planeta, cerca de 20.000 vezes mais forte que o da Terra, aprisiona partículas carregadas em cinturões de radiação que seriam letais para naves espaciais e astronautas desprotegidos.

O magnífico sistema de anéis de Saturno, composto de incontáveis partículas de gelo e rocha, se estende por centenas de milhares de quilômetros no espaço, mas é notavelmente fino, às vezes menos de um quilômetro de espessura. O próprio planeta é um gigante gasoso com velocidades de vento que podem exceder 1.800 quilômetros por hora. Titã, a maior lua de Saturno, possui uma atmosfera espessa rica em nitrogênio e lagos de metano, tornando-a um dos corpos mais parecidos com a Terra no sistema solar, apesar de suas temperaturas gélidas de menos 179 graus Celsius.

Saturno tem pelo menos 146 luas confirmadas, cada uma com características únicas. Encélado, uma pequena lua gelada, expele gêiseres de vapor de água e partículas de gelo de sua região polar sul, sugerindo um oceano subsuperficial que poderia abrigar condições adequadas para a vida. Jápeto exibe uma aparência marcante de dois tons com um hemisfério brilhante e o outro escuro. Mimas apresenta uma cratera enorme que o faz se assemelhar à Estrela da Morte de Star Wars. Essas luas diversas fornecem insights sobre os processos que moldam mundos em todo o sistema solar.

Os gigantes de gelo Urano e Netuno representam a fronteira externa do nosso sistema planetário. Urano gira de lado, provavelmente devido a uma colisão massiva em seu passado distante, causando variações sazonais extremas que duram décadas. Netuno, o planeta mais ventoso, exibe as velocidades de vento mais rápidas do sistema solar, atingindo até 2.100 quilômetros por hora. Ambos os planetas têm sistemas complexos de anéis e numerosas luas, sendo Tritão de Netuno particularmente interessante devido à sua órbita retrógrada e gêiseres ativos de nitrogênio.

Urano aparece como uma esfera azul-esverdeada sem características na maioria das imagens devido ao metano em sua atmosfera absorvendo luz vermelha. No entanto, observações recentes revelaram características de nuvens e sistemas de tempestade em sua atmosfera. A inclinação axial incomum do planeta de 98 graus significa que seus polos alternadamente apontam para e longe do Sol durante sua órbita de 84 anos, criando as estações mais extremas do sistema solar. Miranda, uma das luas de Urano, exibe um dos terrenos mais bizarros e variados do sistema solar, com cânions massivos e características em terraços sugerindo um passado violento.

Netuno foi descoberto em 1846 através de previsões matemáticas ao invés de busca sistemática, tornando-se o primeiro planeta localizado através de cálculos teóricos ao invés de observação empírica. Sua cor azul profunda vem do metano na atmosfera, similar a Urano mas mais vívido. Netuno irradia mais calor do que recebe do Sol, sugerindo uma fonte interna de calor. A maior lua do planeta, Tritão, orbita na direção oposta à rotação de Netuno e está lentamente em espiral para dentro, sugerindo que foi capturada do Cinturão de Kuiper ao invés de se formar junto com o planeta.

Além de Netuno fica o Cinturão de Kuiper, lar de Plutão e milhares de outros corpos gelados. Esta região se estende de cerca de 30 a 55 unidades astronômicas do Sol e representa os remanescentes da formação planetária. A descoberta de numerosos grandes objetos do Cinturão de Kuiper no início do século XXI levou à reclassificação de Plutão como planeta anão em 2006, destacando como nossa compreensão do sistema solar continua a evoluir. Outros objetos notáveis do Cinturão de Kuiper incluem Éris, Makemake e Haumea, cada um com características únicas que desafiam nossa compreensão da formação e evolução planetária.
"""

SPACE_SECTION_2 = """
A pesquisa de exoplanetas revolucionou nossa compreensão dos sistemas planetários. O telescópio espacial Kepler descobriu milhares de planetas orbitando outras estrelas, revelando que planetas são comuns em toda a nossa galáxia. Alguns desses exoplanetas residem na zona habitável de suas estrelas, onde água líquida poderia existir na superfície.

Buracos negros, regiões do espaço-tempo onde a gravidade é tão forte que nada pode escapar, representam alguns dos objetos mais extremos do universo. Buracos negros estelares se formam do colapso de estrelas massivas, enquanto buracos negros supermassivos, contendo milhões a bilhões de massas solares, residem nos centros da maioria das galáxias incluindo a nossa.

Matéria escura e energia escura juntas compreendem cerca de 95% do conteúdo total de massa-energia do universo. A matéria escura, que não emite nem absorve luz, revela sua presença através de efeitos gravitacionais na matéria visível.

O estudo de exoplanetas revelou incrível diversidade em sistemas planetários. Júpiteres quentes orbitam suas estrelas em apenas dias, travados por maré com lados permanentes de dia e noite. Super-Terras, planetas maiores que a Terra mas menores que Netuno, não têm análogo em nosso sistema solar mas parecem comuns em outros lugares. Alguns exoplanetas orbitam sistemas estelares binários, experimentando amanheceres de dois sóis como o fictício planeta Tatooine. A missão TESS continua a descobrir novos mundos, encontrando planetas ao redor de estrelas próximas que poderiam ser estudados em detalhe por futuros telescópios.

A evolução estelar segue padrões previsíveis baseados na massa inicial de uma estrela. Estrelas de baixa massa como anãs vermelhas queimam seu combustível lentamente e podem brilhar por trilhões de anos. Estrelas de massa média como nosso Sol eventualmente se expandirão em gigantes vermelhas, engolindo seus planetas internos antes de expelir suas camadas externas para formar belas nebulosas planetárias. Estrelas massivas vivem rápido e morrem jovens, explodindo como supernovas que espalham elementos pesados pelo espaço, enriquecendo o meio interestelar com os blocos de construção para novas estrelas e planetas.

Estrelas de nêutrons, os núcleos colapsados de estrelas massivas, compactam mais massa que o Sol em uma esfera de apenas 20 quilômetros de diâmetro. Sua densidade é tão extrema que uma colher de chá de material de estrela de nêutrons pesaria cerca de um bilhão de toneladas na Terra. Algumas estrelas de nêutrons giram rapidamente e emitem feixes de radiação, aparecendo como pulsares que piscam com incrível precisão. Outras existem em sistemas binários, lentamente acumulando matéria de estrelas companheiras e ocasionalmente entrando em erupção em explosões termonucleares visíveis através da galáxia.

Galáxias vêm em muitas formas e tamanhos. Galáxias espirais como a Via Láctea apresentam braços em espiral de estrelas, gás e poeira girando ao redor de protuberâncias centrais densas. Galáxias elípticas aparecem como manchas sem características de estrelas antigas com pouca formação estelar em andamento. Galáxias irregulares carecem de estrutura organizada, frequentemente perturbadas por interações gravitacionais com vizinhas. As maiores galáxias contêm trilhões de estrelas, enquanto galáxias anãs podem hospedar apenas alguns bilhões. Colisões de galáxias, embora violentas em escalas cósmicas, raramente envolvem colisões reais de estrelas devido aos vastos espaços entre as estrelas.

O universo começou aproximadamente 13,8 bilhões de anos atrás no Big Bang, um evento que criou espaço, tempo, matéria e energia. Na primeira fração de segundo, o universo passou por inflação rápida, expandindo mais rápido que a velocidade da luz e preparando o palco para a formação de estrutura. Conforme o universo esfriou, partículas fundamentais se formaram, depois núcleos atômicos e eventualmente átomos neutros. A radiação cósmica de fundo em micro-ondas, descoberta em 1965, fornece um instantâneo do universo quando ele tinha apenas 380.000 anos, mostrando pequenas variações de densidade que eventualmente cresceriam em galáxias e aglomerados de galáxias.

Energia escura, descoberta através de observações de supernovas distantes, causa a aceleração da expansão do universo. Esta força misteriosa, compreendendo cerca de 68% do conteúdo de energia do universo, trabalha contra a gravidade em escalas cósmicas. Sua natureza permanece um dos maiores enigmas da física. Matéria escura, constituindo cerca de 27% do universo, revela-se através de efeitos gravitacionais mas nunca foi diretamente detectada. Numerosos experimentos em todo o mundo buscam partículas de matéria escura, esperando resolver este mistério cósmico.

Ondas gravitacionais, ondulações no espaço-tempo previstas pela relatividade geral de Einstein, foram detectadas pela primeira vez em 2015 pelo observatório LIGO. Essas ondas carregam informações sobre os eventos cósmicos mais violentos: colisões de buracos negros, fusões de estrelas de nêutrons e possivelmente ecos do próprio Big Bang. A detecção abriu uma nova janela para observar o universo, complementando a astronomia eletromagnética tradicional e permitindo aos cientistas estudar fenômenos anteriormente invisíveis aos telescópios.
"""

QUESTION = "Based on the context above about space, what are some key facts about Mars?"

def converse_mixed_ttl():
    content = [
        {"text": SPACE_SECTION_1},
        {"cachePoint": {"type": "default", "ttl": CACHE_TTL_LONG}},
        {"text": SPACE_SECTION_2},
        {"cachePoint": {"type": "default", "ttl": CACHE_TTL_SHORT}},
        {"text": QUESTION}
    ]

    response = bedrock.converse(
        modelId=MODEL_ID,
        messages=[{"role": "user", "content": content}],
        inferenceConfig={"maxTokens": 512}
    )
    return response["usage"]

# Requisição 1 — escrita no Cache
usage1 = converse_mixed_ttl()
print("Requisição 1 (escrita no Cache esperada):")
print(json.dumps(usage1, indent=2))

time.sleep(1)

# Requisição 2 — leitura do Cache
usage2 = converse_mixed_ttl()
print("\nRequisição 2 (leitura do Cache esperada):")
print(json.dumps(usage2, indent=2))

Entendendo o CacheDetails

A resposta da API Converse inclui um campo CacheDetails que mostra o detalhamento de tokens por TTL. Isso verifica se ambas as camadas de TTL estão funcionando corretamente:

"CacheDetails": [
    {"ttl": "1h", "inputTokens": 1547},
    {"ttl": "5m", "inputTokens": 1823}
]

Restrição de ordenação de TTL

Os checkpoints de cache devem ser ordenados do TTL mais longo para o mais curto dentro de uma única requisição. A API retorna um erro se um TTL mais curto aparecer antes de um mais longo:

  • Válido: 1h depois 5m
  • Inválido: 5m depois 1h

Essa restrição se aplica em todas as localizações de checkpoint de cache (mensagens, Prompt de sistema e definições de ferramentas).

Quando usar TTL misto

Tipo de conteúdo TTL recomendado Exemplos
Conhecimento de domínio 1 hora Catálogos de produtos, regras de conformidade, documentação de referência
Contexto de sessão 5 minutos Turnos recentes de conversa, preferências do usuário, estado da sessão
Definições de ferramentas 1 hora Schemas de API, assinaturas de funções que raramente mudam
Dados dinâmicos Sem Cache Dados em tempo real, consultas específicas do usuário

Cenário 5: Isolamento de tenant

Em aplicações multi-tenant, você deve impedir que o conteúdo em cache de um tenant seja lido por outro tenant. O Prompt Caching do Amazon Bedrock delimita as entradas por conta e região, mas dentro da mesma conta, as entradas de cache são compartilhadas por padrão. O padrão de prefixo com hash SHA-256 fornece isolamento leve de tenant sem exigir contas AWS separadas.

Como funciona

Adicione um hash SHA-256 do tenant_id como prefixo ao conteúdo em cache. Como o hash altera o prefixo do conteúdo, o Amazon Bedrock cria uma entrada de cache separada para cada tenant:

Implementação

import boto3
import json
import time
import hashlib

MODEL_ID = "global.anthropic.claude-sonnet-4-5-20250929-v1:0"
AWS_REGION = "us-west-2"

bedrock = boto3.client("bedrock-runtime", region_name=AWS_REGION)

DOCUMENT = """
O Sistema Solar: Uma Visão Completa

INTRODUÇÃO
O Sistema Solar é um sistema planetário localizado na Via Láctea, composto pelo Sol e todos os objetos celestes que orbitam ao seu redor devido à sua força gravitacional. Este sistema inclui oito planetas principais, suas luas, planetas anões, asteroides, cometas e incontáveis partículas de poeira e gás interplanetário.

O SOL
O Sol é uma estrela de tipo espectral G2V, frequentemente chamada de "anã amarela". Contém aproximadamente 99,86% da massa total do Sistema Solar. Com um diâmetro de cerca de 1,4 milhão de quilômetros, o Sol é composto principalmente de hidrogênio (74%) e hélio (24%), com traços de elementos mais pesados. Sua energia é gerada através de reações de fusão nuclear em seu núcleo, onde temperaturas atingem 15 milhões de graus Celsius.

A estrutura solar consiste em várias camadas: o núcleo, a zona radiativa, a zona convectiva, a fotosfera, a cromosfera e a coroa. A fotosfera é a camada visível do Sol, com temperatura de cerca de 5.500°C. A coroa, a camada mais externa da atmosfera solar, é paradoxalmente muito mais quente que a fotosfera, atingindo milhões de graus.

PLANETAS ROCHOSOS

Mercúrio
Mercúrio é o planeta mais próximo do Sol, orbitando a uma distância média de 58 milhões de quilômetros. É também o menor dos oito planetas, com um diâmetro de apenas 4.879 km. Sua superfície é fortemente cratada, semelhante à Lua, devido à ausência de atmosfera significativa que pudesse protegê-lo de impactos de meteoritos.

A temperatura em Mercúrio varia drasticamente, de -180°C durante a noite a 430°C durante o dia, a maior variação de temperatura de qualquer planeta do Sistema Solar. Um dia em Mercúrio (de nascer do sol a nascer do sol) dura 176 dias terrestres, enquanto seu ano dura apenas 88 dias terrestres.

Vênus
Vênus, o segundo planeta a partir do Sol, é frequentemente chamado de "planeta irmão" da Terra devido ao seu tamanho similar (diâmetro de 12.104 km vs. 12.742 km da Terra). No entanto, as semelhanças terminam aí. Vênus possui a atmosfera mais densa de todos os planetas rochosos, composta principalmente de dióxido de carbono (96%) com nuvens de ácido sulfúrico.

O efeito estufa descontrolado em Vênus resulta em temperaturas superficiais de cerca de 465°C, tornando-o o planeta mais quente do Sistema Solar, ainda mais quente que Mercúrio. A pressão atmosférica na superfície é 92 vezes maior que a da Terra. Vênus também é único por sua rotação retrógrada, girando no sentido oposto ao da maioria dos outros planetas.

Terra
A Terra, nosso planeta natal, é o terceiro a partir do Sol e o quinto maior do Sistema Solar. É o único corpo celeste conhecido por abrigar vida. A Terra possui uma atmosfera rica em nitrogênio (78%) e oxigênio (21%), essencial para a maioria das formas de vida conhecidas.

A presença de água líquida na superfície, um campo magnético protetor, e a distância ideal do Sol (cerca de 150 milhões de km, conhecida como 1 Unidade Astronômica) criaram condições perfeitas para o desenvolvimento e manutenção da vida. A Terra tem uma lua natural, simplesmente chamada de "Lua", que estabiliza a inclinação axial do planeta e influencia as marés oceânicas.

Marte
Marte, o quarto planeta, é conhecido como o "Planeta Vermelho" devido ao óxido de ferro (ferrugem) em sua superfície. Com metade do diâmetro da Terra (6.779 km), Marte possui a atmosfera mais fina entre os planetas rochosos, composta principalmente de CO2 (95%). Marte exibe características geológicas fascinantes, incluindo o Monte Olimpo, o maior vulcão do Sistema Solar com 21 km de altura, e o Vale Marineris, um sistema de cânions que se estende por 4.000 km. Evidências sugerem que Marte teve água líquida em sua superfície no passado, e água congelada ainda existe em suas calotas polares. O planeta tem dois pequenos satélites naturais, Fobos e Deimos.

CINTURÃO DE ASTEROIDES
Entre Marte e Júpiter encontra-se o Cinturão de Asteroides, uma região contendo milhões de objetos rochosos. O maior destes é Ceres, agora classificado como planeta anão com diâmetro de cerca de 940 km. O cinturão principal contém cerca de 1-2 milhões de asteroides com mais de 1 km de diâmetro.

PLANETAS GIGANTES GASOSOS

Júpiter
Júpiter é o quinto planeta a partir do Sol e o maior do Sistema Solar. É um gigante gasoso com uma massa mais de duas vezes e meia a de todos os outros planetas do Sistema Solar combinados, mas apenas um milésimo da massa do Sol. Com um diâmetro de 139.820 km, Júpiter poderia conter mais de 1.300 Terras em seu volume.

A atmosfera de Júpiter é composta principalmente de hidrogênio (90%) e hélio (10%), com traços de metano, vapor d'água, amônia e outros compostos. A característica mais proeminente de Júpiter é a Grande Mancha Vermelha, uma tempestade anticiclônica que persiste há pelo menos 350 anos e é grande o suficiente para engolir três Terras.

Júpiter possui um poderoso campo magnético, cerca de 14 vezes mais forte que o da Terra. O planeta tem pelo menos 95 luas conhecidas, incluindo as quatro grandes luas galileanas: Io, Europa, Ganimedes e Calisto. Europa é particularmente interessante para astrobiólogos devido a evidências de um oceano subsuperficial que pode abrigar vida.

Saturno
Saturno é o sexto planeta a partir do Sol e o segundo maior do Sistema Solar. É famoso por seu impressionante sistema de anéis, composto principalmente de partículas de gelo e rocha que variam em tamanho desde grãos minúsculos até blocos do tamanho de montanhas.

Com uma densidade média inferior à da água, Saturno flutuaria se houvesse um oceano grande o suficiente para contê-lo. O planeta tem um diâmetro de 116.460 km e leva 29,5 anos terrestres para completar uma órbita ao redor do Sol. Saturno possui pelo menos 146 luas confirmadas, sendo Titã a maior delas e a única lua do Sistema Solar com uma atmosfera densa.

CONCLUSÃO
O Sistema Solar é um laboratório natural para compreender a formação e evolução planetária. Desde mundos rochosos escaldantes próximos ao Sol até os reinos gelados das regiões externas, cada corpo celeste oferece insights únicos sobre processos físicos, químicos e potencialmente biológicos. Missões espaciais continuam revelando novas maravilhas, transformando nossa compreensão deste sistema que chamamos de lar.
"""

INSTRUCTIONS = """Você é um assistente especializado em análise de documentos científicos e técnicos. Seu papel é fornecer análises detalhadas, precisas e abrangentes dos documentos que lhe são apresentados.

DIRETRIZES DE ANÁLISE:

1. COMPREENSÃO DO CONTEÚDO
   - Leia cuidadosamente todo o documento antes de responder
   - Identifique os principais temas e conceitos apresentados
   - Reconheça a estrutura organizacional do documento
   - Compreenda o contexto e propósito do material

2. PRECISÃO E EXATIDÃO
   - Base suas respostas exclusivamente no conteúdo fornecido
   - Cite informações específicas do documento quando relevante
   - Não adicione informações externas ao documento
   - Se uma informação não estiver no documento, indique claramente

3. FORMATO DE RESPOSTA
   - Forneça respostas claras e bem estruturadas
   - Use parágrafos organizados para respostas longas
   - Utilize listas quando apropriado para maior clareza
   - Mantenha um tom profissional e objetivo

4. PROFUNDIDADE DE ANÁLISE
   - Forneça detalhes suficientes para responder completamente à pergunta
   - Contextualize as informações quando necessário
   - Explique termos técnicos se relevante para a compreensão
   - Conecte conceitos relacionados quando apropriado

5. OBJETIVIDADE
   - Mantenha neutralidade na apresentação das informações
   - Evite opiniões pessoais ou interpretações especulativas
   - Apresente os fatos conforme descritos no documento
   - Distinga claramente entre informações explícitas e implícitas

6. TRATAMENTO DE PERGUNTAS
   - Responda diretamente ao que foi perguntado
   - Se a pergunta tiver múltiplas partes, aborde cada uma
   - Peça esclarecimentos se a pergunta for ambígua
   - Indique se o documento não contém informações suficientes para responder

Analise o documento fornecido e responda às perguntas do usuário seguindo estas diretrizes de forma precisa e detalhada."""

def chat_with_document(document, user_query, tenant_id):
    """Conversa com um documento usando Prompt Caching com isolamento de tenant."""
    instructions = INSTRUCTIONS

    if tenant_id:
        sha256_hash = hashlib.sha256(tenant_id.encode()).hexdigest()
        instructions = f"{sha256_hash}:{instructions}"

    document_content = f"Aqui está o documento: {document}"

    response = bedrock.converse(
        modelId=MODEL_ID,
        messages=[{
            "role": "user",
            "content": [
                {"text": instructions},
                {"text": document_content},
                {"cachePoint": {"type": "default"}},
                {"text": user_query}
            ]
        }],
        inferenceConfig={"maxTokens": 500, "temperature": 0}
    )

    usage = response["usage"]
    text = response["output"]["message"]["content"][0]["text"]
    return usage, text

# Podemos verificar o comportamento de isolamento entre tenants:
# Tenant 1 — primeira requisição (escrita no Cache)
usage, _ = chat_with_document(DOCUMENT, "O que é Prompt Caching?", tenant_id="tenant1")
print("Tenant 1, Requisição 1 (escrita no Cache esperada):")
print(json.dumps(usage, indent=2))

# Tenant 1 — segunda requisição (leitura do Cache)
usage, _ = chat_with_document(DOCUMENT, "Quais são os casos de uso?", tenant_id="tenant1")
print("Tenant 1, Requisição 2 (leitura do Cache esperada):")
print(json.dumps(usage, indent=2))

# Tenant 2 — primeira requisição (escrita no Cache separada)
usage, _ = chat_with_document(DOCUMENT, "O que é Prompt Caching?", tenant_id="tenant2")
print("Tenant 2, Requisição 1 (escrita no Cache esperada — separada do tenant1):")
print(json.dumps(usage, indent=2))

# Tenant 2 — segunda requisição (lê do Cache do tenant2)
usage, _ = chat_with_document(DOCUMENT, "Quais são os casos de uso?", tenant_id="tenant2")
print("Tenant 2, Requisição 2 (leitura do Cache esperada):")
print(json.dumps(usage, indent=2))

O comportamento esperado nas quatro requisições:

Requisição Tenant Comportamento de cache esperado
1 tenant1 CacheWriteInputTokens > 0 (nova entrada de Cache)
2 tenant1 CacheReadInputTokens > 0 (reutiliza Cache do tenant1)
3 tenant2 CacheWriteInputTokens > 0 (nova entrada — prefixo de hash diferente)
4 tenant2 CacheReadInputTokens > 0 (reutiliza Cache do tenant2)

Esse padrão oferece as seguintes vantagens:

  • Sem configuração do lado do servidor: O isolamento é alcançado puramente através de prefixação de conteúdo.
  • Entradas de Cache independentes por tenant: Sem risco de vazamento de dados entre
  • Overhead mínimo — O hash SHA-256 adiciona apenas 64 caracteres (aproximadamente 16 tokens) ao

Cenário 6: Integração com LangChain

Para equipes que usam o framework LangChain, o Prompt Caching se integra diretamente através da classe ChatBedrockConverse. O LangChain fornece um método create_cache_point() que gera o bloco de conteúdo CachePoint correto sem exigir que você gerencie o formato bruto da API.

Como funciona

Use ChatBedrockConverse.create_cache_point() dentro de arrays de conteúdo de mensagens ou definições de ChatPromptTemplate:

import boto3
import json
import time
from langchain_aws import ChatBedrockConverse
from langchain_core.messages import HumanMessage, SystemMessage

MODEL_ID = "global.anthropic.claude-sonnet-4-5-20250929-v1:0"
AWS_REGION = "us-west-2"

DOCUMENT = """
O Sistema Solar: Uma Visão Completa

INTRODUÇÃO
O Sistema Solar é um sistema planetário localizado na Via Láctea, composto pelo Sol e todos os objetos celestes que orbitam ao seu redor devido à sua força gravitacional. Este sistema inclui oito planetas principais, suas luas, planetas anões, asteroides, cometas e incontáveis partículas de poeira e gás interplanetário.

O SOL
O Sol é uma estrela de tipo espectral G2V, frequentemente chamada de "anã amarela". Contém aproximadamente 99,86% da massa total do Sistema Solar. Com um diâmetro de cerca de 1,4 milhão de quilômetros, o Sol é composto principalmente de hidrogênio (74%) e hélio (24%), com traços de elementos mais pesados. Sua energia é gerada através de reações de fusão nuclear em seu núcleo, onde temperaturas atingem 15 milhões de graus Celsius.

A estrutura solar consiste em várias camadas: o núcleo, a zona radiativa, a zona convectiva, a fotosfera, a cromosfera e a coroa. A fotosfera é a camada visível do Sol, com temperatura de cerca de 5.500°C. A coroa, a camada mais externa da atmosfera solar, é paradoxalmente muito mais quente que a fotosfera, atingindo milhões de graus.

PLANETAS ROCHOSOS

Mercúrio
Mercúrio é o planeta mais próximo do Sol, orbitando a uma distância média de 58 milhões de quilômetros. É também o menor dos oito planetas, com um diâmetro de apenas 4.879 km. Sua superfície é fortemente cratada, semelhante à Lua, devido à ausência de atmosfera significativa que pudesse protegê-lo de impactos de meteoritos.

A temperatura em Mercúrio varia drasticamente, de -180°C durante a noite a 430°C durante o dia, a maior variação de temperatura de qualquer planeta do Sistema Solar. Um dia em Mercúrio (de nascer do sol a nascer do sol) dura 176 dias terrestres, enquanto seu ano dura apenas 88 dias terrestres.

Vênus
Vênus, o segundo planeta a partir do Sol, é frequentemente chamado de "planeta irmão" da Terra devido ao seu tamanho similar (diâmetro de 12.104 km vs. 12.742 km da Terra). No entanto, as semelhanças terminam aí. Vênus possui a atmosfera mais densa de todos os planetas rochosos, composta principalmente de dióxido de carbono (96%) com nuvens de ácido sulfúrico.

O efeito estufa descontrolado em Vênus resulta em temperaturas superficiais de cerca de 465°C, tornando-o o planeta mais quente do Sistema Solar, ainda mais quente que Mercúrio. A pressão atmosférica na superfície é 92 vezes maior que a da Terra. Vênus também é único por sua rotação retrógrada, girando no sentido oposto ao da maioria dos outros planetas.

Terra
A Terra, nosso planeta natal, é o terceiro a partir do Sol e o quinto maior do Sistema Solar. É o único corpo celeste conhecido por abrigar vida. A Terra possui uma atmosfera rica em nitrogênio (78%) e oxigênio (21%), essencial para a maioria das formas de vida conhecidas.

A presença de água líquida na superfície, um campo magnético protetor, e a distância ideal do Sol (cerca de 150 milhões de km, conhecida como 1 Unidade Astronômica) criaram condições perfeitas para o desenvolvimento e manutenção da vida. A Terra tem uma lua natural, simplesmente chamada de "Lua", que estabiliza a inclinação axial do planeta e influencia as marés oceânicas.

Marte
Marte, o quarto planeta, é conhecido como o "Planeta Vermelho" devido ao óxido de ferro (ferrugem) em sua superfície. Com metade do diâmetro da Terra (6.779 km), Marte possui a atmosfera mais fina entre os planetas rochosos, composta principalmente de CO2 (95%). Marte exibe características geológicas fascinantes, incluindo o Monte Olimpo, o maior vulcão do Sistema Solar com 21 km de altura, e o Vale Marineris, um sistema de cânions que se estende por 4.000 km. Evidências sugerem que Marte teve água líquida em sua superfície no passado, e água congelada ainda existe em suas calotas polares. O planeta tem dois pequenos satélites naturais, Fobos e Deimos.

CINTURÃO DE ASTEROIDES
Entre Marte e Júpiter encontra-se o Cinturão de Asteroides, uma região contendo milhões de objetos rochosos. O maior destes é Ceres, agora classificado como planeta anão com diâmetro de cerca de 940 km. O cinturão principal contém cerca de 1-2 milhões de asteroides com mais de 1 km de diâmetro.

PLANETAS GIGANTES GASOSOS

Júpiter
Júpiter é o quinto planeta a partir do Sol e o maior do Sistema Solar. É um gigante gasoso com uma massa mais de duas vezes e meia a de todos os outros planetas do Sistema Solar combinados, mas apenas um milésimo da massa do Sol. Com um diâmetro de 139.820 km, Júpiter poderia conter mais de 1.300 Terras em seu volume.

A atmosfera de Júpiter é composta principalmente de hidrogênio (90%) e hélio (10%), com traços de metano, vapor d'água, amônia e outros compostos. A característica mais proeminente de Júpiter é a Grande Mancha Vermelha, uma tempestade anticiclônica que persiste há pelo menos 350 anos e é grande o suficiente para engolir três Terras.

Júpiter possui um poderoso campo magnético, cerca de 14 vezes mais forte que o da Terra. O planeta tem pelo menos 95 luas conhecidas, incluindo as quatro grandes luas galileanas: Io, Europa, Ganimedes e Calisto. Europa é particularmente interessante para astrobiólogos devido a evidências de um oceano subsuperficial que pode abrigar vida.

Saturno
Saturno é o sexto planeta a partir do Sol e o segundo maior do Sistema Solar. É famoso por seu impressionante sistema de anéis, composto principalmente de partículas de gelo e rocha que variam em tamanho desde grãos minúsculos até blocos do tamanho de montanhas.

Com uma densidade média inferior à da água, Saturno flutuaria se houvesse um oceano grande o suficiente para contê-lo. O planeta tem um diâmetro de 116.460 km e leva 29,5 anos terrestres para completar uma órbita ao redor do Sol. Saturno possui pelo menos 146 luas confirmadas, sendo Titã a maior delas e a única lua do Sistema Solar com uma atmosfera densa.

CONCLUSÃO
O Sistema Solar é um laboratório natural para compreender a formação e evolução planetária. Desde mundos rochosos escaldantes próximos ao Sol até os reinos gelados das regiões externas, cada corpo celeste oferece insights únicos sobre processos físicos, químicos e potencialmente biológicos. Missões espaciais continuam revelando novas maravilhas, transformando nossa compreensão deste sistema que chamamos de lar.
"""

llm = ChatBedrockConverse(
    model_id="global.anthropic.claude-sonnet-4-5-20250929-v1:0",
    region_name="us-west-2",
    temperature=0,
    max_tokens=1000
)

def chat_with_Cache(question):
    """Envia uma pergunta sobre um documento com Prompt Caching habilitado."""
    messages = [
        SystemMessage(content="Você é um assistente útil que responde perguntas sobre documentos."),
        HumanMessage(content=[
            {"type": "text", "text": f"Aqui está um documento: {DOCUMENT}"},
            ChatBedrockConverse.create_cache_point()
        ]),
        HumanMessage(content=question)
    ]

    response = llm.invoke(messages)
    return response

# Requisição 1 — escrita no Cache
r1 = chat_with_Cache("Quais são os planetas gigantes de gelo?")
print(f"Resposta: {r1.content[:200]}...")
print(f"Uso: {json.dumps(r1.usage_metadata, indent=2, default=str)}")

Implementação — Cadeia LCEL (LangChain Expression Language) com cache point

Para padrões de cadeia reutilizáveis, você pode integrar cache points diretamente em um ChatPromptTemplate:

import boto3
import json
import time
from langchain_aws import ChatBedrockConverse
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

MODEL_ID = "global.anthropic.claude-sonnet-4-5-20250929-v1:0"
AWS_REGION = "us-west-2"

DOCUMENT = """
O Sistema Solar: Uma Visão Completa

INTRODUÇÃO
O Sistema Solar é um sistema planetário localizado na Via Láctea, composto pelo Sol e todos os objetos celestes que orbitam ao seu redor devido à sua força gravitacional. Este sistema inclui oito planetas principais, suas luas, planetas anões, asteroides, cometas e incontáveis partículas de poeira e gás interplanetário.

O SOL
O Sol é uma estrela de tipo espectral G2V, frequentemente chamada de "anã amarela". Contém aproximadamente 99,86% da massa total do Sistema Solar. Com um diâmetro de cerca de 1,4 milhão de quilômetros, o Sol é composto principalmente de hidrogênio (74%) e hélio (24%), com traços de elementos mais pesados. Sua energia é gerada através de reações de fusão nuclear em seu núcleo, onde temperaturas atingem 15 milhões de graus Celsius.

A estrutura solar consiste em várias camadas: o núcleo, a zona radiativa, a zona convectiva, a fotosfera, a cromosfera e a coroa. A fotosfera é a camada visível do Sol, com temperatura de cerca de 5.500°C. A coroa, a camada mais externa da atmosfera solar, é paradoxalmente muito mais quente que a fotosfera, atingindo milhões de graus.

PLANETAS ROCHOSOS

Mercúrio
Mercúrio é o planeta mais próximo do Sol, orbitando a uma distância média de 58 milhões de quilômetros. É também o menor dos oito planetas, com um diâmetro de apenas 4.879 km. Sua superfície é fortemente cratada, semelhante à Lua, devido à ausência de atmosfera significativa que pudesse protegê-lo de impactos de meteoritos.

A temperatura em Mercúrio varia drasticamente, de -180°C durante a noite a 430°C durante o dia, a maior variação de temperatura de qualquer planeta do Sistema Solar. Um dia em Mercúrio (de nascer do sol a nascer do sol) dura 176 dias terrestres, enquanto seu ano dura apenas 88 dias terrestres.

Vênus
Vênus, o segundo planeta a partir do Sol, é frequentemente chamado de "planeta irmão" da Terra devido ao seu tamanho similar (diâmetro de 12.104 km vs. 12.742 km da Terra). No entanto, as semelhanças terminam aí. Vênus possui a atmosfera mais densa de todos os planetas rochosos, composta principalmente de dióxido de carbono (96%) com nuvens de ácido sulfúrico.

O efeito estufa descontrolado em Vênus resulta em temperaturas superficiais de cerca de 465°C, tornando-o o planeta mais quente do Sistema Solar, ainda mais quente que Mercúrio. A pressão atmosférica na superfície é 92 vezes maior que a da Terra. Vênus também é único por sua rotação retrógrada, girando no sentido oposto ao da maioria dos outros planetas.

Terra
A Terra, nosso planeta natal, é o terceiro a partir do Sol e o quinto maior do Sistema Solar. É o único corpo celeste conhecido por abrigar vida. A Terra possui uma atmosfera rica em nitrogênio (78%) e oxigênio (21%), essencial para a maioria das formas de vida conhecidas.

A presença de água líquida na superfície, um campo magnético protetor, e a distância ideal do Sol (cerca de 150 milhões de km, conhecida como 1 Unidade Astronômica) criaram condições perfeitas para o desenvolvimento e manutenção da vida. A Terra tem uma lua natural, simplesmente chamada de "Lua", que estabiliza a inclinação axial do planeta e influencia as marés oceânicas.

Marte
Marte, o quarto planeta, é conhecido como o "Planeta Vermelho" devido ao óxido de ferro (ferrugem) em sua superfície. Com metade do diâmetro da Terra (6.779 km), Marte possui a atmosfera mais fina entre os planetas rochosos, composta principalmente de CO2 (95%). Marte exibe características geológicas fascinantes, incluindo o Monte Olimpo, o maior vulcão do Sistema Solar com 21 km de altura, e o Vale Marineris, um sistema de cânions que se estende por 4.000 km. Evidências sugerem que Marte teve água líquida em sua superfície no passado, e água congelada ainda existe em suas calotas polares. O planeta tem dois pequenos satélites naturais, Fobos e Deimos.

CINTURÃO DE ASTEROIDES
Entre Marte e Júpiter encontra-se o Cinturão de Asteroides, uma região contendo milhões de objetos rochosos. O maior destes é Ceres, agora classificado como planeta anão com diâmetro de cerca de 940 km. O cinturão principal contém cerca de 1-2 milhões de asteroides com mais de 1 km de diâmetro.

PLANETAS GIGANTES GASOSOS

Júpiter
Júpiter é o quinto planeta a partir do Sol e o maior do Sistema Solar. É um gigante gasoso com uma massa mais de duas vezes e meia a de todos os outros planetas do Sistema Solar combinados, mas apenas um milésimo da massa do Sol. Com um diâmetro de 139.820 km, Júpiter poderia conter mais de 1.300 Terras em seu volume.

A atmosfera de Júpiter é composta principalmente de hidrogênio (90%) e hélio (10%), com traços de metano, vapor d'água, amônia e outros compostos. A característica mais proeminente de Júpiter é a Grande Mancha Vermelha, uma tempestade anticiclônica que persiste há pelo menos 350 anos e é grande o suficiente para engolir três Terras.

Júpiter possui um poderoso campo magnético, cerca de 14 vezes mais forte que o da Terra. O planeta tem pelo menos 95 luas conhecidas, incluindo as quatro grandes luas galileanas: Io, Europa, Ganimedes e Calisto. Europa é particularmente interessante para astrobiólogos devido a evidências de um oceano subsuperficial que pode abrigar vida.

Saturno
Saturno é o sexto planeta a partir do Sol e o segundo maior do Sistema Solar. É famoso por seu impressionante sistema de anéis, composto principalmente de partículas de gelo e rocha que variam em tamanho desde grãos minúsculos até blocos do tamanho de montanhas.

Com uma densidade média inferior à da água, Saturno flutuaria se houvesse um oceano grande o suficiente para contê-lo. O planeta tem um diâmetro de 116.460 km e leva 29,5 anos terrestres para completar uma órbita ao redor do Sol. Saturno possui pelo menos 146 luas confirmadas, sendo Titã a maior delas e a única lua do Sistema Solar com uma atmosfera densa.

CONCLUSÃO
O Sistema Solar é um laboratório natural para compreender a formação e evolução planetária. Desde mundos rochosos escaldantes próximos ao Sol até os reinos gelados das regiões externas, cada corpo celeste oferece insights únicos sobre processos físicos, químicos e potencialmente biológicos. Missões espaciais continuam revelando novas maravilhas, transformando nossa compreensão deste sistema que chamamos de lar.
"""

llm = ChatBedrockConverse(
    model_id="global.anthropic.claude-sonnet-4-5-20250929-v1:0",
    region_name="us-west-2",
    temperature=0,
    max_tokens=1000
)

template = ChatPromptTemplate.from_messages([
    ("system", "Você é um assistente útil que responde perguntas sobre documentos."),
    ("human", [
        {"type": "text", "text": f"Aqui está um documento: {DOCUMENT}"},
        ChatBedrockConverse.create_cache_point()
    ]),
    ("human", "{question}")
])

chain = template | llm | StrOutputParser()

# Execute múltiplas perguntas — a primeira grava no Cache, as subsequentes leem do Cache
questions = [
    "Quais são os planetas gigantes de gelo?",
    "Quais descobertas a New Horizons fez?",
    "Como a Grande Mancha Vermelha de Júpiter se compara às tempestades na Terra?",
]

for i, q in enumerate(questions):
    start = time.time()
    result = chain.invoke({"question": q})
    elapsed = time.time() - start
    print(f"\nP{i+1}: {q}")
    print(f"R: {result[:150]}...")
    print(f"Tempo: {elapsed:.2f}s")
    time.sleep(0.5)

Inspecionando métricas de cache no LangChain

O usage_metadata no objeto de resposta inclui input_token_details com campos específicos de Cache:

  • Cache_creation — Tokens gravados no cache (primeira requisição)
  • Cache_read — Tokens lidos do cache (requisições subsequentes)
r = llm.invoke(messages)
print(json.dumps(r.usage_metadata, indent=2, default=str))

API Converse vs API InvokeModel

Todos os cenários neste post usam a API Converse, que fornece uma sintaxe CachePoint agnóstica de modelo. Se sua aplicação usa a API InvokeModel, esteja ciente de que a sintaxe de cache difere por família de modelos:

Recurso API Converse (todos os modelos) API InvokeModel (Anthropic)
Marcador de cache {“cachePoint”: {“type”: “default”}} “Cache_control”: {“type”: “ephemeral”, “ttl”: “5m”}
Posicionamento Bloco de conteúdo independente após o conteúdo em Cache Dentro do bloco de conteúdo sendo armazenado em Cache
Suporte a TTL {“CachePoint”: {“type”: “default”, “ttl”: “1h”}} Campo “ttl” dentro de Cache_control
Resposta CacheDetails Sim Não
Formato da chave de uso CacheWriteInputTokens Cache_creation_input_tokens

Recomendamos usar a API Converse para novas aplicações porque a sintaxe CachePoint funciona de forma idêntica em todas as famílias de modelos suportadas. Isso facilita a troca entre Anthropic Claude e Amazon Nova sem alterar o código de cache.

Melhores práticas

Com base nos padrões demonstrados neste post, recomendamos as seguintes melhores práticas para implantações em produção:

  1. Analise seus prompts: Identifique quais componentes são estáticos (prompts de sistema, schemas de ferramentas, documentos de referência) e quais são dinâmicos (perguntas de usuários, contexto de sessão). Armazene em cache os componentes estáticos.
  2. Atenda ao limite de tokens: Verifique se cada checkpoint de cache excede o requisito mínimo de tokens do modelo. Conteúdo abaixo do limite é processado normalmente sem cache.
  3. Escolha TTLs apropriados: Use TTLs de 1 hora para conteúdo que raramente muda (conhecimento de domínio, definições de ferramentas) e TTLs de 5 minutos para contexto específico de sessão. Lembre-se de que TTLs mais longos devem aparecer antes dos mais curtos.
  4. Monitore métricas de cache: Rastreie CacheWriteInputTokens e CacheReadInputTokens nos logs da sua aplicação. Uma baixa taxa de acerto de cache pode indicar que seu conteúdo está mudando com muita frequência ou que seu TTL é muito curto.
  5. Implemente isolamento de tenant para sistemas multi-tenant : Use o padrão de prefixo com hash SHA-256 para impedir o compartilhamento de cache entre tenants ao atender múltiplos clientes a partir da mesma conta AWS.
  6. Utilize o gerenciamento simplificado de cache: Para modelos Claude, um único CachePoint pode cobrir múltiplos blocos de conteúdo anteriores. Você nem sempre precisa colocar checkpoints após cada seção.
  7. Combine localizações de cache: Você pode armazenar em cache os prompts de sistema, conteúdo de mensagens e definições de ferramentas simultaneamente em uma única requisição. Isso acumula a economia nas três localizações.

Limpeza

Os exemplos neste post usam inferência sob demanda do Amazon Bedrock e não criam recursos AWS persistentes..

Conclusão

Neste post, apresentamos seis cenários práticos de Prompt Caching usando a API Converse do Amazon Bedrock, progredindo do cache básico de documentos a padrões avançados como TTL misto e isolamento de tenant. Cada cenário aborda um desafio específico de produção:

  • Armazene para reduzir custos quando usuários fazem múltiplas perguntas sobre o mesmo documento.
  • Reutilize o prompt e evite o reprocessamento de definições detalhadas de persona a cada turno de conversa.
  • Otimize workflows agênticos mantendo esquemas de ferramentas de cache eficientes ao armazenar em Cache schemas de ferramentas uma vez.
  • Ajuste TTL mistos para controle granular sobre os tempos de vida do cache para conteúdo com diferentes frequências de atualização.
  • Isolamento de tenant permite implantações multi-tenant seguras com separação de cache por
  • Integração com LangChain traz o Prompt Caching para equipes que usam o framework LangChain com mudanças mínimas de código.

A sintaxe CachePoint é agnóstica de modelo em toda a API Conversem já que o mesmo código funciona com Anthropic Claude, Amazon Nova e qualquer modelo futuro que suporte Prompt Caching no Amazon Bedrock. Isso ajuda as organizações a adotar o Prompt Caching incrementalmente, começando com o cenário de maior impacto para sua carga de trabalho e expandindo para padrões adicionais conforme necessário.

Para próximos passos, considere fazer o perfil de suas aplicações Amazon Bedrock existentes para identificar oportunidades de Prompt Caching. Comece com o cenário que corresponde à sua carga de trabalho (análise de documentos, assistentes baseados em persona ou uso de ferramentas agênticas) e meça as melhorias de TTFT e custo.

Cada cenário inclui código funcional que você pode executar imediatamente contra o Amazon Bedrock. O conjunto completo de notebooks e scripts referenciados ao longo deste post está disponível no repositório GitHub amazon-bedrock-samples. Para mais detalhes sobre configuração de Prompt Caching e modelos suportados, consulte a documentação do Prompt Caching do Amazon Bedrock.

Sobre o autor

Daniel Abib é arquiteto especialista sênior de soluções na AWS, onde apoia clientes na adoção de arquiteturas de nuvem e soluções de AI Generativa. Com ampla experiência em arquitetura de soluções, Daniel trabalha com startups e empresas de diversos segmentos para acelerar a inovação com serviços AWS.