Langfuse é uma plataforma open source de observabilidade para aplicações com LLMs. Funciona como um “APM para IA”: registra cada chamada ao modelo, permite analisar custo, latência e qualidade, e facilita debugging em produção.
Conceitos
- Trace: representa uma execução completa (ex: uma requisição do usuário)
- Span: etapa dentro de um trace (ex: chamada ao LLM, busca no vector store)
- Generation: span específico de uma chamada a um LLM (registra prompt, resposta, tokens, custo)
- Score: avaliação de qualidade atribuída a um trace (manual ou automática)
- Session: agrupa múltiplos traces de uma mesma conversa
Trace (requisição do usuário)
└── Span: busca vetorial
└── Generation: chamada ao GPT-4o
├── input: prompt
├── output: resposta
├── tokens: 1.2k
└── custo: $0.003
Instalação e uso (Python)
pip install langfusefrom langfuse import Langfuse
from langfuse.decorators import observe, langfuse_context
langfuse = Langfuse()
@observe()
def minha_funcao_com_llm(pergunta: str) -> str:
# qualquer chamada a LLM aqui é rastreada automaticamente
resposta = openai_client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": pergunta}]
)
return resposta.choices[0].message.contentIntegrações
| Ferramenta | Suporte |
|---|---|
| OpenAI SDK | nativo (drop-in wrapper) |
| Anthropic SDK | nativo |
| LangChain | callback handler |
| LlamaIndex | callback handler |
| LiteLLM | integração nativa |
# Drop-in para OpenAI
from langfuse.openai import openai # substitui o import original
# Todo o uso do client é rastreado automaticamenteDeploy self-hosted
# docker-compose.yml
services:
langfuse-server:
image: langfuse/langfuse:latest
environment:
DATABASE_URL: postgresql://...
NEXTAUTH_SECRET: ...
SALT: ...
ports:
- "3000:3000"
db:
image: postgres:16Self-hosted vs Cloud
| Self-hosted | Cloud (langfuse.com) | |
|---|---|---|
| Custo | infra própria | free tier + pago |
| Privacidade | dados locais | dados no servidor deles |
| Manutenção | você gerencia | gerenciado |
Ver também: llm | openrouter