Langfuse — Plataforma open source de engineering LLM
Langfuse es la plataforma open source de referencia para trazas LLM, Prompts, evaluaciones y datasets. Instrumenta tu Agent con el SDK u OpenTelemetry y obtén depuración y evaluación de nivel producción.
Why Langfuse
Langfuse gana en profundidad de trazas e integración de evals. Un Agent multi-paso con retrieval, tool calls y llamadas LLM produce un árbol de spans anidados en el que puedes profundizar — entrada/salida a cada nivel, costo y latencia agregados, errores adjuntos al span correcto. Es lo más cercano a un "APM para apps LLM" que tiene el ecosistema.
La plataforma agrupa cuatro productos estrechamente vinculados: trazas, gestión de Prompts (Prompts versionados con labels de despliegue), evaluaciones (LLM-as-judge, feedback de usuario, scores custom) y datasets (curar ejemplos desde trazas reales, replay sobre nuevos Prompts). Encajan porque comparten el mismo modelo de traza — sin exports/imports CSV entre herramientas.
Donde Langfuse pide más que Helicone: tienes que instrumentar. O bien añades el decorador del SDK a tus funciones, o configuras OpenTelemetry. Para codebases existentes que puedan dedicar una tarde a instrumentar, el payoff son datos órdenes de magnitud más ricos que la observabilidad basada en proxy.
Quick Start — Python SDK with OpenAI
El decorador @observe() crea un span para cualquier función. langfuse.openai envuelve al SDK de OpenAI, de modo que cada llamada se convierte en un span hijo automático con prompt, respuesta, uso y costo. Para proveedores no-OpenAI, usa el SDK genérico de Langfuse o la instrumentación OpenTelemetry.
# pip install langfuse openai
import os
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-lf-..."
os.environ["LANGFUSE_SECRET_KEY"] = "sk-lf-..."
os.environ["LANGFUSE_HOST"] = "https://cloud.langfuse.com" # or self-host URL
# The drop-in: langfuse-wrapped OpenAI client → every call auto-traced
from langfuse.openai import openai # instead of: from openai import OpenAI
client = openai.OpenAI()
def greet(name: str) -> str:
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"Greet {name} in one sentence."}],
name="greet", # span name shown in Langfuse UI
)
return resp.choices[0].message.content
# Trace a whole agent turn with nested spans
from langfuse.decorators import observe
@observe()
def agent(user_msg: str) -> str:
greeting = greet("William") # nested LLM span
return f"{greeting}\nYou said: {user_msg}"
print(agent("Hello from Langfuse"))
# Langfuse UI now shows a tree: agent → greet (LLM call, prompt/response, cost, latency).Características clave
Modelo de trazas anidadas
Spans padre/hijo capturan Agents multi-paso: retrievers, tool calls, llamadas LLM encadenadas. Profundiza en cada span para input/output/costo/latencia.
Gestión de Prompts
Prompts almacenados como objetos versionados con labels (production/staging/dev). Referenciados por nombre desde el código; despliega versiones nuevas sin redeploy.
Evals LLM-as-judge
Configura Prompts de eval que puntúan salidas en ejes (utilidad, factualidad, apego al formato). Los scores se adjuntan a las trazas automáticamente.
Datasets desde producción
Promueve trazas reales a datasets. Replayéalos sobre nuevos Prompts o modelos para medir regresión antes del despliegue.
Captura de feedback de usuario
Adjunta thumbs-up/down o feedback de texto libre a trace IDs. Rebana métricas por sentimiento de usuario para encontrar regresiones rápido.
Compatible con OpenTelemetry
Ingiere trazas OTEL desde cualquier framework instrumentado (LangChain, LlamaIndex, CrewAI, custom). Funciona junto a tu tooling APM existente.
Comparación
| Trace Depth | Evals | Prompt Mgmt | Deployment | |
|---|---|---|---|---|
| Langfuseesta | Nested spans + OTEL | Built-in LLM-as-judge | First-class | Cloud + self-host (free OSS) |
| Helicone | Per-request (flat) | Via experiments | Yes | Cloud + self-host |
| Arize Phoenix | Span-level (OTEL native) | Strong eval suite | Via playground | Cloud + self-host |
| Portkey | Request-level + metadata | Limited | Yes (strong) | Cloud + self-host gateway |
Casos de uso
01. Debug de Agents en producción
Las trazas anidadas son invaluables cuando un Agent multi-paso produce una salida errónea — ves qué tool call devolvió datos malos, no solo "la respuesta final está mal".
02. Workflows de prompt engineering
Promueve una traza real de producción a dataset, itera sobre Prompts en el playground de Langfuse, corre evals antes de desplegar. El ida y vuelta entre "bug report" y "Prompt corregido" es días más rápido que con herramientas separadas.
03. Self-host enterprise
La stack completa es MIT. Equipos con requisitos de residencia de datos despliegan Langfuse en su propio cloud y apuntan sus Agents allí — ningún dato sale de su perímetro.
Precios y licencia
Langfuse: open source MIT. Self-host gratis — paridad funcional completa con el cloud (excepto upgrades gestionados y soporte).
Langfuse Cloud: tier gratuito para dev; planes de pago por volumen de eventos. Enterprise añade SSO, SAML, SOC 2, soporte dedicado y automatización de despliegue. Precios en langfuse.com/pricing.
Costo de infra para self-host: Postgres + ClickHouse + worker. Carga ops moderada; el docker-compose OSS te pone en marcha en 15 minutos para dev. El scale-out en producción requiere familiaridad con ClickHouse.
Activos relacionados en TokRepo
langfuse-mcp — Query Langfuse Traces via MCP
Connect Langfuse observability to Claude Code/Codex via MCP: fetch traces, prompts, and datasets (37 tools). Works with Langfuse Cloud or self-hosted.
Langfuse Python SDK — Trace LLM Apps
Langfuse Python SDK adds tracing and observability to any LLM app via decorators or low-level calls, so you can track latency, cost, and prompts.
Langfuse Self-Hosting — Production Docker Compose Stack
Production Docker Compose for self-hosted Langfuse v3. Postgres, Clickhouse, Redis, MinIO, Worker, Web. Auth, S3 logs, daily backup.
Langfuse Prompt Management — Versioned Prompts + A/B Tests
Langfuse Prompt Management versions, labels, and A/B tests prompts. Edit in UI, fetch via SDK, swap models without code deploys.
Preguntas frecuentes
¿Necesito reescribir mi código para usar Langfuse?+
Para callers de OpenAI, no — solo intercambia el import (langfuse.openai en lugar de openai) y todas las llamadas quedan trazadas. Para proveedores custom o frameworks de Agents, añade el decorador @observe a las funciones o configura OpenTelemetry. Menos zero-touch que Helicone, más profundidad de instrumentación.
¿Langfuse vs Arize Phoenix?+
Ambas son observabilidad LLM open source. Langfuse es más una plataforma completa (trazas + Prompts + evals + datasets estrechamente ligados); Phoenix se centra más en notebooks y experimentación de evals. Langfuse para ops de producción; Phoenix para workflows de researcher / data scientist.
¿Langfuse funciona con LangChain / LlamaIndex / CrewAI?+
Sí — integraciones callback first-class para cada uno. Los usuarios de LangChain LangSmith suelen coexistir con Langfuse (Langfuse para las trazas OSS, LangSmith para el gestionado).
¿Cómo funcionan los evals LLM-as-judge?+
Defines un Prompt de eval que puntúa salidas en algún eje (por ej. "califica la factualidad de este resumen del 1 al 5"). Langfuse corre la eval contra las trazas (offline u online), adjunta los scores a las trazas y muestra los agregados en dashboards. Bueno para monitoreo continuo de calidad.
¿Langfuse self-hosted está listo para producción?+
Sí — usado por muchos equipos en producción. Requiere Postgres + ClickHouse + Redis. Hay docker-compose para dev; los despliegues de producción suelen usar Kubernetes con Postgres gestionado + ClickHouse Cloud o ClickHouse self-hosted.