RaulCtm commited on
Commit
ce01c10
·
verified ·
1 Parent(s): 85abb24

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +32 -4
main.py CHANGED
@@ -1,7 +1,35 @@
1
- from fastapi import FastAPI
 
 
 
 
 
2
 
3
- app = FastAPI()
 
 
 
4
 
 
 
 
 
 
5
  @app.get("/")
6
- def greet_json():
7
- return {"Hello": "World!"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #Inicializamos la aplicación FastAPI
2
+ app = FastAPI(
3
+ title="ToxicFilterAI API",
4
+ description="Microservicio de inferencia para detección de toxicidad en comentarios",
5
+ version="1.0.0"
6
+ )
7
 
8
+ #Cargamos el modelo al arrancar el contenedor
9
+ print("⏳ Descargando y montando modelo desde Hugging Face Hub...")
10
+ clasificador = pipeline("text-classification", modelo="ToxicFilterAI/distilbert-toxicidad")
11
+ print("✅ Modelo cargado en memoria.")
12
 
13
+ #Definimos el contrato de datos (Lo que esperamos recibir)
14
+ class PeticionComentario(BaseModel):
15
+ texto: str
16
+
17
+ #Endpoint de Health Check (Buenas prácticas de infraestructura)
18
  @app.get("/")
19
+ def health_check():
20
+ return {"status": "online", "message": "Motor de inferencia operativo"}
21
+
22
+ #Endpoint principal de predicción
23
+ @app.post("/api/v1/predict")
24
+ def predecir_toxicidad(peticion: PeticionComentario):
25
+ if not peticion.texto.strip():
26
+ raise HTTPException(status_code=400, detail="El texto no puede estar vacío")
27
+
28
+ resultado = clasificador(peticion.texto)[0]
29
+
30
+ return {
31
+ "texto_analizado": peticion.texto,
32
+ "etiqueta_modelo": resultado['label'],
33
+ "score_confianza": round(float(resultado['score']), 4),
34
+ "es_toxico": True if resultado['label'] == "Toxic" else False
35
+ }