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).