Cache de prompt
O Prompt Caching permite armazenar em cache prefixos de prompt reutilizados, reduzindo o consumo de tokens e a latência das respostas.
Como funciona
Quando sua requisição contém um system prompt longo e repetidamente utilizado ou informações de contexto:
- Primeira requisição — Todos os tokens são processados integralmente e o prefixo do prompt é armazenado em cache
- Requisições seguintes — Ao acertar o cache, os tokens em cache não são cobrados novamente
- Expiração do cache — O cache tem um TTL limitado (geralmente 5 a 10 minutos); após a expiração, é necessário recriá-lo
Suporte a cache
Os recursos de modelo do OfoxAI são fornecidos por provedores de nuvem como AWS Bedrock, Azure OpenAI, Google Cloud, Alibaba Cloud e Volcengine. Modelos que suportam Prompt Caching no provedor de nuvem correspondente também são suportados pelo OfoxAI.
| Provedor de nuvem | Modelos representativos | Mecanismo de cache |
|---|---|---|
| AWS Bedrock | Série Claude | Prompt Caching nativo |
| Azure OpenAI | Série GPT-4o | Cache automático |
| Google Cloud | Série Gemini | Context Caching |
| Alibaba Cloud | Série Qwen | Cache na plataforma |
| Volcengine | Série Doubao | Cache na plataforma |
O suporte específico de cache de cada modelo depende da documentação oficial do provedor de nuvem. O OfoxAI encaminha os parâmetros de cache de forma transparente — nenhuma configuração adicional é necessária.
Como usar
Protocolo OpenAI
O Prompt Caching para modelos OpenAI é automático — é ativado quando prefixos de prompt repetidos são detectados:
# System prompt longo será automaticamente armazenado em cache
SYSTEM_PROMPT = """Você é o assistente de suporte técnico da OfoxAI.
Aqui estão as informações do produto que você precisa conhecer:
- OfoxAI é um LLM Gateway que suporta mais de 100 modelos de linguagem
- Suporta os três principais protocolos: OpenAI / Anthropic / Gemini
- ...
(mais informações do produto omitidas)
"""
# Primeira requisição: system prompt é armazenado em cache
response1 = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": "Quais modelos o OfoxAI suporta?"}
]
)
# Segunda requisição: cache acertado, mais rápido e mais barato
response2 = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT}, # Cache hit
{"role": "user", "content": "Como configurar o Claude Code?"}
]
)Protocolo Anthropic
Modelos Anthropic suportam controle explícito de cache:
import anthropic
client = anthropic.Anthropic(
base_url="https://api.ofox.ai/anthropic",
api_key="<Sua OFOXAI_API_KEY>"
)
response = client.messages.create(
model="anthropic/claude-sonnet-4.5",
max_tokens=1024,
system=[{
"type": "text",
"text": "Você é um assistente profissional. Aqui está a documentação do produto...",
"cache_control": {"type": "ephemeral"} # Habilitar cache explicitamente
}],
messages=[{"role": "user", "content": "Resuma as características do produto"}]
)
# Verificar status do cache
print(f"Tokens escritos no cache: {response.usage.cache_creation_input_tokens}")
print(f"Tokens lidos do cache: {response.usage.cache_read_input_tokens}")Economia de custos
Ao acertar o cache, os tokens armazenados são cobrados a um preço menor. A proporção de economia varia conforme o modelo:
- Série Anthropic Claude — Cache hit economiza aprox. 90% dos custos de entrada
- Série OpenAI GPT — Cache hit economiza aprox. 50% dos custos de entrada
- Série Google Gemini — Cache hit economiza aprox. 50 a 75% dos custos de entrada
A economia real depende da taxa de acerto do cache e da política de preços de cada provedor de nuvem. Consulte as estatísticas de uso no painel do OfoxAI para mais detalhes.
Boas práticas
- Coloque textos longos no início — System prompt e conteúdo de base de conhecimento que não mudam devem ficar no começo das messages
- Mantenha o prefixo consistente — Apenas prefixos exatamente idênticos resultam em cache hit
- Projete a estrutura do prompt com cuidado — Separe as partes fixas das partes variáveis
# ✅ Bom design: conteúdo fixo primeiro, conteúdo variável depois
messages = [
{"role": "system", "content": LONG_STATIC_PROMPT}, # Pode ser cacheado
{"role": "user", "content": dynamic_question} # Parte variável
]
# ❌ Design ruim: conteúdo variável misturado com conteúdo fixo
messages = [
{"role": "system", "content": f"Today is {date}. {LONG_PROMPT}"} # Muda todo dia, não pode ser cacheado
]Os acertos de cache podem ser verificados no campo usage da resposta da API. Você também pode acompanhar a taxa de cache hit nas estatísticas de uso do painel do OfoxAI.