12-02-01 — LangSmith e Langfuse

⏱ 12 minFontes validadas em: 2026-04-29

TL;DR

LangSmith (LangChain) e Langfuse (open-source) sao as duas plataformas lideres de observabilidade para LLMs. LangSmith e melhor se voce usa LangChain/LangGraph e quer integracao zero-config. Langfuse e melhor se voce quer self-host, usa qualquer framework ou precisa de flexibilidade no stack. Ambas suportam tracing, evals, datasets e prompt management.

LangSmith

LangSmith e a plataforma de observabilidade da LangChain. Criada primariamente para aplicacoes LangChain/LangGraph, mas funciona com qualquer framework via SDK.

Setup em 5 minutos

import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "lsv2_..."
os.environ["LANGCHAIN_PROJECT"] = "sales-agent-prod"

# Pronto. Qualquer chain LangChain agora e trackeada automaticamente.
from langchain_openai import AzureChatOpenAI
from langchain_core.messages import HumanMessage

llm = AzureChatOpenAI(
    azure_deployment="gpt-4o",
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_key=os.environ["AZURE_OPENAI_KEY"],
)

# Esta chamada aparece no LangSmith com trace completo
response = llm.invoke([HumanMessage(content="Analise as vendas do Q1")])

Funcionalidades principais do LangSmith

  • Run tree: Visualizacao hierarquica de cada execucao com latencia por etapa
  • Datasets: Curadoria de exemplos (input/output) para evals
  • Evaluators: Executar LLM-as-judge ou criterios customizados sobre runs
  • Prompt Hub: Versionamento e gerenciamento de prompts com pull/push via SDK
  • Monitoring: Dashboards de latencia, custo e taxa de erro em tempo real

LangSmith para avaliacao

from langsmith import Client
from langsmith.evaluation import evaluate, LangChainStringEvaluator

client = Client()

# Criar dataset de teste
dataset = client.create_dataset("vendas-qa-v1")
client.create_examples(
    inputs=[
        {"question": "Qual o ticket medio em SP no Q1?"},
        {"question": "Clientes abaixo de 70% da meta?"},
    ],
    outputs=[
        {"answer": "R$ 45.230,00"},
        {"answer": "3 clientes: ACME, Globo, Vale"},
    ],
    dataset_id=dataset.id
)

# Executar avaliacao
results = evaluate(
    lambda inputs: meu_agente(inputs["question"]),
    data="vendas-qa-v1",
    evaluators=[
        LangChainStringEvaluator("qa", config={"llm": llm}),
        LangChainStringEvaluator("criteria", config={"criteria": "conciseness"}),
    ],
    experiment_prefix="gpt4o-v2",
)

Langfuse

Langfuse e open-source (MIT), self-hostavel via Docker, e framework-agnostico. E a escolha para times que precisam de controle total sobre os dados de observabilidade ou que nao usam LangChain.

Setup (Python SDK)

from langfuse import Langfuse
from langfuse.decorators import observe, langfuse_context

# Configuracao via env vars
# LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_HOST

langfuse = Langfuse()

@observe()  # decorator: tracka automaticamente a funcao como um span
def retrieve_docs(query: str) -> list:
    # Logica de retrieval
    docs = vector_store.similarity_search(query, k=5)
    
    # Adicionar metadados ao span atual
    langfuse_context.update_current_observation(
        metadata={"docs_retrieved": len(docs)},
        input=query,
        output=[d.page_content[:100] for d in docs]
    )
    return docs

@observe()
def gerar_resposta(query: str, docs: list) -> str:
    langfuse_context.update_current_trace(
        user_id="user_123",
        session_id="session_abc",
        tags=["producao", "sales-agent"]
    )
    
    response = openai_client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "Voce e um assistente de vendas..."},
            {"role": "user", "content": f"Contexto: {docs}\n\nPergunta: {query}"}
        ]
    )
    
    # Registrar uso de tokens manualmente se necessario
    langfuse_context.update_current_observation(
        usage={"input": response.usage.prompt_tokens, 
               "output": response.usage.completion_tokens}
    )
    
    return response.choices[0].message.content

Self-host com Docker Compose

# docker-compose.yml para Langfuse self-hosted
# version: '3'
# services:
#   langfuse-server:
#     image: langfuse/langfuse:latest
#     ports: ["3000:3000"]
#     environment:
#       - DATABASE_URL=postgresql://postgres:password@db:5432/langfuse
#       - NEXTAUTH_SECRET=your_secret
#       - SALT=your_salt
#   db:
#     image: postgres:15
#     environment:
#       POSTGRES_PASSWORD: password

# Alternativa: deploy no Azure Container Apps (recomendado para producao)

Comparativo: LangSmith vs Langfuse

CriterioLangSmithLangfuse
LicencaProprietario (SaaS)Open-source (MIT) + SaaS
Self-hostEnterprise only✅ Gratuito
Integracao LangChain✅ Nativa, zero-config✅ Boa, via SDK
Frameworks suportadosLangChain primeiro, outros via SDKQualquer (agnostico)
Eval integrado✅ Completo✅ Completo
Prompt management✅ Prompt Hub✅ Langfuse Prompts
Preco (SaaS free tier)5.000 traces/mes50.000 traces/mes
LGPD / dados no BrasilDados na nuvem LangChain (EUA)Self-host = dados locais
💡 Recomendacao para empresas .NET
Se o stack e majoritariamente Azure + Semantic Kernel, prefira Azure Monitor + App Insights (ver 12-02-02) com Langfuse como complemento para analise de qualidade. LangSmith faz mais sentido se voce usa LangChain/Python extensivamente.

Como isso se conecta

  • 12-01-02 Tracing: Ambas as ferramentas consomem traces OTLP do padrao GenAI
  • 12-03-02 Avaliacoes offline: LangSmith e Langfuse tem eval frameworks integrados
  • 12-02-02 Azure Monitor: Para stacks Microsoft, Azure Monitor complementa ou substitui essas ferramentas
  • 06 Frameworks: LangSmith e o observability companion natural de LangChain/LangGraph

Fontes

  1. LangSmith Documentation — Tracing, Evaluation and Monitoring (2025)
  2. Langfuse Documentation — Open-source LLM observability (2025)
  3. Langfuse Blog — Langfuse 2.0: Datasets, evals and prompt management (2024)