--- title: Construa um Agente de IA para WhatsApp com Django e Zavu description: Tutorial passo a passo para criar um agente de WhatsApp com Django usando o AI Gateway da Zavu, sem precisar de API keys externas. date: 2025-12-15 author: Victor Villalobos locale: pt source: https://www.zavu.dev/pt/blog/whatsapp-ai-agents-django tags: Agentes IA, WhatsApp, Django, Python --- # Construa um Agente de IA para WhatsApp com Django e Zavu # Construa um Agente de IA para WhatsApp com Django e Zavu Crie um agente de WhatsApp pronto para producao em poucas etapas usando Django + o AI Gateway da Zavu. Voce acessa GPT-4, Claude, Gemini e Mistral sem gerenciar chaves externas. ## O que vamos construir Aplicacao Django que: - Recebe webhooks do WhatsApp - Valida assinaturas - Chama um agente gerenciado da Zavu para responder - Mantem contexto automaticamente ## Pre-requisitos - Python 3.9+ - Conta na Zavu e sender WhatsApp aprovado - ngrok (ou tunnel similar) para testes locais ## Instalacao ```bash mkdir whatsapp-agent && cd whatsapp-agent python -m venv venv && source venv/bin/activate pip install django zavudev python-dotenv django-admin startproject config . python manage.py startapp agent ``` ## Estrutura ``` whatsapp-agent/ ├── config/ ├── agent/ │ ├── views.py │ ├── urls.py │ └── services.py ├── .env └── manage.py ``` ## Configuracao do ambiente `.env`: ``` ZAVUDEV_API_KEY=suachave ZAVU_WEBHOOK_SECRET=segreto_webhook ZAVU_SENDER_ID=sender_xxx ``` `config/settings.py`: ```python import os from dotenv import load_dotenv load_dotenv() ZAVUDEV_API_KEY = os.getenv('ZAVUDEV_API_KEY') ZAVU_WEBHOOK_SECRET = os.getenv('ZAVU_WEBHOOK_SECRET') ZAVU_SENDER_ID = os.getenv('ZAVU_SENDER_ID') ``` ## Como funciona o AI Gateway da Zavu - Um unico endpoint para modelos GPT, Claude, Gemini e Mistral - Gerencia contexto, memoria e billing - Permite usar suas chaves, se quiser ## Criando o agente ### Via dashboard 1. Acesse **Senders → AI Agent** 2. Escolha o sender WhatsApp 3. Defina nome, modelo (`gpt-4o-mini`, `claude-3-5-sonnet`, etc.) e prompt 4. Ajuste janela de contexto e ativar ferramentas 5. Salve — pronto! ### Via SDK Python ```python from zavudev import Zavudev client = Zavudev(api_key=ZAVUDEV_API_KEY) agent = client.senders.agent.create( sender_id=os.environ['ZAVU_SENDER_ID'], name='Suporte Pro', provider='zavu', model='gpt-4o-mini', system_prompt='Ajude clientes sobre WhatsApp, SMS e email.', context_window_messages=8, include_contact_metadata=True, enabled=True ) ``` ## Webhook `agent/views.py`: ```python import json import hmac import hashlib from django.http import JsonResponse, HttpResponseForbidden from zavudev import Zavudev client = Zavudev(api_key=ZAVUDEV_API_KEY) def verify_signature(payload, signature): digest = hmac.new( ZAVU_WEBHOOK_SECRET.encode(), msg=payload, digestmod=hashlib.sha256 ).hexdigest() return hmac.compare_digest(digest, signature) @csrf_exempt def whatsapp_webhook(request): signature = request.headers.get('X-ZAVU-SIGNATURE') payload = request.body if not verify_signature(payload, signature): return HttpResponseForbidden() event = json.loads(payload) if event['type'] == 'message.received': client.senders.agent.reply( sender_id=ZAVU_SENDER_ID, contact_id=event['data']['contact']['id'], message_id=event['data']['message']['id'] ) return JsonResponse({ 'status': 'ok' }) ``` `agent/urls.py`: ```python from django.urls import path from .views import whatsapp_webhook urlpatterns = [ path('webhooks/whatsapp/', whatsapp_webhook, name='whatsapp-webhook') ] ``` Inclua em `config/urls.py` e exponha via ngrok: ```bash ngrok http 8000 ``` Configure o webhook no dashboard apontando para `https://xxxx.ngrok.app/webhooks/whatsapp/`. ## Conhecimento e ferramentas ### Bases de conhecimento - Via dashboard: anexe documentos, URLs ou FAQs - Via SDK: ```python client.senders.agent.knowledge_bases.attach( sender_id=ZAVU_SENDER_ID, knowledge_base_id='kb_docs' ) ``` ### Ferramentas customizadas - Crie funcoes no dashboard (ex.: consultar estoque) - Ou registre via SDK: ```python client.senders.agent.tools.create( sender_id=ZAVU_SENDER_ID, name='check_inventory', description='Consulta estoque na API interna', url='https://api.example.com/inventory', method='POST' ) ``` ## Recursos adicionais - Analytics em tempo real (latencia, CSAT, execucoes) - Conversas podem disparar automacoes/fallbacks - Opcionalmente use suas chaves OpenAI/Anthropic se quiser controlar billing (`provider='bring-your-own'`) ## Proximos passos 1. Adicione knowledge bases e ferramentas especificas 2. Habilite conversas omnichannel (SMS, email) usando o mesmo agente 3. Implante no ambiente cloud (Railway, Fly.io, Render) **Precisa de ajuda?** [Agende uma demo](/schedule?service=demo) ou fale com o time no [Discord](https://discord.gg/ZxE8DYkveh).