O n8n oferece suporte a Anthropic Prompt Caching no nó AI Agent?

Olá comunidade n8n!

Estou usando o n8n Cloud (Plano Starter) com o Nó AI Agent do Anthropic Claude para executar agentes de IA de reserva para pequenos negócios alemães (restaurantes e estúdios de beleza).

O Anthropic recomendou recentemente habilitar o Prompt Caching para reduzir significativamente os custos da API — até 90% de economia em prompts do sistema que se repetem a cada mensagem.

Meu caso de uso:
• Prompt do sistema: ~1.500 tokens (repete a cada mensagem)
• Conversa média: 10–20 mensagens
• Múltiplos clientes sendo executados simultaneamente

Abordagem recomendada pelo Anthropic (cache automático):

Exemplo em Python:
response = client.messages.create(
model=“claude-sonnet-4-6”,
max_tokens=1024,
cache_control={“type”: “ephemeral”},
system=“Your system prompt here…”,
messages=[…]
)

Minhas perguntas:

  1. O n8n atualmente suporta Anthropic Prompt Caching no Nó AI Agent?
  2. Se sim — onde posso encontrar a opção cache_control? Verifiquei:
    • Nó AI Agent → Adicionar Opção (não está lá)
    • Nó Modelo Anthropic → Adicionar Opção (não está lá)
  3. Se ainda não suportado — está no roadmap?

Isso seria muito valioso para qualquer pessoa usando prompts de sistema longos com o Nó AI Agent do Anthropic. A economia de custos poderia ser significativa para casos de uso em produção.

Obrigado pela ajuda!

Atenciosamente, KAMI1a

@kami1a não nativamente, o nó do Anthropic Chat Model não expõe cache_control, então o agente não define pontos de cache por conta própria (há uma solicitação de recurso aberta para isso). o que as pessoas fazem no n8n Cloud é apontar a URL base das credenciais do Anthropic para um pequeno proxy (cloudflare worker) que injeta “cache_control”: {“type”:“ephemeral”} no corpo da requisição antes de chegar à Anthropic, armazenando em cache o prefixo system+tools. alguns têm rodando em produção. apenas mantenha o ponto de interrupção em um prefixo estável, mover marcadores ou blocos de extended-thinking quebram o acerto do cache.

Oi KAMI1a,

Como um Engenheiro de Automação de IA rodando workloads em produção com Anthropic e n8n diariamente, eu realmente entendo sua dor. Quando você está rodando 10–20 mensagens por conversa em múltiplos clientes, system prompts sem cache vão absolutamente consumir seu orçamento de API.

@achamm está completamente certo—n8n ainda não expõe nativamente o parâmetro cache_control dentro das Opções Avançadas do nó Anthropic Chat Model.

Enquanto esperamos o suporte nativo chegar no roadmap, você não precisa sangrar custos de API. O melhor workaround de nível produtivo agora é interceptar a requisição e injetar os headers de cache você mesmo.

Aqui está exatamente como configurar isso:

A Solução: O Truque do Cloudflare Worker Proxy

Em vez de enviar requisições do n8n diretamente para Anthropic, você aponta o n8n para um Cloudflare Worker leve e gratuito. O Worker pega o payload do n8n, injeta o bloco cache_control: {"type": "ephemeral"} no array de system prompt, e o encaminha para Anthropic.

1. Implante o Cloudflare Worker

Crie um novo Cloudflare Worker e coloque um script que intercepte o corpo da requisição POST recebida. Seu código JavaScript dentro do worker deve parecer algo assim:

JavaScript

export default {
  async fetch(request, env) {
    if (request.method === "POST") {
      let body = await request.json();
      
      // Inject cache_control into the system prompt if it exists
      if (body.system && typeof body.system === 'string') {
        body.system = [
          {
            type: "text",
            text: body.system,
            cache_control: { type: "ephemeral" }
          }
        ];
      }

      // Forward the modified request to Anthropic
      const modifiedRequest = new Request("https://api.anthropic.com/v1/messages", {
        method: "POST",
        headers: request.headers,
        body: JSON.stringify(body)
      });

      return fetch(modifiedRequest);
    }
    return new Response("Method not allowed", { status: 405 });
  }
};

2. Atualize as Credenciais do n8n

  1. Vá para seu gerenciador de Credentials no n8n e abra sua configuração de API do Anthropic.

  2. Ative a opção de override de Base URL (você pode precisar habilitar as configurações avançadas).

  3. Substitua https://api.anthropic.com/v1 pela URL do seu Cloudflare Worker implantado (ex: https://seu-worker-name.workers.dev).

Armadilhas Cruciais de Produção para Manter em Mente

Já que você está rodando isso para clientes reais, mantenha essas duas regras em mente para garantir que você realmente consiga um cache hit:

  • Mantenha o Prefixo Estático: Anthropic requer que o bloco em cache (system prompt + tools) seja totalmente estável. Se seu nó de AI Agent injeta dinamicamente dados variáveis (como a hora atual ou um nome de cliente que muda) diretamente na string de system prompt, isso vai invalidar o cache a cada turno. Mantenha dados dinâmicos dentro das mensagens do usuário em vez disso.

  • Fique Atento ao Mínimo de Tokens: Anthropic só dispara prompt caching se seu prefixo de prompt for maior que 1.024 tokens (Sonnet/Opus). Como seu system prompt tem ~1.500 tokens, você está perfeitamente seguro, mas fique atento a isso se você tentar dimensionar prompts menores!

Essa pequena camada de middleware proxy deve reduzir seus custos de mensagem recorrentes em até 90% imediatamente até que o recurso nativo seja lançado.

Me avise se você precisar de ajuda para ajustar o script do worker para corresponder à sua estrutura exata de payload de ferramentas!

Opa @kami1a, ótima solução do @achamm e @Swapnil acima. Uma coisa que vale a pena adicionar para sua configuração específica, já que você está rodando um agente de reservas (provavelmente com várias ferramentas anexadas, consulta de calendário, verificação de disponibilidade, criação de reserva, etc.), não esqueça que o array de ferramentas também conta para o prefixo cacheável e precisa do seu próprio breakpoint cache_control, não apenas do prompt do sistema. Definições de ferramentas são geralmente estáticas e um ótimo segundo lugar para cachear, especialmente se seus esquemas de ferramentas forem verbosos.

No script do Worker acima, você adicionaria o mesmo bloco cache_control à última ferramenta no array body.tools (Anthropic cacheia tudo até e incluindo o bloco marcado):

if (body.tools && body.tools.length > 0) {

  body.tools[body.tools.length - 1].cache_control = { type: "ephemeral" };

}

Dessa forma você está cacheando tanto o prompt do sistema quanto suas definições de ferramentas, o que para um agente de reservas com múltiplas ferramentas pode ser uma quantidade significativa do custo de tokens por turno.

Muito obrigado. Que atencioso da sua parte! :heart:

Muito obrigado. Merci :heart: