AI可观测平台对比:Langfuse vs Phoenix vs LangSmith vs Helicone

四大 LLM 可观测平台的 Tracing、评估、成本追踪与自托管方案对比 | 2026-02


一、为什么需要 LLM 可观测性

LLM 应用的调试和优化面临独特挑战:非确定性输出、多步推理链路、隐含的质量退化、难以预测的成本开销。传统的 APM(Application Performance Monitoring)工具无法覆盖这些需求。

LLM 可观测平台需要回答四个核心问题:

  1. 发生了什么?(Tracing:请求链路追踪)
  2. 质量如何?(Evaluation:输出评估)
  3. 花了多少钱?(Cost Tracking:成本追踪)
  4. 哪里可以优化?(Analytics:分析与改进)

二、产品定位

2.1 基础信息

维度 Langfuse Phoenix (Arize) LangSmith Helicone
公司 Langfuse GmbH Arize AI LangChain Inc. Helicone AI
开源 是(MIT) 是(Apache 2.0) 是(Apache 2.0)
核心定位 LLM 工程平台 ML + LLM 可观测 LangChain 原生 LLM 代理网关
语言 TypeScript Python Python TypeScript
自托管 是(Docker) 是(pip install) 是(Docker)

2.2 架构差异

Architecture Comparison

Langfuse:
  App -> Langfuse SDK -> Langfuse Server -> PostgreSQL + ClickHouse
            |                |
         Trace/Span     Web Dashboard
         Collection     (Traces, Evals, Cost, Prompts)

Phoenix (Arize):
  App -> OpenInference SDK -> Phoenix Server -> SQLite/PostgreSQL
            |                      |
         OTEL-based            Notebook-friendly
         Spans                 (Traces, Evals, Datasets)

LangSmith:
  App -> LangSmith SDK -> LangSmith Cloud -> Managed Storage
            |                   |
         LangChain          Web Dashboard
         native             (Traces, Datasets, Evals, Hub)

Helicone:
  App -> Helicone Proxy -> LLM Provider -> Helicone Server
            |                                    |
         Zero-code          Web Dashboard
         (URL swap)         (Logs, Cost, Cache, Rate Limit)

三、Tracing 能力

3.1 Tracing 特性对比

特性 Langfuse Phoenix LangSmith Helicone
自动追踪 装饰器/包装器 OpenInference LangChain 原生 代理层自动
手动追踪 是(SDK) 是(SDK) 是(SDK) 否(代理自动)
嵌套 Span 否(扁平)
LangChain 集成 回调 回调 原生(最深)
LlamaIndex 集成 回调 回调
OpenAI SDK 集成 包装器 仪器化 包装器 代理层
多语言 SDK Python/JS/API Python Python/JS REST API
OTEL 兼容 部分 是(原生)

3.2 集成代码对比

# Langfuse: Decorator-based tracing
from langfuse.decorators import observe, langfuse_context
from langfuse.openai import openai  # Drop-in replacement

@observe()
def rag_pipeline(query: str) -> str:
    # Step 1: Retrieve
    docs = retrieve_documents(query)

    # Step 2: Generate (auto-traced via langfuse.openai)
    response = openai.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "Answer based on context."},
            {"role": "user", "content": f"Context: {docs}\n\nQ: {query}"},
        ],
    )

    # Add custom metadata
    langfuse_context.update_current_observation(
        metadata={"doc_count": len(docs)},
    )

    return response.choices[0].message.content

# Every call to rag_pipeline() creates a trace in Langfuse
# Phoenix: OpenInference-based tracing
from phoenix.otel import register
from openinference.instrumentation.openai import OpenAIInstrumentor

# One-time setup
tracer_provider = register(project_name="my-rag-app")
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)

# Now all OpenAI calls are automatically traced
import openai
client = openai.OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}],
)
# Trace appears in Phoenix UI automatically
// Helicone: Zero-code proxy approach
import OpenAI from "openai";

// Just change the base URL - no SDK needed
const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: "https://oai.helicone.ai/v1",
  defaultHeaders: {
    "Helicone-Auth": `Bearer ${process.env.HELICONE_API_KEY}`,
    // Optional metadata
    "Helicone-Property-Environment": "production",
    "Helicone-Property-User-Id": "user-123",
  },
});

// All requests are now logged through Helicone
const response = await openai.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Hello" }],
});

四、评估体系

4.1 评估能力对比

维度 Langfuse Phoenix LangSmith Helicone
LLM-as-Judge
自定义评估器 是(Python) 是(Python) 是(Python)
人工标注 是(UI) 是(UI)
数据集管理 是(最完善)
批量评估
在线评估 是(实时)
A/B 测试
评估指标 自定义 内置 + 自定义 内置 + 自定义 N/A

4.2 Langfuse 评估示例

# Langfuse: Online evaluation with custom scoring
from langfuse import Langfuse

langfuse = Langfuse()

# Create an evaluation function
def evaluate_faithfulness(trace_id: str) -> float:
    trace = langfuse.get_trace(trace_id)

    # Extract context and answer from trace
    context = trace.observations[0].output  # retrieval step
    answer = trace.observations[1].output   # generation step

    # Use LLM to judge faithfulness
    judgment = openai.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{
            "role": "user",
            "content": f"""Rate the faithfulness of this answer (0-1).
            Context: {context}
            Answer: {answer}
            Score (0-1):"""
        }],
    )
    score = float(judgment.choices[0].message.content.strip())

    # Write score back to Langfuse
    langfuse.score(
        trace_id=trace_id,
        name="faithfulness",
        value=score,
        comment="LLM-as-judge evaluation",
    )
    return score

五、成本追踪

5.1 成本功能对比

维度 Langfuse Phoenix LangSmith Helicone
自动成本计算 是(最准)
模型定价数据库 内置 内置 内置 内置(最全)
成本仪表盘 基础 是(最强)
按用户追踪 是(user_id) 是(property)
按功能追踪 是(tag) 是(tag) 是(property)
预算告警
缓存节省 是(内置缓存)
速率限制 是(内置)

5.2 Helicone 成本管理优势

Helicone 作为代理层,天然具有成本控制能力:

// Helicone: Built-in caching and rate limiting
const openai = new OpenAI({
  baseURL: "https://oai.helicone.ai/v1",
  defaultHeaders: {
    "Helicone-Auth": `Bearer ${HELICONE_KEY}`,
    // Enable caching (same prompt = cached response)
    "Helicone-Cache-Enabled": "true",
    "Helicone-Cache-Bucket-Max-Size": "3",  // Cache 3 variations
    // Rate limiting
    "Helicone-RateLimit-Policy": "100;w=60",  // 100 req/min
    // Cost tracking by feature
    "Helicone-Property-Feature": "customer-support",
    "Helicone-Property-Customer-Tier": "enterprise",
  },
});

// Dashboard shows: cost by feature, cache hit rate, rate limit events

六、提示词管理

6.1 Prompt 管理对比

维度 Langfuse Phoenix LangSmith Helicone
提示词版本管理 是(Hub)
生产/开发环境 是(label)
A/B 测试
提示词模板 是(Jinja)
变量替换
共享与协作 是(Hub)
# Langfuse: Production prompt management
from langfuse import Langfuse

langfuse = Langfuse()

# Fetch production prompt (version controlled in Langfuse UI)
prompt = langfuse.get_prompt(
    name="rag-system-prompt",
    label="production",  # or "staging", "latest"
)

# Use in your application
response = openai.chat.completions.create(
    model=prompt.config["model"],  # Model also versioned
    messages=[
        {"role": "system", "content": prompt.compile(language="zh")},
        {"role": "user", "content": user_query},
    ],
    temperature=prompt.config.get("temperature", 0.7),
)

七、自托管与合规

7.1 自托管能力

维度 Langfuse Phoenix LangSmith Helicone
自托管 是(Docker) 是(pip/Docker) 是(Docker)
部署复杂度 中(PostgreSQL+ClickHouse) 低(SQLite/单进程) N/A 中(Supabase+ClickHouse)
最低配置 4C8G 2C4G N/A 4C8G
数据存储 PostgreSQL + ClickHouse SQLite/PostgreSQL 托管 Supabase + ClickHouse
数据出境 完全控制 完全控制 美国 完全控制
SSO/SAML 企业版 企业版

7.2 自托管部署

# Langfuse: Docker Compose self-hosting
git clone https://github.com/langfuse/langfuse.git
cd langfuse

# Configure environment
cat > .env <<'EOF'
DATABASE_URL=postgresql://postgres:postgres@db:5432/langfuse
NEXTAUTH_SECRET=your-secret-here
NEXTAUTH_URL=http://localhost:3000
SALT=your-salt-here
CLICKHOUSE_URL=http://clickhouse:8123
EOF

docker compose up -d
# Access at http://localhost:3000

# Phoenix: Simplest setup (zero deps)
pip install arize-phoenix
python -m phoenix.server.main serve
# Access at http://localhost:6006

八、选型决策

8.1 按场景推荐

场景 首选 理由
LangChain 项目 LangSmith 最深度原生集成
开源/自托管优先 Langfuse 功能最完整的开源方案
最快上手/实验 Phoenix pip install 即用
成本优化为主 Helicone 内置缓存 + 速率限制 + 成本看板
提示词工程 Langfuse / LangSmith 版本管理 + A/B 测试
数据不出境(中国) Langfuse / Phoenix 完全自托管
Notebook/研究 Phoenix Jupyter 友好
企业级(大团队) LangSmith 最成熟的权限和协作

8.2 综合评分

维度(权重) Langfuse Phoenix LangSmith Helicone
Tracing(25%) 9.0 8.5 9.5 7.0
评估(20%) 8.5 8.0 9.0 3.0
成本追踪(15%) 8.0 6.0 7.5 9.5
自托管(15%) 9.0 9.5 2.0 8.0
易用性(15%) 8.0 9.0 8.5 9.5
生态集成(10%) 8.5 7.5 9.5 7.0
加权总分 8.5 8.0 7.8 7.2

注:LangSmith 因为不支持自托管在该维度得分低,但其 Tracing 和评估是最强的。


九、组合策略

在实际生产中,可以组合使用:

组合方案 适用场景
Langfuse(tracing+eval) + Helicone(cache+cost) 全面可观测 + 成本优化
LangSmith(开发) + Langfuse(生产) LangChain 开发 + 自托管生产
Phoenix(实验) + Langfuse(生产) 快速实验 + 正式部署

核心原则:可观测性不是事后补救,而是开发第一天就应该接入的基础设施


Maurice | maurice_wen@proton.me