File size: 1,886 Bytes
52b0ede | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | # Referencia API (FastAPI)
URL base (local): `http://localhost:8000`
Documentación interactiva: `/docs`, `/redoc`
Implementación: [`src/api/main.py`](../src/api/main.py)
---
## Endpoints
| Método | Ruta | Descripción |
|--------|------|-------------|
| `GET` | `/` | Estado del servicio y modelo activo |
| `GET` | `/model-info` | Metadatos del modelo cargado |
| `GET` | `/models` | Modelos disponibles y activo |
| `PUT` | `/model/{model_name}` | Cambiar modelo activo |
| `POST` | `/predict` | Clasificar un comentario |
| `POST` | `/predict-batch` | Hasta 100 comentarios |
| `POST` | `/predict-video` | Comentarios de un vídeo de YouTube |
---
## `POST /predict`
**Cuerpo**
```json
{
"text": "Texto del comentario",
"threshold": 0.5
}
```
**Respuesta**
```json
{
"text": "Texto del comentario",
"is_toxic": false,
"probability": 0.08,
"labels": [],
"model_used": "LR + TF-IDF (local)",
"latency_ms": 15.2
}
```
- `is_toxic`: `true` = **Tóxico**, `false` = **Seguro**
- `probability`: probabilidad de clase tóxica (0–1)
**curl**
```bash
curl -s -X POST http://localhost:8000/predict \
-H "Content-Type: application/json" \
-d '{"text": "¡Gran vídeo, gracias!", "threshold": 0.5}'
```
---
## `POST /predict-batch`
```bash
curl -s -X POST http://localhost:8000/predict-batch \
-H "Content-Type: application/json" \
-d '{"texts": ["Comentario seguro", "Eres un idiota"], "threshold": 0.5}'
```
---
## `POST /predict-video`
Requiere `YOUTUBE_API_KEY` en `.env` para comentarios reales.
```json
{
"url": "https://www.youtube.com/watch?v=VIDEO_ID",
"max_comments": 50,
"threshold": 0.5
}
```
---
## Variables de entorno
| Variable | Descripción |
|----------|-------------|
| `MODEL_NAME` | Modelo al arrancar la API |
| `YOUTUBE_API_KEY` | API de YouTube para `/predict-video` |
Ver [`.env.example`](../.env.example).
|