O coracao do CAG e o prompt cache: o provedor processa o bloco grande da base de conhecimento uma vez e guarda o estado, de forma que as proximas requisicoes que comecam com o mesmo prefixo reaproveitam esse trabalho. No exemplo abaixo, usando a Anthropic Messages API, a base de conhecimento vai como um bloco de sistema marcado com cache_control. A primeira pergunta paga o processamento da base; as seguintes leem do cache e custam uma fracao.
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
// A base de conhecimento inteira: FAQ + politicas + manual.
// Carregada uma vez e marcada como cacheada.
const KNOWLEDGE_BASE = loadKnowledgeBase(); // string grande, cabe no contexto
async function ask(question) {
return client.messages.create({
model: 'claude-sonnet-4-5',
max_tokens: 512,
system: [
{
type: 'text',
text: 'Voce responde EXCLUSIVAMENTE com base na BASE DE CONHECIMENTO abaixo. Se nao houver resposta nela, diga que nao sabe.',
},
{
type: 'text',
text: KNOWLEDGE_BASE,
// Marca este bloco como cacheado: processado uma vez,
// reaproveitado nas proximas requisicoes com o mesmo prefixo.
cache_control: { type: 'ephemeral' },
},
],
messages: [{ role: 'user', content: question }],
});
}
// 1a pergunta: cache_creation_input_tokens (paga o processamento da base).
await ask('Qual o prazo de troca de um produto com defeito?');
// 2a pergunta em diante: cache_read_input_tokens (le do cache, custa fracao).
await ask('Voces entregam no interior?');
await ask('Como funciona a garantia estendida?');
O ganho fica explicito nos contadores de uso: a primeira chamada registra cache_creation_input_tokens (a base foi processada e cacheada) e as seguintes registram cache_read_input_tokens, cobrados por uma fracao do preco normal de entrada. Ou seja, a base e processada uma vez e o mesmo cache serve todas as perguntas seguintes, enquanto o cache estiver quente. Sem retrieval, sem vector store: o conhecimento ja esta no contexto.