ObservabilityLangfuseDevOpsMonitoring

Observabilidade em Sistemas de IA: Como Debugar Agentes que Pensam

João Oliveira 2025-12-10 9 min

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.

Compartilhar artigo:

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.

Ver Mais Artigos