En pocas palabras
Plataforma de ingeniería de LLM con trazas, gestión de prompts, datasets y evaluaciones.
Qué problema resuelve
Dificultad para relacionar fallos de calidad con prompts, modelos y pasos del flujo.
Cuándo utilizarlo
Aplicaciones de IA en evolución. Ejemplo: comparar dos prompts de un asistente RAG.
De la idea a la práctica
Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.
En el Radar compartido: Trial (valoración de la edición aportada).
Cómo funciona
Instrumenta operaciones y sesiones con integraciones basadas en OpenTelemetry. Relaciona trazas con versiones de prompts, puntuaciones y experimentos sobre datasets.
Ejemplo de uso
Trazar recuperación y generación; etiquetar respuestas incorrectas y reunirlas en un dataset. Ejecutar ambas versiones del prompt y comparar relevancia, coste y latencia.
Modelo de datos
| Concepto | Descripción |
|---|---|
| Trace | Una petición completa de la aplicación |
| Observation | Paso dentro de la traza: span, generation (llamada al modelo), event |
| Session | Agrupa trazas de una conversación |
| Score | Puntuación numérica, booleana o categórica (usuario, evaluador, humano) |
| Prompt | Plantilla versionada con etiquetas (production, staging) |
| Dataset | Casos de prueba con entrada y salida esperada |
Instrumentación con el SDK de Python
from langfuse import observe, get_client
from langfuse.openai import openai # cliente envuelto: registra prompts, tokens y coste
langfuse = get_client()
@observe()
def buscar_contexto(pregunta: str) -> list[str]:
return vector_store.search(pregunta, k=4)
@observe()
def responder(pregunta: str, cliente_id: str) -> str:
langfuse.update_current_trace(user_id=cliente_id, session_id=f"chat-{cliente_id}")
prompt = langfuse.get_prompt("respuesta-cobranza", label="production")
contexto = buscar_contexto(pregunta)
res = openai.chat.completions.create(
model="gpt-4o-mini",
messages=prompt.compile(contexto="\n".join(contexto), pregunta=pregunta),
langfuse_prompt=prompt, # enlaza la generación con la versión del prompt
)
return res.choices[0].message.content
También hay integraciones para LangChain, LlamaIndex, LiteLLM, Vercel AI SDK y cualquier framework que emita OpenTelemetry.
Gestión de prompts
Los prompts se editan y versionan en Langfuse y la aplicación obtiene la versión con la etiqueta production. Cambiar un prompt no exige redeploy, y cada respuesta queda asociada a la versión que la generó, lo que permite comparar métricas entre versiones. El SDK cachea los prompts para no añadir latencia.
Evaluación continua
| Mecanismo | Uso |
|---|---|
| Feedback de usuario | Pulgar arriba/abajo enviado como score |
| Evaluadores LLM-as-a-judge | Puntuar automáticamente una muestra de trazas en producción (LLM as a judge) |
| Colas de anotación | Revisión humana con criterios definidos |
| Experimentos | Ejecutar un dataset contra una versión y comparar con otra |
Autoalojamiento
El núcleo es open source (licencia MIT). Un despliegue de producción necesita PostgreSQL (metadatos), ClickHouse (trazas y observaciones), Redis (colas) y almacenamiento de objetos; hay charts de Helm y guías para las principales nubes. Es una buena opción cuando los prompts contienen datos que no deben salir de la infraestructura propia.
Criterios de implementación
Redactar datos sensibles antes de enviarlos y definir retención. En despliegues v3, dimensionar componentes como ClickHouse, Redis y almacenamiento de objetos según la carga.
Continúa en las fuentes
Documentación oficial para verificar detalles y explorar más.