En pocas palabras
Observabilidad de aplicaciones y agentes LLM integrada con el ecosistema Datadog.
Qué problema resuelve
Poca visibilidad de errores, consumo y latencia entre llamadas a modelos y herramientas.
Cuándo utilizarlo
Equipos que ya operan Datadog. Ejemplo: investigar por qué aumentó el coste de un asistente.
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
La documentación actual agrupa estas capacidades bajo Agent Observability. Los spans representan inferencias, recuperación y herramientas; las trazas conectan una solicitud completa.
Ejemplo de uso
Comparar trazas de una versión anterior y una nueva: detectar una búsqueda repetida, más tokens de entrada y un aumento de duración. Asociar la regresión a la versión desplegada.
Tipos de span
| Tipo | Representa |
|---|---|
workflow |
Secuencia completa de una petición (el caso de uso) |
agent |
Ejecución de un agente con decisiones dinámicas |
llm |
Una llamada al modelo: prompt, respuesta, tokens, coste |
tool |
Invocación de una herramienta externa |
retrieval |
Búsqueda de documentos (RAG) con los resultados devueltos |
embedding |
Cálculo de embeddings |
task |
Paso interno sin LLM (parsing, validación) |
Instrumentación en Python
from ddtrace.llmobs import LLMObs
from ddtrace.llmobs.decorators import workflow, retrieval, tool
LLMObs.enable(ml_app="asistente-cobranza") # integraciones automáticas: OpenAI, Anthropic, LangChain, Bedrock…
@retrieval
def buscar_politicas(pregunta: str):
docs = vector_store.search(pregunta, k=5)
LLMObs.annotate(output_data=[{"text": d.text, "id": d.id, "score": d.score} for d in docs])
return docs
@tool
def consultar_saldo(credito_id: str) -> dict:
return api_cartera.saldo(credito_id)
@workflow
def responder(pregunta: str, cliente_id: str) -> str:
LLMObs.annotate(input_data=pregunta, tags={"canal": "whatsapp"})
contexto = buscar_politicas(pregunta)
return generar_respuesta(pregunta, contexto) # span llm automático
Las llamadas a los SDKs de proveedores soportados generan spans llm sin código adicional; los decoradores añaden la estructura de la aplicación.
Evaluaciones
| Tipo | Ejemplos |
|---|---|
| Integradas | Relevancia del tema, sentimiento, toxicidad, negativa a responder, intentos de prompt injection |
| Personalizadas | Puntuación enviada con LLMObs.submit_evaluation (por ejemplo, de LLM as a judge o de feedback del usuario) |
| Experimentos | Ejecutar una versión del prompt o del modelo sobre un dataset y comparar resultados |
Privacidad
Los prompts y respuestas pueden contener datos personales. Usa Sensitive Data Scanner para enmascarar patrones (documentos de identidad, tarjetas, correos) antes del almacenamiento, o redacta en la aplicación con Presidio antes de anotar.
Correlación con APM
La ventaja frente a herramientas específicas como Langfuse, LangSmith o Phoenix es la correlación con trazas APM, logs e infraestructura en la misma plataforma: una respuesta lenta del asistente puede seguirse hasta la base de datos o el servicio de cartera. A cambio, implica dependencia del proveedor y coste por volumen de spans.
Criterios de implementación
Comprobar integraciones automáticas y añadir spans manuales donde falten. Definir muestreo, redacción de datos y presupuesto; las métricas técnicas no sustituyen evaluaciones de calidad.
Continúa en las fuentes
Documentación oficial para verificar detalles y explorar más.