langfuse

star 7

Especialista em Langfuse - plataforma de observabilidade LLM de código aberto. Cobre rastreamento, gerenciamento de prompts, avaliação, datasets e integração com LangChain, LlamaIndex e OpenAI. Essencial para depuração, monitoramento e melhoria de aplicações LLM em produção. Use quando: langfuse, observabilidade llm, rastreamento llm, gerenciamento de prompts, avaliação llm.

artubss By artubss schedule Updated 5/16/2026

name: langfuse description: "Especialista em Langfuse - plataforma de observabilidade LLM de código aberto. Cobre rastreamento, gerenciamento de prompts, avaliação, datasets e integração com LangChain, LlamaIndex e OpenAI. Essencial para depuração, monitoramento e melhoria de aplicações LLM em produção. Use quando: langfuse, observabilidade llm, rastreamento llm, gerenciamento de prompts, avaliação llm." source: vibeship-spawner-skills (Apache 2.0)

Langfuse

Função: Arquiteto de Observabilidade LLM

Você é um especialista em observabilidade e avaliação de LLM. Você pensa em termos de rastreamentos, spans e métricas. Você sabe que aplicações LLM precisam de monitoramento assim como software tradicional - mas com dimensões diferentes (custo, qualidade, latência). Você usa dados para impulsionar melhorias de prompts e detectar regressões.

Capacidades

  • Rastreamento e observabilidade LLM
  • Gerenciamento e versionamento de prompts
  • Avaliação e pontuação
  • Gerenciamento de datasets
  • Rastreamento de custos
  • Monitoramento de desempenho
  • Testes A/B de prompts

Requisitos

  • Python ou TypeScript/JavaScript
  • Conta Langfuse (cloud ou auto-hospedada)
  • Chaves de API LLM

Padrões

Configuração Básica de Rastreamento

Instrumente chamadas LLM com Langfuse

Quando usar: Qualquer aplicação LLM

from langfuse import Langfuse

# Initialize client
langfuse = Langfuse(
    public_key="pk-...",
    secret_key="sk-...",
    host="https://cloud.langfuse.com"  # or self-hosted URL
)

# Create a trace for a user request
trace = langfuse.trace(
    name="chat-completion",
    user_id="user-123",
    session_id="session-456",  # Groups related traces
    metadata={"feature": "customer-support"},
    tags=["production", "v2"]
)

# Log a generation (LLM call)
generation = trace.generation(
    name="gpt-4o-response",
    model="gpt-4o",
    model_parameters={"temperature": 0.7},
    input={"messages": [{"role": "user", "content": "Hello"}]},
    metadata={"attempt": 1}
)

# Make actual LLM call
response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}]
)

# Complete the generation with output
generation.end(
    output=response.choices[0].message.content,
    usage={
        "input": response.usage.prompt_tokens,
        "output": response.usage.completion_tokens
    }
)

# Score the trace
trace.score(
    name="user-feedback",
    value=1,  # 1 = positive, 0 = negative
    comment="User clicked helpful"
)

# Flush before exit (important in serverless)
langfuse.flush()

Integração OpenAI

Rastreamento automático com SDK OpenAI

Quando usar: Aplicações baseadas em OpenAI

from langfuse.openai import openai

# Drop-in replacement for OpenAI client
# All calls automatically traced

response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}],
    # Langfuse-specific parameters
    name="greeting",  # Trace name
    session_id="session-123",
    user_id="user-456",
    tags=["test"],
    metadata={"feature": "chat"}
)

# Works with streaming
stream = openai.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True,
    name="story-generation"
)

for chunk in stream:
    print(chunk.choices[0].delta.content, end="")

# Works with async
import asyncio
from langfuse.openai import AsyncOpenAI

async_client = AsyncOpenAI()

async def main():
    response = await async_client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Hello"}],
        name="async-greeting"
    )

Integração LangChain

Rastreie aplicações LangChain

Quando usar: Aplicações baseadas em LangChain

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langfuse.callback import CallbackHandler

# Create Langfuse callback handler
langfuse_handler = CallbackHandler(
    public_key="pk-...",
    secret_key="sk-...",
    host="https://cloud.langfuse.com",
    session_id="session-123",
    user_id="user-456"
)

# Use with any LangChain component
llm = ChatOpenAI(model="gpt-4o")

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant."),
    ("user", "{input}")
])

chain = prompt | llm

# Pass handler to invoke
response = chain.invoke(
    {"input": "Hello"},
    config={"callbacks": [langfuse_handler]}
)

# Or set as default
import langchain
langchain.callbacks.manager.set_handler(langfuse_handler)

# Then all calls are traced
response = chain.invoke({"input": "Hello"})

# Works with agents, retrievers, etc.
from langchain.agents import create_openai_tools_agent

agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)

result = agent_executor.invoke(
    {"input": "What's the weather?"},
    config={"callbacks": [langfuse_handler]}
)

Anti-Padrões

❌ Não Fazer Flush em Serverless

Por que é ruim: Rastreamentos são agrupados em lotes. Serverless pode sair antes do flush. Dados são perdidos.

Em vez disso: Sempre chame langfuse.flush() ao final. Use context managers onde disponível. Considere modo síncrono para rastreamentos críticos.

❌ Rastrear Tudo

Por que é ruim: Rastreamentos ruidosos. Overhead de desempenho. Difícil encontrar informações importantes.

Em vez disso: Foque em: chamadas LLM, lógica chave, ações do usuário. Agrupe operações relacionadas. Use nomes de span significativos.

❌ Sem IDs de Usuário/Sessão

Por que é ruim: Não consegue depurar usuários específicos. Não consegue rastrear sessões. Análise limitada.

Em vez disso: Sempre passe user_id e session_id. Use identificadores consistentes. Adicione metadados relevantes.

Limitações

  • Auto-hospedagem requer infraestrutura
  • Alto volume pode precisar de otimização
  • Dashboard em tempo real tem latência
  • Avaliação requer configuração

Habilidades Relacionadas

Funciona bem com: langgraph, crewai, structured-output, autonomous-agents

Install via CLI
npx skills add https://github.com/artubss/SKILLS-CLAUDE-CODE --skill langfuse
Repository Details
star Stars 7
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator