# NaliiaBot Agente conversacional basado en LangGraph para gestión de agenda y atención al cliente. ## Características - Agente conversacional inteligente basado en LangGraph - Sistema de herramientas (tools) con integración MCP - Integración con modelos LLM (Anthropic Claude, DeepSeek) - API FastAPI para interacción - Checkpointing con PostgreSQL para persistencia de estado - Deploy con Docker y Docker Compose - Tests completos con pytest ## Estructura del proyecto ``` NaliiaBot/ ├── src/ │ ├── naliiabot/ │ │ ├── bot/ │ │ │ ├── agent/ # Agente LangGraph │ │ │ │ ├── agent.py │ │ │ │ └── schemas.py │ │ │ ├── tools/ # Herramientas del agente │ │ │ │ ├── naliia_tools.py │ │ │ │ └── schemes.py │ │ │ ├── factories/ # Factorías (LLM) │ │ │ └── prompts/ # Prompts del agente │ │ └── bot/ │ ├── naliiabotapi/ # API FastAPI │ │ ├── main.py │ │ ├── api/ │ │ │ ├── v1/endpoints/ │ │ │ └── v1/webhooks/ │ │ └── schemes/ │ ├── mcp/ # Servidor MCP │ └── ui/ # Frontend ├── tests/ ├── docker-compose.yaml # PostgreSQL + Bot ├── Dockerfile # Imagen del Bot ├── .dockerignore ├── pyproject.toml # Configuración Poetry └── README.md ``` ## Requisitos - Python 3.13+ - Docker y Docker Compose - MCP server ejecutándose en `http://localhost:8001/mcp` ## Instalación ### Docker (Recomendado) ```bash # Configurar variables de entorno cp .env.example .env # Editar .env con tus configuraciones # Iniciar servicios docker-compose up --build # Ver logs docker-compose logs -f naliia_bot ``` ### Local (Desarrollo) ```bash # Instalar dependencias con Poetry poetry install # Configurar variables de entorno cp .env.example .env # Editar .env con tus configuraciones ``` ## Uso ### Docker ```bash # Iniciar todos los servicios (PostgreSQL + Bot) docker-compose up -d # Detener servicios docker-compose down # Reconstruir imagen docker-compose build --no-cache ``` ### Desarrollo local ```bash # Iniciar PostgreSQL docker-compose up -d messages_db # Iniciar API task dev ``` ### Comandos disponibles | Comando | Descripción | |---------|-------------| | `task dev` | Iniciar servidor API en puerto 8010 | | `task test` | Ejecutar todos los tests | | `task test-cov` | Ejecutar tests con coverage | ### Variables de entorno | Variable | Descripción | Valor por defecto | |----------|-------------|-------------------| | `LLM_MODEL` | Modelo LLM a usar | `deepseek` | | `POSTGRES_HOST` | Host de PostgreSQL | `localhost` | | `POSTGRES_USER` | Usuario PostgreSQL | `postgres` | | `POSTGRES_PASSWORD` | Contraseña PostgreSQL | `postgres` | | `POSTGRES_DB` | Base de datos | `messages` | ## Servicios | Servicio | Puerto | Descripción | |---------|--------|-------------| | `messages_db` | 5432 | PostgreSQL para checkpointing | | `naliia_bot` | 8010 | API FastAPI del bot | ## Tools disponibles El agente cuenta con las siguientes herramientas: - `get_current_datetime` - Consulta fecha y hora actual - `get_tomorrow_date` - Calcula la fecha de mañana - `find_service_centers` - Lista centros de servicio disponibles - `find_products_and_services` - Lista productos y servicios - `schedule_appointment` - Agenda una cita ## API Endpoints - `GET /` - Raíz - `GET /health` - Health check - `POST /api/v1/chat` - Enviar mensaje al agente - `POST /api/v1/webhooks/chat` - Webhook para callbacks ## Tests ```bash # Ejecutar todos los tests pytest -v # Tests con coverage task test-cov ``` ## Desarrollo El proyecto sigue una arquitectura basada en: - **LangGraph**: Grafo de estados para el agente conversacional - **FastAPI**: API REST sincrónica - **PostgreSQL**: Persistencia de estado via checkpointing - **MCP**: Modelo de contexto para herramientas externas ## Licencia MIT