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
terminalmkdir 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.pyConfiguracao do ambiente
.env:
ZAVUDEV_API_KEY=suachave
ZAVU_WEBHOOK_SECRET=segreto_webhook
ZAVU_SENDER_ID=sender_xxxconfig/settings.py:
Pythonimport 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
gpt-4o-mini, claude-3-5-sonnet, etc.) e promptVia SDK Python
Pythonfrom 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:
Pythonimport 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:
Pythonfrom 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:
terminalngrok 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:
Pythonclient.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:
Pythonclient.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
Precisa de ajuda? Agende uma demo ou fale com o time no Discord.