Lo que tu LLM decide, en milisegundos y sin pagar por llamada
Falco destila un modelo de lenguaje grande en un clasificador pequeño, rápido y calibrado. Un LLM enseña una vez; tu propio modelo responde después, en tu infraestructura.
Clasificar cada mensaje con un LLM no escala
Funciona en la demo. En producción, cada mensaje se convierte en una llamada a un modelo grande.
Lento
Cada mensaje espera la respuesta de un modelo grande antes de que tu sistema pueda actuar.
Costoso
Pagas por cada llamada, y la factura crece con cada mensaje que clasificas.
Dependiente
Si el proveedor cambia precios o modelos, o se cae, tu operación cambia o se cae con él.
Etiquetar, entrenar, servir
Tres pasos, tres archivos. El LLM solo participa en el primero.
Etiquetar
tag.pyUn LLM maestro lee tus textos y responde tus preguntas con probabilidades. El etiquetado se puede reanudar y reintenta con backoff.
Entrenar
train.pyUn encoder multilingüe (mDeBERTa-v3 por defecto) aprende a reproducir esas probabilidades y se calibra para que un 0,9 acierte cerca del 90 % de las veces.
Servir
main.py · /v1/decideUna API FastAPI responde en milisegundos, sin llamar a ningún LLM en producción. Corre en CUDA, Apple MPS o CPU.
Un mensaje de soporte, tres respuestas
Una sola llamada a /v1/decide responde los tres tipos de pregunta: sí/no, opción múltiple y escala.
Mensaje
Preguntas
- ¿Es urgente? · sí/no
- Categoría · opción múltiple
- Frustración · escala
{
"urgente": { "type": "noul", "noul": 0.93 },
"categoria": {
"type": "choice",
"choice": "facturación",
"probability": {
"facturación": 0.88, "técnico": 0.04,
"cuenta": 0.05, "otro": 0.03
},
"confidence": 0.61
},
"frustracion": {
"type": "score",
"score": 0.81,
"distribution": {
"ninguna": 0.01, "baja": 0.03, "media": 0.12,
"alta": 0.45, "extrema": 0.39
},
"confidence": 0.42
}
}Valores ilustrativos. confidence va de 0 (distribución uniforme) a 1 (certeza).
Pensado para decidir en producción
Probabilidades calibradas
La calibración por temperatura busca que un 0,9 signifique acertar cerca del 90 % de las veces, para que puedas fijar umbrales con confianza.
Preguntas en texto plano
Las preguntas son parte de la entrada del modelo: la API acepta preguntas nuevas sin reentrenar. Eso sí, su precisión no está garantizada (son zero-shot).
Cualquier proveedor de LLM
Usa como maestro Anthropic, Gemini o cualquier API compatible con OpenAI: OpenAI, Ollama, LM Studio, vLLM, Groq, OpenRouter, DeepSeek…
En tu propia infraestructura
El modelo y la API corren donde tú decidas, en CUDA, Apple MPS o CPU, sin enviar cada mensaje a un tercero.
Código abierto
El código está en GitHub: puedes leerlo, auditarlo y adaptarlo a tu caso.
Dónde podría ayudarte
Algunas ideas de dónde encaja un clasificador rápido y calibrado.
Tickets de soporte
Podrías clasificar cada ticket por categoría y urgencia en cuanto llega, y enviarlo al equipo correcto.
Priorización de leads
Útil para estimar qué tan listo está un lead y decidir a quién contactar primero.
Moderación de mensajes
Podrías marcar mensajes ofensivos o fuera de política con una probabilidad, y revisar a mano solo los dudosos.
Enrutamiento en WhatsApp
Útil para decidir, mensaje a mensaje, si una conversación va a ventas, soporte o a una persona.
De cero a /v1/decide en tres pasos
El camino rápido del README. Consulta la documentación para todas las opciones de etiquetado, entrenamiento y despliegue.
uv sync --extra openai
# Crea .env con GEMINI_API_KEY=... (o ANTHROPIC_API_KEY / OPENAI_API_KEY / OPENROUTER_API_KEY)
# 1. Etiquetar: genera 200 estados sintéticos y los etiqueta con el maestro
python tag.py --questions questions.json --generate 200 --provider gemini
# 2. Entrenar y calibrar el estudiante
python train.py --data data.jsonl --output model_s1
# 3. Servir
uvicorn main:app --port 8000Salto Ángel puede implementarlo en tu negocio
Te ayudamos a definir las preguntas, entrenar el modelo con tus datos y ponerlo en producción.
