Hackaton / api /main.py
Vlytz's picture
Upload main.py
ba5dc71 verified
# En: api/main.py
from fastapi import FastAPI
from pydantic import BaseModel
import time
# --- Modelos de datos (Pydantic) para validar la entrada ---
# Esto es una buena pr谩ctica que los jueces notar谩n
class PredictPayload(BaseModel):
edad: int
sexo: str
asistencia: float
notas: float
class CoachPayload(BaseModel):
consulta: str
riesgo: float
# Inicializa tu app de FastAPI
app = FastAPI(title="API del Tutor Virtual - MOCK")
@app.get("/")
def read_root():
return {"status": "API de MOCK funcionando"}
# --- Endpoint /predict (FALSO) ---
@app.post("/predict")
async def mock_predict(payload: PredictPayload):
"""
Simula el endpoint /predict.
Devuelve un score y drivers falsos basados en las notas.
"""
# Simula un peque帽o delay, como si un modelo estuviera corriendo
time.sleep(0.5)
score_falso = 0.0
if payload.notas < 4.0:
score_falso = 0.85
elif payload.notas < 5.5:
score_falso = 0.45
else:
score_falso = 0.15
return {
"score": score_falso,
"drivers": ["Promedio de Notas", "Asistencia (falso)"]
}
# --- Endpoint /coach (FALSO) ---
@app.post("/coach")
async def mock_coach(payload: CoachPayload):
"""
Simula el endpoint /coach (RAG).
Devuelve un plan de acci贸n falso.
"""
time.sleep(1) # Simula el delay de un LLM
respuesta_falsa = f"""
Basado en tu riesgo de **{payload.riesgo*100:.0f}%** y tu consulta ('{payload.consulta}'), este es un plan de acci贸n de prueba:
1. **Enfocarse en las notas**: Te sugiero revisar las gu铆as de estudio.
2. **Organizaci贸n**: Es clave mantener un calendario.
Recuerda que esto es solo una simulaci贸n del sistema RAG.
"""
return {
"plan": respuesta_falsa,
"citas": ["kb/guia_estudio_mock.md", "kb/gestion_tiempo_mock.md"]
}