Alejandría

Busca en Alejandría

Plataformas

Langfuse

Plataforma de ingeniería de LLM con trazas, gestión de prompts, datasets y evaluaciones.

01

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.

02

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.