Existe uma solução open-source brasileira que muda o jogo: a Evolution API. Ela conecta ao WhatsApp Web via código, sem precisar da API oficial e sem custo por mensagem.
Neste tutorial você vai construir um bot completo com Python que recebe mensagens, processa com IA e responde automaticamente — com memória de conversa por número.
pip install flask requests google-generativeai python-dotenvCrie um arquivo .env na raiz do projeto:
GEMINI_API_KEY=sua_chave_aqui
EVOLUTION_API_URL=http://localhost:8080
EVOLUTION_API_KEY=sua_chave_evolution
EVOLUTION_INSTANCE=minha-instanciaObtenha sua chave Gemini gratuita em aistudio.google.com
docker run -d \
--name evolution-api \
-p 8080:8080 \
-e AUTHENTICATION_API_KEY=minha-chave-secreta \
atendai/evolution-api:latestAcesse http://localhost:8080, crie uma instância e escaneie o QR Code com seu WhatsApp.
from flask import Flask, request, jsonify
import google.generativeai as genai
import requests
import os
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel("gemini-2.0-flash")
historico = {}
def enviar_mensagem_whatsapp(numero, texto):
url = f"{os.getenv('EVOLUTION_API_URL')}/message/sendText/{os.getenv('EVOLUTION_INSTANCE')}"
headers = {"apikey": os.getenv("EVOLUTION_API_KEY")}
payload = {"number": numero, "text": texto}
requests.post(url, json=payload, headers=headers)
def processar_com_ia(numero, mensagem):
if numero not in historico:
historico[numero] = model.start_chat(history=[])
chat = historico[numero]
resposta = chat.send_message(f"Responda em português, direto: {mensagem}")
return resposta.text
@app.route("/webhook", methods=["POST"])
def webhook():
data = request.json
if not data or data.get("event") != "messages.upsert":
return jsonify({"status": "ignored"})
try:
msg = data["data"]["messages"][0]
if msg.get("key", {}).get("fromMe"):
return jsonify({"status": "self"})
numero = msg["key"]["remoteJid"].replace("@s.whatsapp.net", "")
texto = msg.get("message", {}).get("conversation", "")
if texto:
resposta = processar_com_ia(numero, texto)
enviar_mensagem_whatsapp(numero, resposta)
except Exception as e:
print(f"Erro: {e}")
return jsonify({"status": "ok"})
if __name__ == "__main__":
app.run(port=5000, debug=True)ngrok http 5000Copie a URL HTTPS gerada e configure como webhook na Evolution API apontando para https://sua-url.ngrok.io/webhook.
A Evolution API usa o WhatsApp Web — não é a API oficial da Meta. Para uso pessoal e testes funciona bem. Para volume alto em produção, limite o número de mensagens diárias para evitar bloqueio da conta.
Com essa base você pode evoluir o bot para responder sobre catálogo de produtos, atender clientes, integrar com Google Calendar ou qualificar leads automaticamente.
Quer ir além? No livro O Arquiteto de IA mostro como escalar esse sistema para produção corporativa com múltiplos canais simultâneos. Acesse aqui
Leia também: Como Rodar um LLM Grátis no Seu PC com Ollama e Python
O Arquiteto de IA é orgulhosamente mantido com WordPress