Este repositorio contiene una implementación completa de un agente conversacional desplegable en Google Cloud Run, capaz de interactuar con usuarios a través de WhatsApp, utilizando GPT-4.1, memoria persistente con PostgreSQL, recuperación de contexto con ElasticSearch y un flujo conversacional basado en el patrón ReAct de LangChain.
.
├── code/
│ ├── app.py # Lógica del agente y servidor Flask
│ ├── Dockerfile # Imagen Docker para Cloud Run
│ ├── requirements.txt # Dependencias del entorno
├── Notebook Agent whatsapp.ipynb # Notebook explicativo del agente
├── old_version_2024/ # Primera versión con cadenas LangChain y memoria en Cloud Storage
El agente está diseñado para asistir en ventas de computadoras y productos tecnológicos, guiando al usuario por un flujo natural de conversación:
- Saludo y exploración de necesidades.
- Consulta de productos (usando recuperación semántica desde ElasticSearch).
- Opciones de entrega (tienda o domicilio).
- Confirmación del pedido.
- Método de pago.
- Cierre de la compra con instrucciones de pago o código de recogida.
El modelo utilizado es gpt-4.1-2025-04-14
, integrado en un agente ReAct (create_react_agent
) de LangChain, que usa herramientas y memoria por sesión vía thread_id
.
- Usuario interactúa desde su aplicacion de whatsapp.
- Meta Mediante el API nativa de Meta captura el mensaje.
- Cloud Run recibe
/webhook?
por POST y activa LangChain. - El agente consulta → Elasticsearch (conocimiento) + PostgreSQL (memoria).
- GPT‑4.1 genera la respuesta; LangSmith traza cada paso.
- La respuesta JSON la formatea y retorna a whatsapp.
- LangChain: Orquestador del agente y herramientas.
- GPT-4.1: Modelo base para generar respuestas.
- LangGraph: Framework de flujos de agente y memoria persistente.
- PostgreSQL: Almacenamiento de memoria por sesión (
PostgresSaver
). - ElasticSearch: Base de datos vectorial para recuperación de productos.
- Flask: API que sirve de webhook para WhatsApp.
- Docker: Contenedor listo para despliegue en Google Cloud Run.
-
Clonar el repositorio:
git clone https://github.com/tu_usuario/whatsapp-agent cd whatsapp-agent/code
-
Construir y subir la imagen:
gcloud builds submit --tag gcr.io/tu-proyecto/whatsapp-agent
-
Desplegar en Cloud Run:
gcloud run deploy whatsapp-agent \ --image gcr.io/tu-proyecto/whatsapp-agent \ --platform managed \ --region us-central1 \ --allow-unauthenticated \ --port 8080
Este proyecto está preparado para funcionar con la API oficial de WhatsApp Business (Meta):
- El endpoint
/webhook
recibe los mensajes entrantes (GET para validación, POST para eventos). - Responde automáticamente usando el agente configurado y envía respuestas al número correspondiente.
- Requiere un
token
ywebhook_url
que se configuran en el código (usa variables de entorno en producción).
Para producción, reemplaza los valores sensibles en app.py
por variables de entorno:
OPENAI_API_KEY=
WHATSAPP_TOKEN=
WHATSAPP_URL=
POSTGRES_URL=
ELASTIC_PASSWORD=
TOKENMETA=
En la raíz encontrarás el notebook Notebook Agent whatsapp.ipynb
con una explicación paso a paso del funcionamiento del agente, ideal para comprender la lógica detrás del flujo y probar localmente.
Archivo requirements.txt
con todas las dependencias necesarias:
Flask==2.0.1
gunicorn==20.1.0
psycopg[binary,pool]==3.2.6
werkzeug==2.0.3
langchain-openai
langchain_core
langgraph
langgraph-checkpoint-postgres
langchain
langchain-community
elasticsearch
langchain-elasticsearch
Este proyecto es de código abierto y nació con el propósito de compartir, aprender y construir en comunidad.
Si tienes ideas, mejoras o simplemente quieres sumarte, ¡las contribuciones están más que bienvenidas! 🙌
Puedes abrir un Pull Request o crear un Issue si quieres proponer mejoras o reportar errores.
Gracias por revisar este repositorio.
Si te interesa colaborar, aprender más o invitarme a dar una charla, puedes escribirme o seguirme en LinkedIn:
IA & Data con propósito