OperacionesAvanzado35 min
Observabilidad y Monitoreo IA
LangSmith · logging · trazas · métricas · debugging en producción
ObservabilityLoggingMonitoring
✓ Guía gratuita · Acceso completo
Mapa rápido · salta al paso que te interese
01
Métricas clave para apps de IA
| Métrica | Qué indica | Alerta si |
|---|---|---|
| Latencia P50/P95 | Tiempo de respuesta | > 5s P95 |
| Tokens/request | Coste por llamada | > threshold |
| Error rate | Fiabilidad | > 1% |
| Throughput | Capacidad | Caída súbita |
| User satisfaction | Calidad percibida | Thumbs down > 10% |
02
Logging estructurado para LLM calls
lib/ai/instrumented-client.ts
import Anthropic from '@anthropic-ai/sdk'
const anthropic = new Anthropic()
interface LLMLog {
timestamp: string
requestId: string
model: string
inputTokens: number
outputTokens: number
latencyMs: number
status: 'success' | 'error'
error?: string
}
export async function instrumentedChat(
messages: Array<{ role: string; content: string }>,
requestId: string
) {
const start = Date.now()
const log: Partial<LLMLog> = {
timestamp: new Date().toISOString(),
requestId,
model: 'claude-sonnet-4-20250514',
}
try {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages,
})
log.inputTokens = response.usage.input_tokens
log.outputTokens = response.usage.output_tokens
log.latencyMs = Date.now() - start
log.status = 'success'
// Enviar a tu sistema de logging
console.log(JSON.stringify(log))
return response
} catch (error) {
log.latencyMs = Date.now() - start
log.status = 'error'
log.error = error instanceof Error ? error.message : 'Unknown'
console.error(JSON.stringify(log))
throw error
}
}03
LangSmith para trazas visuales
.env.local
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=ls__...
LANGCHAIN_PROJECT=mi-proyecto-produccionlib/langsmith-client.ts
import { Client } from 'langsmith'
import { traceable } from 'langsmith/traceable'
import Anthropic from '@anthropic-ai/sdk'
const anthropic = new Anthropic()
// Wrapper traceable - aparece en LangSmith dashboard
export const generateResponse = traceable(
async (prompt: string) => {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages: [{ role: 'user', content: prompt }],
})
return response.content[0].type === 'text' ? response.content[0].text : ''
},
{ name: 'generate-response', run_type: 'llm' }
)
// Uso - automáticamente logueado a LangSmith
const result = await generateResponse('¿Qué es machine learning?')Tip Pro
LangSmith tiene tier gratuito generoso. Activa el tracing en desarrollo para entender el flujo de tus chains.
¿Quieres el sistema completo?
500+ páginas, 25 capítulos, código de producción, acceso a todas las guías del Arsenal.
Curso Completo · €29PayPal · Acceso inmediato