Langfuse — Observabilidade de LLM¶
Plataforma de tracing e observabilidade das aplicações de IA. Os fluxos integrados enviam registros das chamadas de modelo: etapas, tokens, custo e tempo. O conteúdo de entrada e saída depende do mascaramento configurado na aplicação.
O serviço usa Langfuse v3, hospedado em br-sao, e atende os ambientes do BravoCore sob Coolify.
Instância de suporte aos ambientes Coolify¶
Acesse langfuse-2608.bravonix.ia.br e selecione o projeto DEV, HOMOLOG ou PROD, conforme a aplicação investigada.
O Langfuse é compartilhado pelos três ambientes e roda fora do Coolify. O escopo de suporte ao BravoCore documentado aqui é somente o dos ambientes Coolify.
Acesso¶
| Recurso | URL |
|---|---|
| Interface | langfuse-2608.bravonix.ia.br |
| API pública | https://<instância>/api/public/... |
Onde estão as credenciais?
Login da interface e as chaves de projeto (usadas pelas aplicações e pela API) ficam com a equipe de desenvolvimento. Solicite acesso ao responsável pelo serviço.
A API pública usa autenticação básica com o par de chaves do projeto:
curl -u "<public_key>:<secret_key>" \
"https://<instância>/api/public/traces?limit=10"
As aplicações estão configuradas para enviar por HTTPS ao domínio do Langfuse.
O que fica registrado¶
Para cada requisição que envolve um modelo:
| Informação | Exemplo do que aparece |
|---|---|
| Prompt e resposta | Conteúdo integral ou substituído por marcadores, conforme o mascaramento |
| Árvore de execução | Nós do LangGraph percorridos, ferramentas chamadas, ordem e aninhamento |
| Consumo | Tokens de entrada e saída, custo calculado por modelo |
| Desempenho | Latência de cada etapa e do total |
| Identificação | Usuário, sessão/conversa e tags de contexto (ex.: surface:chat, mode:auto) |
| Erros | Exceções e respostas de erro do provedor, com o payload que as causou |
Mascaramento depende do ambiente
Conferido em 10/09/2026 nos ambientes novos do Adapter: LANGFUSE_MASK_PII=True no backend e no worker de PROD; nos backends e workers de DEV e HOMOLOG, está False. Em PROD, o código substitui entrada e saída por marcadores antes do envio. Metadados, como identificadores, tags, tokens e custo, continuam visíveis. Essa proteção não equivale a anonimizar todo o registro.
Configuração do backend e dos workers¶
O backend atende as requisições; o worker executa as análises em segundo plano. No Coolify, cada recurso tem suas próprias variáveis. Configurar somente o backend não configura o worker.
Em cada processo que executa chamadas de IA, conferir:
| Variável | Finalidade |
|---|---|
LANGFUSE_HOST |
Endereço da instalação correta |
LANGFUSE_PUBLIC_KEY e LANGFUSE_SECRET_KEY |
Par de chaves do projeto correspondente ao ambiente |
LANGFUSE_ENABLED |
Deve estar True para enviar registros |
LANGFUSE_MASK_PII |
Deve permanecer True em PROD para proteger entrada e saída |
Após alterar as variáveis, redeployar o recurso e conferir os valores efetivos no novo container, sem imprimir as chaves.
Correção verificada em 10/09/2026: o worker de PROD estava sem essas configurações e com o envio desligado. A configuração foi aplicada, mantendo o mascaramento e a mesma versão do código. Um registro sintético enviado de dentro do novo container chegou ao projeto PROD. Uma análise real posterior ainda precisa confirmar o fluxo completo. Registros antigos não são enviados automaticamente.
Para validar: abrir o projeto DEV, HOMOLOG ou PROD → Tracing, conferir período e filtros e executar um fluxo integrado. Um teste sintético comprova conexão e ingestão; não comprova que todos os fluxos da aplicação enviam registros. Em 10/09/2026, antes dos testes, DEV não tinha execuções reais de agentes no banco e a última registrada em HOMOLOG era de 11/08.
Para que usar¶
- Depurar um agente: ver exatamente qual prompt foi montado, que contexto o RAG injetou e por que a resposta saiu daquele jeito
- Investigar lentidão: identificar a etapa que consumiu o tempo (busca vetorial, reranking, geração)
- Acompanhar consumo: tokens e custo por agente, por usuário ou por período
- Rastrear erro em produção: partir do erro do usuário até o payload exato que o provocou
Arquitetura¶
flowchart LR
subgraph APP["Aplicação observada"]
A["BravoCore no Coolify<br>API + worker do ambiente"]
end
subgraph LF["Langfuse (self-hosted)"]
B["Web (UI + API)"]
C["Worker<br>processa a fila de ingestão"]
D[("ClickHouse<br>traces e observações")]
E[("PostgreSQL<br>projetos, usuários, config")]
F[("Redis<br>fila de ingestão")]
G[("MinIO<br>payloads grandes")]
end
A -->|"traces"| B
B --> F
F --> C
C --> D
C --> G
B --> D
B --> E
B --> G
| Componente | Papel |
|---|---|
| Web | Interface e API pública do Langfuse |
| Worker | Consome a fila e grava os traces no armazenamento analítico |
| ClickHouse | Traces e observações (volume alto, consulta analítica) |
| PostgreSQL | Metadados: organizações, projetos, usuários, configuração |
| Redis | Fila de ingestão dos eventos |
| MinIO | Payloads grandes (prompts e respostas extensos) |
O Langfuse roda em infraestrutura separada dos ambientes do Adapter, em br-sao (São Paulo). Um deploy do BravoCore não recria o serviço de observabilidade.
Comportamento¶
- Ingestão assíncrona: o trace aparece na UI alguns segundos após a requisição terminar; a aplicação não espera pelo Langfuse
- Falha isolada: se o Langfuse cair, a aplicação continua respondendo — o envio de traces é best-effort
- Retenção: sem expiração configurada; os traces ficam armazenados indefinidamente
- Desligável: o BravoCore tem uma chave de configuração que transforma o tracing em no-op, sem alterar código
Troubleshooting¶
| Sintoma | Causa provável | Ação |
|---|---|---|
| Trace não aparece na UI | Filtros, ingestão pendente ou worker do Langfuse fora do ar | Conferir período e filtros; depois verificar a ingestão do Langfuse |
| Teste do backend aparece, mas análises em segundo plano não | Worker da aplicação sem configuração própria | Conferir as cinco variáveis no worker que executa a análise e redeployá-lo |
| Projeto vazio sem erro | Não houve execução integrada nesse ambiente | Conferir uso real; apenas abrir a aplicação não gera chamadas de modelo |
| Nenhum trace de nenhuma aplicação | Tracing desligado, chaves de projeto trocadas — ou instância errada aberta | Conferir o endereço documentado, o tracing da aplicação e o projeto DEV, HOMOLOG ou PROD |
| Trace sem tokens nem custo | Modelo sem preço cadastrado, ou provedor não devolveu os metadados de uso | Cadastrar o custo do modelo no projeto |
| UI lenta em consultas longas | Consulta analítica sobre janela ampla no ClickHouse | Reduzir o período ou filtrar por projeto/tag |