Langfuse self-hosted: rastreamento de LLMs com Docker

Langfuse self-hosted com Docker é a forma mais direta de rastrear chamadas de LLM, avaliar prompts e entender onde seu agente quebra. Veja como subir.

Langfuse self-hosted: rastreamento de LLMs com Docker
Neste artigo
  1. O que é o Langfuse
  2. Por que o Langfuse self-hosted faz sentido
  3. Quando o rastreamento de LLM faz diferença
  4. O que o Langfuse rastreia na prática
  5. Como subir o Langfuse com Docker Compose
  6. Integrando com sua aplicação
  7. Langfuse vs alternativas
  8. O que você perde sem rastreamento de LLM
  9. Perguntas frequentes
  10. Conclusão

Você subiu um agente que parecia funcionar no desenvolvimento, botou em produção e agora recebe reclamação de resposta estranha. O problema: você não tem log nenhum das chamadas ao LLM. O Langfuse self-hosted resolve exatamente esse buraco, e você consegue subir em menos de dez minutos com Docker Compose.

O que é o Langfuse

Langfuse é uma plataforma open source de observabilidade para LLMs. Ele rastreia cada chamada ao modelo com o prompt completo, a resposta, o tempo de execução, o custo estimado, e permite anotar e avaliar esses resultados depois.

Não é um substituto para Prometheus ou Grafana. Se você já configurou monitoramento de infraestrutura com Prometheus e Grafana, sabe que essas ferramentas cuidam de métricas de sistema. O Langfuse cuida do que acontece dentro da chamada ao LLM.

Por que o Langfuse self-hosted faz sentido

A versão cloud do Langfuse existe e funciona. Mas para a maioria dos projetos com volume moderado, self-hosted é a escolha certa por três razões:

  • Seus prompts e respostas ficam no seu servidor, não em infraestrutura de terceiro
  • O custo operacional é basicamente zero além do que você já tem rodando
  • Você controla retenção de dados e acesso sem depender de política de terceiro

Se você já tem uma VPS com Docker, não tem motivo para pagar cloud quando o Langfuse self-hosted cobre tudo que você precisa.

Quando o rastreamento de LLM faz diferença

Tem projeto que vai bem sem isso por meses. O problema aparece quando:

  • Um usuário reclama de uma resposta específica e você não tem como reproduzir
  • O custo de API sobe e você não sabe qual chamada está custando mais
  • Você muda o prompt e não tem base para comparar se melhorou ou piorou
  • Você opera com múltiplos modelos e quer comparar qualidade de resposta lado a lado

Qualquer um desses cenários é sinal de falta de visibilidade. E monitorar custo e latência de LLMs fica impossível sem saber exatamente o que está sendo chamado.

O que o Langfuse rastreia na prática

Traces e spans

Cada chamada ao modelo vira um "trace" com um ou mais "spans". Se você tem um agente que faz três chamadas em sequência, o Langfuse mostra as três em ordem, com o tempo de cada uma e o custo associado. Dá para enxergar onde a latência está concentrada sem precisar cruzar logs na mão.

Prompts versionados

O Langfuse tem um gerenciador de prompts integrado. Você versiona seus prompts lá dentro e faz referência no código. Quando muda, a versão anterior fica registrada com todas as chamadas que a usaram. Facilita comparar comportamento antes e depois de qualquer alteração.

Avaliação de respostas

Você pode anotar respostas diretamente na interface ou configurar avaliadores automáticos que pontuam as respostas sem intervenção manual. Se quiser entender como esse processo de avaliação funciona no nível conceitual, o post sobre avaliação de respostas de LLM em produção cobre esse terreno bem.

Como subir o Langfuse com Docker Compose

Se você já tem Docker instalado, a sequência é rápida. A documentação oficial do Langfuse disponibiliza um docker-compose.yml pronto para uso:

Se você nunca montou um ambiente com Docker Compose, o post Docker Compose do zero cobre o que você precisa saber antes de chegar nessa etapa.

Uma coisa que engana: o .env.example tem variáveis que parecem opcionais mas não são em produção. Deixar NEXTAUTH_SECRET ou SALT com valor padrão levanta a instância, mas de forma insegura. Troca esses valores antes de expor a qualquer rede.

Ilustração de traces e spans: barras horizontais codificadas por cor representando duração de chamadas ao LLM, com cartão de prompt em destaque.
Visão de traces e spans para identificar latência.

Integrando com sua aplicação

O Langfuse tem SDK para Python e JavaScript. Para quem usa LangChain ou LlamaIndex, existem callbacks oficiais que fazem rastreamento automático sem mudar o código de chamada ao modelo. Para integração com Claude via API direta, você cria a trace manualmente antes da chamada e fecha ao final. Trabalho de alguns minutos.

O Langfuse é agnóstico a modelo. Funciona com OpenAI, Anthropic, Mistral e modelos locais via Ollama sem diferença de configuração.

Langfuse vs alternativas

Existem outras opções: LangSmith (cloud-first da Langchain), Helicone, Arize Phoenix, Braintrust.

Na minha visão, o Langfuse ganha pelo self-hosted funcional sem custo fixo. O LangSmith é uma boa escolha se você já está no ecossistema LangChain e aceita depender de SaaS. O Arize Phoenix é interessante para avaliações mais sofisticadas com datasets maiores. Para a maioria dos projetos, Langfuse resolve com sobra.

O que você perde sem rastreamento de LLM

Um agente sem rastreamento vai funcionar. O problema aparece quando você precisa debugar um comportamento que acontece em 5% das requisições, quando quer medir o impacto de uma mudança de prompt, ou quando o custo de API cresce e você não sabe onde.

Sem rastreamento, você opera no escuro. Para projetos pequenos isso pode ser aceitável por um tempo. Para qualquer coisa que vai para usuários reais, o risco cresce com o volume.

Perguntas frequentes

O Langfuse funciona com qualquer LLM?

Sim. O Langfuse é agnóstico a modelo. Funciona com OpenAI, Anthropic, Mistral, modelos locais via Ollama e qualquer API compatível. A integração é via SDK oficial ou chamada HTTP direta.

Precisa de banco de dados separado?

O docker-compose que o Langfuse disponibiliza já inclui PostgreSQL. Para ambiente de produção com volume alto, vale usar um banco externo gerenciado. Para projetos menores, o banco embutido no Compose resolve bem.

O Langfuse self-hosted escala bem?

Para volumes de até algumas dezenas de milhares de traces por dia, uma VPS com 2 vCPUs e 4 GB de RAM dá conta tranquilo. Acima disso, começa a valer ajustar configurações de banco e worker separadamente.

Tem limitação comparado ao cloud?

A versão self-hosted tem paridade quase total com o cloud. O que fica de fora são algumas features de Enterprise, como SSO e permissões granulares. Para a maioria dos casos de uso, self-hosted entrega tudo que você precisa.

Vale a pena para projetos pequenos?

Se é uso pessoal e pontual, provavelmente não vale o overhead de subir a infraestrutura. Se o projeto vai para usuários reais, mesmo que poucos, vale. O custo de não ter rastreamento aparece antes do que você espera.

Conclusão

Langfuse self-hosted é uma das ferramentas mais diretas para ganhar visibilidade sobre o que seu LLM está fazendo em produção. Não tem custo fixo além do servidor que você já tem, não é complexo de operar, e resolve uma lacuna real que aparece cedo em qualquer projeto com IA.

Se você ainda não tem rastreamento nenhum, começa por aqui. O setup é pequeno, e você vai querer ter feito isso antes do primeiro bug que chega de produção sem contexto nenhum para investigar.

Ação primária: suba o Langfuse no seu ambiente de testes essa semana. Leva menos de 15 minutos e o retorno aparece na primeira vez que você precisar debugar algo sem ter onde olhar.

Ação secundária: se você ainda não tem uma estratégia de avaliação de LLM, esse é o momento de montar as duas coisas juntas. Rastreamento sem avaliação é log. Rastreamento com avaliação é visibilidade de verdade.

WA in X
Cláudio Campos

Escrito por

Cláudio Campos

Cláudio Campos é engenheiro de software com foco em automação e IA aplicada, baseado em Florianópolis (SC). Escreve na SyntaxLab sobre agentes de IA, Docker, automação com n8n e engenharia de software que precisa funcionar em produção — não só em demo. Aprendeu na prática, com pipelines que quebraram no deploy e agentes que alucinaram ao vivo; por isso não romantiza a tecnologia e descreve as limitações reais antes de chegar nelas.