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
bashmkdir 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
textwhatsapp-agent/ ├── config/ ├── agent/ │ ├── views.py │ ├── urls.py │ └── services.py ├── .env └── manage.py
Configuracao do ambiente
.env:textZAVUDEV_API_KEY=suachave ZAVU_WEBHOOK_SECRET=segreto_webhook ZAVU_SENDER_ID=sender_xxx
config/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:
bashngrok 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')