~/beer-and-code
~ / tutoriais / como-criar-um-agente-de-ia-para-whatsapp $
Tutoriais

Como criar um agente de IA para WhatsApp: passo a passo com API (sem depender de SaaS)

LS Lucas Souza · · 9 min de leitura
Como criar um agente de IA para WhatsApp: passo a passo com API (sem depender de SaaS)

Pesquisa "agente de IA para WhatsApp" no Google e conta o que aparece: landing page de ferramenta, uma atrás da outra, todas cobrando mensalidade por algo que você monta em uma tarde. Até a Meta entrou no jogo — o Meta Business Agent chegou "grátis" no WhatsApp Business em junho, e a partir de 01/08/2026 começa a cobrar por token. Grátis tinha prazo de validade.

Existe o caminho do dev: uma API de WhatsApp, um LLM e código seu. Sem plano Pro, sem limite de "conversas/mês", sem depender do roadmap de terceiro.

Neste tutorial você vai aprender como criar um agente de IA para WhatsApp do zero: subir a Evolution API, receber mensagens via webhook, processar com o Claude e responder — com o caminho aberto pra memória e ferramentas depois.

TL;DR

  • O que é: um agente de IA conectado ao seu número de WhatsApp, rodando na sua infra, respondendo com um LLM.
  • Stack: Evolution API (open source, Apache 2.0) + Claude API + PHP/Laravel (o padrão serve pra qualquer linguagem).
  • Custo: centavos por conversa. A conta completa está no fim do post.
  • Alternativa oficial: WhatsApp Cloud API da Meta — grátis pra mensagens de serviço, paga por template.

O que é um agente de IA no WhatsApp (e por que todo mundo quer te vender um)

Um chatbot segue fluxo: aperte 1 pra boleto, aperte 2 pra suporte. Um agente de IA entende a mensagem, mantém o contexto da conversa, decide o que fazer e pode executar ações — consultar um pedido, agendar um horário, escalar pra um humano. A diferença não é o canal. É ter um modelo de linguagem raciocinando no meio.

Por que todo SaaS quer te vender isso? Porque a margem é ótima. A ferramenta cobra R$150 a R$400 por mês pra orquestrar exatamente o que vamos montar aqui: receber webhook, chamar um LLM, devolver a resposta. O custo real disso em API é de centavos. O que você paga na mensalidade é a interface bonita e a promessa de não precisar programar.

Você programa. Então bora.

Se o conceito de agente ainda está nebuloso, o guia de o que é um agente de IA é o ponto de partida — este post é a aplicação prática dele.

Pré-requisitos e ferramentas

  • [ ] Um servidor com Docker (uma VPS de US$5 resolve)
  • [ ] Uma chave da API da Anthropic
  • [ ] Um número de WhatsApp dedicado ao agente (não use seu número pessoal — já explico por quê)
  • [ ] PHP 8.3+ com Composer (ou a linguagem da sua stack; o padrão é idêntico)

A arquitetura mínima: webhook, LLM, resposta

Todo agente de WhatsApp, de qualquer SaaS, é este desenho:

WhatsApp → Evolution API → webhook (sua app) → LLM → Evolution API → WhatsApp

Três blocos. A ponte com o WhatsApp, o seu backend e o modelo. Antes de codar, uma decisão honesta sobre a ponte:

Caminho 1 — Evolution API via Baileys (o que vamos usar). Open source, ~9 mil stars, conecta um número comum emulando o WhatsApp Web. Zero burocracia, ideal pra aprender, projetos internos e MVPs. O porém: é conexão não oficial. A Meta pode banir números que violam os termos de uso — por isso o número dedicado.

Caminho 2 — WhatsApp Cloud API (oficial). A Evolution API também suporta o canal oficial da Meta. Desde julho de 2025 a cobrança é por mensagem de template — e mensagens de serviço (você respondendo um cliente que te chamou, dentro da janela de 24h) são gratuitas. Pra atendimento receptivo em produção, é o caminho sério.

A boa notícia: o seu código não muda entre os dois. A Evolution API abstrai o canal. Comece no Baileys, migre pro oficial quando o agente provar valor.

Mão na massa: criando o agente de IA para WhatsApp

Passo 1: suba a Evolution API

docker run -d \
  --name evolution-api \
  -p 8080:8080 \
  -e AUTHENTICATION_API_KEY=troque-esta-chave \
  atendai/evolution-api:latest

Em produção use o docker-compose da documentação oficial, que inclui Postgres e Redis. Com o serviço no ar, crie uma instância e conecte seu número lendo o QR code:

curl -X POST http://localhost:8080/instance/create \
  -H "apikey: troque-esta-chave" \
  -H "Content-Type: application/json" \
  -d '{"instanceName": "agente", "qrcode": true}'

Passo 2: aponte o webhook pra sua app

curl -X POST http://localhost:8080/webhook/set/agente \
  -H "apikey: troque-esta-chave" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook": {
      "enabled": true,
      "url": "https://sua-app.com.br/webhook/whatsapp",
      "events": ["MESSAGES_UPSERT"]
    }
  }'

Cada mensagem recebida agora vira um POST na sua aplicação. Se estiver desenvolvendo local, um túnel resolve — Ngrok ou Expose, você escolhe.

Passo 3: o cérebro — webhook chamando o Claude

Uma rota Laravel, o SDK oficial da Anthropic pra PHP (composer require anthropic-ai/sdk) e o loop fundamental de qualquer agente:

use Anthropic\Client;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

Route::post('/webhook/whatsapp', function (Request $request) {
    $data = $request->input('data');

    // ignora mensagens enviadas por você mesmo
    if ($data['key']['fromMe'] ?? false) {
        return response()->noContent();
    }

    $numero = explode('@', $data['key']['remoteJid'])[0];
    $texto  = $data['message']['conversation']
        ?? $data['message']['extendedTextMessage']['text']
        ?? null;

    if (! $texto) {
        return response()->noContent();
    }

    $client = new Client(apiKey: config('services.anthropic.key'));

    $resposta = $client->messages->create(
        model: 'claude-opus-4-8',
        maxTokens: 1024,
        system: 'Você é o assistente da Beer and Code no WhatsApp. '
            . 'Responda curto, direto e em português. '
            . 'Se não souber, diga que vai encaminhar pra um humano.',
        messages: [
            ['role' => 'user', 'content' => $texto],
        ],
    );

    $textoResposta = '';
    foreach ($resposta->content as $block) {
        if ($block->type === 'text') {
            $textoResposta = $block->text;
            break;
        }
    }

    Http::withHeaders(['apikey' => config('services.evolution.key')])
        ->post(config('services.evolution.url') . '/message/sendText/agente', [
            'number' => $numero,
            'text'   => $textoResposta,
        ]);

    return response()->noContent();
});

Pronto. Mensagem entra, Claude pensa, resposta sai. Isso já é mais capaz que a maioria dos chatbots de menu que você encontra por aí — e o código inteiro coube numa rota.

Dois detalhes de produção que este exemplo simplifica: valide a origem do webhook (um token na URL já ajuda) e jogue o processamento pra uma queue — a Evolution API reenvia o webhook se sua rota demorar a responder, e você não quer responder o cliente duas vezes.

De chatbot pra agente: memória e ferramentas

O que você montou responde bem, mas esquece tudo a cada mensagem. Pra virar agente de verdade, faltam duas peças:

Memória. Guarde o histórico da conversa por remoteJid (cache, Redis, Postgres) e envie as últimas N mensagens no array messages a cada chamada. O modelo passa a lembrar que o cliente já disse o nome, o pedido, o problema. O padrão completo está em memória de agente de IA.

Ferramentas. É o pulo do gato: em vez de só conversar, o agente consulta seu banco, busca um pedido, agenda horário. Isso é tool calling — o modelo decide quando chamar uma função sua e você executa. Destrinchei o padrão em tool calling na prática.

Com essas duas peças, o desenho é o mesmo de um agente de IA do zero — o WhatsApp é só o canal de entrada. E se quiser ver um projeto completo com essa stack, tem o agente de bolão da Copa com Evolution API e n8n aqui no blog.

Quanto custa rodar (a conta real)

Vamos supor 1.000 conversas/mês, cada uma com ~3 mil tokens de entrada (histórico + system prompt) e ~500 de saída:

  • WhatsApp: no Baileys, zero. Na Cloud API oficial, respostas dentro da janela de 24h são mensagens de serviço — gratuitas.
  • LLM: no Claude Opus 4.8 (US$5/US$25 por milhão de tokens), essa carga custa ~US$27/mês. Trocando pro Haiku 4.5 (US$1/US$5) — que dá conta de atendimento com folga — cai pra ~US$5,50/mês.
  • Infra: VPS de US$5 a US$10 rodando Evolution API e sua app.

Total: menos de US$20 por mês pra mil conversas, com o modelo mais barato. O SaaS médio cobra dez vezes isso — e o plano de entrada geralmente nem inclui mil conversas.

Quando o SaaS vale a pena? Quando quem opera não é dev: painel pro time comercial, múltiplos atendentes, relatório pronto. Ferramenta boa cobra pela operação, não pela tecnologia. Se você é dev e o gargalo é a tecnologia, a mensalidade não se justifica.

Limitações e pontos de atenção

  • Risco de ban (Baileys). Conexão não oficial viola os termos do WhatsApp. Use número dedicado, não dispare mensagem em massa, e migre pra Cloud API quando o agente virar peça crítica do negócio.
  • Opt-in e LGPD. Responder quem te chamou é uma coisa; prospectar ativamente é outra. Conversa de cliente é dado pessoal — cuidado com o que entra no prompt e onde o histórico é armazenado.
  • Loop infinito. Agente que responde mensagem pode responder a própria mensagem — ou entrar em ping-pong com outro bot. O filtro de fromMe no código é o mínimo; o post sobre agente em loop infinito cobre os guardrails.
  • Custo sem teto. Sem limite de tokens e sem monitoramento, um cliente prolixo (ou um ataque) vira fatura. Ponha maxTokens baixo, limite o histórico e monitore o usage da API.

FAQ rápido

Preciso da API oficial do WhatsApp? Pra aprender e validar, não — o Baileys resolve. Pra operação séria de atendimento, sim: a Cloud API é o caminho sem risco de ban, e mensagens de serviço são gratuitas.

Posso usar meu número pessoal? Não. Conexão não oficial tem risco real de banimento, e número banido é dor de cabeça grande. Um chip pré-pago dedicado custa quase nada.

Quanto custa por conversa? Com Haiku 4.5, uma conversa típica (3k tokens de entrada, 500 de saída) custa cerca de meio centavo de dólar. A VPS é o maior custo fixo do setup.

Funciona com outra linguagem além de PHP? Sim. O padrão webhook → LLM → resposta é agnóstico: a Anthropic tem SDK oficial pra Python, TypeScript, Go, Ruby, Java e C#. Muda a sintaxe, não a arquitetura.

Conclusão

Você montou o esqueleto de um agente de IA no WhatsApp: Evolution API na ponte, webhook no meio, Claude no cérebro. Com memória e tool calling, esse esqueleto vira produto — atendimento, qualificação de lead, agendamento, o que o seu contexto pedir.

O próximo salto não é trocar de ferramenta. É dominar a engenharia em volta do modelo: contexto, memória, ferramentas, avaliação. Esse é exatamente o mapa que eu abro na masterclass O Mapa do Engenheiro de IA — do bot de fim de semana ao agente que aguenta produção.

Lucas Souza
Escrito por
Lucas Souza

{AI Engineer} — apaixonado por Laravel, arquitetura de software e construir produtos com impacto. Compartilho aqui tutoriais, descobertas e reflexões sobre o dia a dia de engenharia.

tocando