Objetivo: Crear una API en FastAPI que procese tickets usando un LLM via LangChain/Hugging Face, devuelva categoria y sentimiento en JSON, y actualice la fila en Supabase como processed: true.
Detalle del paso 1:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install fastapi uvicorn langchain supabase python-dotenv
SUPABASE_URL=...
SUPABASE_KEY=...
HUGGINGFACEHUB_API_TOKEN=...
Detalle del endpoint:
"No puedo iniciar sesion desde ayer, me da error 500."from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class TicketIn(BaseModel):
id: str
description: str
@app.post("/process-ticket")
def process_ticket(payload: TicketIn):
return {"id": payload.id, "description": payload.description}
Detalle del paso (extraccion con LLM):
category y sentiment.from langchain.prompts import PromptTemplate
from langchain_community.llms import HuggingFaceHub
prompt = PromptTemplate(
input_variables=["ticket"],
template=(
"Clasifica el ticket en JSON con keys category y sentiment. "
"Solo JSON. Ticket: {ticket}"
)
)
llm = HuggingFaceHub(repo_id="google/flan-t5-base")
result = llm(prompt.format(ticket=description))
Detalle del paso (actualizacion en Supabase):
from supabase import create_client
supabase = create_client(SUPABASE_URL, SUPABASE_KEY)
data = {
"category": category,
"sentiment": sentiment,
"processed": True
}
result = supabase.table("tickets").update(data).eq("id", ticket_id).execute()
{
"id": "uuid-del-ticket",
"description": "No puedo acceder a mi cuenta..."
}
| Criterio | LangChain + Hugging Face | OpenAI API |
|---|---|---|
| Disponibilidad 🌍 | Modelos abiertos y privados en Hub | Acceso via API con cuenta |
| Costos 💰 | Puede ser gratuito con limites | Pago por uso |
| Calidad 📈 | Depende del modelo elegido | Alta consistencia en clasificacion |
| Control 🛠️ | Mayor control del modelo | Servicio gestionado |
| Latencia ⏱️ | Variable segun proveedor | Generalmente estable |
| Privacidad 🔒 | Opciones de despliegue propio | Datos pasan por API externa |
| Facilidad ⚡ | Mas configuracion inicial | Integracion directa |
| Escalabilidad 🚀 | Depende del hosting | Alta escalabilidad gestionada |
| # | Termino | Definicion |
|---|---|---|
| 1 | Endpoint | Un endpoint es una ruta expuesta por una API para recibir solicitudes HTTP. En practicas de la industria se describe con contratos REST usando metodos como POST y codigos de respuesta estandar (200, 400, 500). Debe documentarse con OpenAPI/Swagger, incluir validacion de payload, autenticar cuando aplique y responder en JSON consistente. En este proyecto, POST /process-ticket recibe id y description y devuelve la salida estructurada. |
| 2 | LLM | LLM significa Large Language Model, un modelo entrenado para comprender y generar texto. En la industria se usa para clasificacion, extraccion y resumen, con practicas de control como prompts estrictos, validacion de salida y limites de tokens. Se recomienda registrar el modelo, version, proveedor y parametros para trazabilidad. En este caso el LLM analiza el ticket y devuelve category y sentiment en JSON. |
| 3 | Prompt | Un prompt es la instruccion textual que guia al modelo para producir una salida especifica. En estandares de la industria se redacta de forma clara, con formato esperado, ejemplos y restricciones como “solo JSON”. Tambien se aplican tecnicas de prompt engineering y validacion posterior para reducir alucinaciones. Para este microservicio, el prompt exige keys category y sentiment y evita texto extra. |
| 4 | RLS | RLS es Row Level Security, un mecanismo de Postgres para aplicar politicas por fila. En practicas empresariales se define con reglas explícitas de lectura y escritura, usando roles y claims de autenticacion. Permite exponer datos por API minimizando riesgos y cumpliendo principios de minimo privilegio. En Supabase, RLS se habilita por tabla y se acompana de politicas que permiten solo las operaciones necesarias. |
| 5 | Supabase | Supabase es una plataforma backend con Postgres administrado, autenticacion, almacenamiento y APIs REST/Realtime. En estandares de la industria se utiliza para acelerar prototipos manteniendo buenas practicas de seguridad, como uso de service keys en backend y anon keys en frontend. Para este proyecto, Supabase almacena la tabla tickets, soporta actualizaciones y habilita realtime para el dashboard. |
| 6 | LangChain | LangChain es un framework para orquestar LLMs, prompts y cadenas de procesamiento. En el estandar de la industria se usa para modularizar prompts, manejar memoria, parsear salidas y conectar herramientas. Facilita mantener trazabilidad del prompt y separar la logica del proveedor de modelo. En este flujo, LangChain ayuda a construir el prompt JSON y a invocar el modelo de Hugging Face de forma consistente. |
| 7 | Hugging Face | Hugging Face es un hub de modelos y una plataforma para ejecutar inferencia. En la industria se usa para acceder a modelos abiertos, comparar rendimiento y desplegar endpoints. Permite seleccionar modelos adecuados segun costo, latencia y calidad. Para este microservicio, se usa un modelo compatible con LangChain, con token de API y limites definidos, devolviendo la clasificacion en formato JSON. |
{
"category": "Tecnico",
"sentiment": "Negativo",
"processed": true
}
Entregable: URL publica de la API y codigo fuente dentro de /python-api.