Observabilidade em Sistemas de IA: Como Debugar Agentes que Pensam
O Problema do Debug em Sistemas de IA
Você já tentou debugar por que um agente de IA tomou uma decisão errada? É frustrante:
- Não-determinismo: A mesma input pode gerar outputs diferentes
- Chains complexas: 15+ chamadas LLM encadeadas
- Latência misteriosa: Qual agente está lento?
- Custo invisível: Qual feature está gastando mais tokens?
Ferramentas tradicionais (logs, APM) não capturam a "cadeia de pensamento" dos agentes.
Nossa Solução: Observabilidade Nativa de LLM
Implementamos o Langfuse no OgmaVox para rastrear cada decisão dos agentes em tempo real.
O que Rastreamos
1. Traces Hierárquicos
Cada "sessão de usuário" vira um trace com sub-spans:
Session_123
├─ Audio Transcription (Whisper)
├─ Fact Extraction (GPT-4o)
│ ├─ Database Query
│ └─ Similarity Search (embeddings)
├─ Answer Generation (Claude 3.5)
└─ Response Streaming
2. Métricas por Modelo
Dashboard mostra:
- Latência P50/P95/P99 por modelo
- Custo total segregado por feature
- Token usage (input vs output)
- Taxa de erro e fallback triggers
3. Prompt Versioning
Cada prompt tem uma versão. Quando alteramos um prompt, comparamos métricas antes/depois automaticamente.
Exemplo Real: Mudança no prompt de fact extraction reduziu latência de 3.2s para 1.8s (-44%) mantendo qualidade.
Implementação com Langfuse
from langfuse import Langfuse
langfuse = Langfuse()
# Inicia um trace
trace = langfuse.trace(
name="audio_analysis",
user_id=user_id,
metadata={"audio_duration": duration_seconds}
)
# Adiciona spans para cada etapa
with trace.span(name="transcription") as span:
transcript = whisper_model.transcribe(audio)
span.update(output=transcript, metadata={"model": "whisper-large-v3"})
with trace.span(name="fact_extraction") as span:
facts = await gpt4_extract_facts(transcript)
span.update(
output=facts,
usage={"input_tokens": 1200, "output_tokens": 300},
cost=calculate_cost("gpt-4o", 1200, 300)
)
Alertas Inteligentes
Configuramos alertas para:
- Latência P95 > 5s por mais de 10 minutos
- Custo/usuário > $0.50 (threshold definido)
- Taxa de erro > 2%
Alertas vão direto para Slack com link para o trace específico.
Análise de Custos
Dashboard de custos mostra:
- Por Feature: Transcrição (45%), Análise (30%), Chat (25%)
- Por Usuário: Top 10 usuários por consumo
- Por Modelo: GPT-4o ($450/mês), Claude ($280/mês), Whisper ($90/mês)
Isso permitiu identificar que 8% dos usuários eram responsáveis por 47% dos custos (uploads de áudios muito longos). Implementamos limites.
Resultados
- Redução de 60% no tempo de investigação de bugs
- Economia de 23% em custos de API após otimizações guiadas por dados
- Aumento de 15% em user satisfaction após identificar gargalos de latência
Stack de Observabilidade
- Langfuse (self-hosted): Tracing de LLM calls
- Prometheus + Grafana: Métricas de infraestrutura
- Sentry: Error tracking tradicional
- PostHog: Product analytics
Conclusão
Observabilidade não é opcional em sistemas de IA. É a diferença entre "funciona na minha máquina" e um produto escalável. Se você está construindo com LLMs e não tem tracing, está voando cego.
Gostou deste artigo?
Vamos conversar sobre como podemos aplicar essas técnicas no seu projeto. Nossa equipe está pronta para transformar sua visão em realidade.