180 lines
4.3 KiB
Markdown
180 lines
4.3 KiB
Markdown
# 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
|
|
```
|
|
|
|
## Deploy
|
|
|
|
### Build y Push a Registry
|
|
|
|
```bash
|
|
# Construir imagen
|
|
docker build -t gitea.onecluster.org/oneteam/naliia_bot:v1.0.0_pro .
|
|
|
|
# Push al registry
|
|
docker push gitea.onecluster.org/oneteam/naliia_bot:v1.0.0_pro
|
|
```
|
|
|
|
### 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
|