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 | [email protected]