For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Diagnóstico do cache de prompts

Compare respostas para descobrir por que o cache de prompts não foi reutilizado.

O diagnóstico do cache de prompts ajuda a explicar por que uma solicitação reutilizou menos tokens do que o esperado. Compare a solicitação com uma resposta anterior para identificar alterações no modelo, nas ferramentas, nas configurações ou na entrada que impediram a reutilização.

O diagnóstico está disponível na API Responses para o GPT-5.6 e os modelos posteriores compatíveis. Use o diagnóstico para investigar solicitações individuais e o painel de cache de prompts para monitorar o desempenho do cache em todo o aplicativo.

Como funciona

O diagnóstico do cache de prompts compara a solicitação atual com uma resposta anterior para ajudar a explicar por que um prefixo do prompt não foi reutilizado como esperado. O prefixo é o conteúdo no início do prompt. Para que haja reutilização, os prefixos precisam ser idênticos e as configurações das solicitações devem ser compatíveis, incluindo o modelo, o nível de serviço e as ferramentas.

  1. Escolha uma resposta de referência. Use uma resposta recente e concluída da mesma organização. Escolha uma cujo prefixo você espera reutilizar na solicitação atual, como a resposta do turno anterior da conversa.
  2. Solicite uma comparação. Defina prompt_cache_options.comparison_response_id como o id da resposta de referência.
  3. Confira o resultado. Consulte prompt_cache_diagnostics na resposta atual. Se o diagnóstico identificar uma falha de cache, o resultado incluirá o motivo para ajudar na investigação. Use usage.input_tokens_details.cached_tokens para medir a reutilização efetiva do cache.

Definir comparison_response_id apenas solicita o diagnóstico. Isso não carrega a conversa anterior nem altera o comportamento do cache. A solicitação atual ainda pode reutilizar entradas de cache correspondentes de outras solicitações.

Exemplo de uso

O exemplo a seguir envia duas solicitações com o mesmo modelo, as mesmas instruções e a mesma entrada, mas muda o nome de uma ferramenta do tipo função de get_time para get_date. A segunda solicitação usa a primeira como referência para comparar a reutilização do cache.

Use seu próprio documento de políticas em support-policy.txt. O prefixo reutilizável deve atingir o comprimento mínimo que o modelo exige para uso do cache. Para o GPT-5.6 e os modelos posteriores, o mínimo é de 1.024 tokens.

Compare a reutilização do cache de prompts entre respostas
from pathlib import Path

from openai import OpenAI

client = OpenAI()
policy = Path("support-policy.txt").read_text()  # At least 1,024 tokens.

first = client.responses.create(
    model="gpt-6-astra",
    instructions=policy,
    input="Reply with exactly OK.",
    tools=[{"type": "function", "name": "get_time"}],
)

second = client.responses.create(
    model="gpt-6-astra",
    instructions=policy,
    input="Reply with exactly OK.",
    tools=[{"type": "function", "name": "get_date"}],
    prompt_cache_options={"comparison_response_id": first.id},
)

diagnostics = second.prompt_cache_diagnostics
if diagnostics is not None and diagnostics.type == "cache_miss":
    print(diagnostics.reason)
    print(diagnostics.comparison_reusable_tokens)
    print(diagnostics.cache_missed_tokens)

Se a alteração na ferramenta causar uma falha de cache, o resultado poderá ser semelhante ao exemplo abaixo. As contagens de tokens variam conforme a entrada.

{
  "prompt_cache_diagnostics": {
    "type": "cache_miss",
    "reason": "tools_changed",
    "comparison_reusable_tokens": 5629,
    "cache_missed_tokens": 5629
  }
}

Para preservar a reutilização, mantenha as definições e a ordem das ferramentas entre as solicitações. Consulte Gerencie ferramentas adicionando novas entradas apenas ao final da lista.

Conversas com vários turnos

Para comparar turnos consecutivos, salve o id de cada resposta concluída e passe esse valor como comparison_response_id em prompt_cache_options na solicitação seguinte. Omita o ID de comparação no primeiro turno.

Ao testar uma correção, mantenha o ID da resposta de referência como ID de comparação.

Streaming

Ao usar stream=True, consulte prompt_cache_diagnostics em event.response no evento response.completed.

Entenda a resposta

Consulte prompt_cache_diagnostics.type para saber o resultado da comparação.

Tipo Significado O que fazer
cache_hit A comparação não detectou nenhuma falha de cache. Consulte usage.input_tokens_details.cached_tokens para medir a reutilização efetiva.
cache_miss Uma diferença impediu a reutilização do prefixo esperado. O resultado inclui reason e cache_missed_tokens. Também pode incluir comparison_reusable_tokens. Consulte o motivo e a correção sugerida em Corrija uma falha de cache.
comparison_response_not_found Não há um registro de diagnóstico utilizável para a resposta de referência. O registro pode estar ausente ou ter expirado. Selecione outra resposta recente e concluída da mesma organização.
unavailable A comparação não chegou a um resultado conclusivo ou o modelo não oferece suporte ao diagnóstico. Confirme se o modelo oferece suporte ao diagnóstico e tente comparar com outra resposta recente. Você ainda pode usar a resposta normalmente.

Interprete as contagens de tokens

O resultado cache_hit indica que a comparação não detectou nenhuma falha de cache. Ainda pode ser necessário processar conteúdo novo. Por exemplo, uma solicitação com 2.500 tokens de entrada pode retornar cache_hit ao reutilizar o prefixo de 2.000 tokens da resposta de referência e processar 500 tokens novos.

Para um resultado cache_miss, interprete os campos da seguinte forma:

  • comparison_reusable_tokens, quando presente, indica a contagem bruta de tokens do prefixo reutilizável da resposta de referência.
  • cache_missed_tokens estima quantos desses tokens não foram reutilizados.

As contagens de diagnóstico podem diferir das contagens de uso. Use os campos de uso da resposta atual para medir a reutilização do cache registrada e verificar a cobrança.

Corrija uma falha de cache

Use prompt_cache_diagnostics.reason para localizar na tabela a seguir a causa da falha de cache e a correção sugerida.

Algumas alterações, como trocar de modelo ou compactar uma conversa, são intencionais. Você pode optar por mantê-las mesmo que reduzam a reutilização do cache.

Motivo O que mudou Como melhorar a reutilização
model_changed Outro modelo processou a solicitação. Isso pode ocorrer, por exemplo, quando o roteamento, um teste A/B ou um mecanismo de contingência seleciona outro modelo. Verifique se houve alguma troca involuntária na seleção do modelo. Use o mesmo modelo nas solicitações que devem compartilhar um prefixo em cache. Consulte as configurações que afetam o cache.
prompt_cache_key_changed A chave fornecida mudou de uma solicitação para outra. O campo usage da resposta pode registrar essa mudança como uma falha de cache mesmo sem uma falha no cache físico. Omita prompt_cache_key, a menos que o aplicativo precise contabilizar o uso do cache separadamente por cliente ou usuário. Se usar chaves, mantenha a mesma chave dentro de cada grupo. Consulte Separe a contabilização do uso do cache por chave.
service_tier_changed O nível de serviço usado para processar a solicitação mudou. Mantenha o mesmo nível de serviço nas solicitações que devem compartilhar um prefixo. Confira o valor de service_tier retornado, que pode ser diferente do solicitado. Consulte service_tier para saber quais valores são aceitos e como funcionam.
tools_changed Houve adição, remoção ou reordenação de ferramentas, ou alguma alteração nas descrições, nos schemas ou nas configurações das ferramentas. Mantenha as definições e a ordem das ferramentas. Use tool_choice: "none" para desativar as ferramentas ou allowed_tools para restringir quais podem ser executadas sem alterar a lista fornecida. Consulte Gerencie ferramentas adicionando novas entradas apenas ao final da lista.
text_format_changed O formato de saída ou seu schema mudou. No GPT-6 e nos modelos posteriores compatíveis, mantenha o mesmo valor de text.format no nível superior da solicitação e acrescente uma atualização de formato ao final quando precisar de um schema diferente.
reasoning_effort_changed O esforço de raciocínio mudou. No GPT-6 e nos modelos posteriores compatíveis, acrescente um item de entrada configuration_update ao final para alterar o esforço de raciocínio durante a conversa e preservar o prefixo já armazenado em cache.
Em modelos anteriores, mantenha o mesmo valor de reasoning.effort nas solicitações que devem compartilhar um prefixo.
verbosity_changed O nível de detalhamento da resposta mudou. Mantenha o mesmo valor de text.verbosity nas solicitações que devem compartilhar um prefixo. Consulte as configurações que afetam o cache.
context_compacted A compactação substituiu conteúdo anterior da conversa. Preserve as instruções que permanecem válidas e use o contexto compactado como base para os turnos seguintes. Compare o custo total da entrada. Reduzir o número de tokens de entrada ainda pode gerar economia, mesmo com menor reutilização do cache. Consulte Compactação.
input_changed A entrada anterior mudou. Isso pode ocorrer, por exemplo, quando as instruções contêm uma marca de data e hora ou um ID de solicitação, ou quando mensagens anteriores são editadas, reordenadas ou removidas. Mova o conteúdo que varia para depois do prefixo reutilizável e do ponto de corte do cache. Preserve as mensagens anteriores e os resultados das ferramentas e acrescente os novos turnos ao final. Consulte Preserve o histórico da conversa.

Confirme a melhoria

Depois de fazer uma alteração:

  1. Envie outra solicitação representativa e compare-a com a resposta de referência escolhida.
  2. Confira o resultado do diagnóstico para ver se ainda há alguma diferença.
  3. Compare cached_tokens, cache_write_tokens e o custo total em várias solicitações.

Consulte Monitore o desempenho do cache para saber mais sobre as métricas de uso e os cálculos de custo.

Preços e limites de taxa

O diagnóstico do cache de prompts não tem custo adicional nem é contabilizado separadamente para fins de limites de taxa. Solicitações adicionais à API Responses para obter uma resposta de referência ou fazer uma nova tentativa são cobradas normalmente e contam para os limites de taxa.

Zero retenção de dados

O diagnóstico do cache de prompts é compatível com a configuração de zero retenção de dados. A OpenAI não armazena prompts brutos nem saídas do modelo para esse recurso. Os registros de diagnóstico contêm metadados de configuração, estimativas de contagem de tokens e hashes usados para comparar conteúdos cujas alterações podem afetar o cache. Esses registros se restringem à organização, expiram após um curto período e servem apenas para explicar por que houve um acerto ou uma falha no cache de prompts.

Definir comparison_response_id não recupera nem armazena de forma persistente o conteúdo da resposta anterior. Consulte Seus dados para conhecer os controles de dados da OpenAI.

Limitações

  • O diagnóstico está disponível na API Responses para o GPT-5.6 e os modelos posteriores compatíveis.
  • Os registros de diagnóstico expiram após um curto período. Se o registro tiver expirado, a comparação retornará comparison_response_not_found, mesmo que a resposta ainda esteja disponível pela API.
  • O diagnóstico informa o primeiro motivo que consegue classificar. Corrija a causa indicada e repita a comparação para verificar se há outras causas.
  • O diagnóstico tenta classificar cada falha de cache, mas nem sempre consegue. O resultado unavailable não indica acerto nem falha de cache. A API retorna esse valor se a comparação ainda não estiver pronta.
  • O diagnóstico nunca bloqueia a solicitação, nunca faz com que ela falhe e nunca altera a maneira como o modelo gera a saída.