langfuse/langfuse · 上手攻略
- 仓库:langfuse/langfuse
- 链接:https://github.com/langfuse/langfuse
- 分类:ai / llm-infra · evaluation · trending
- 作者:Jay
- 更新:2026-07-09
这是什么
Langfuse 是一个开源 LLM 工程平台,帮助团队协作地开发、监控、评测和调试 AI 应用。2026 年 1 月,Langfuse 团队加入 ClickHouse,继续深耕开源可观测性领域。它同时提供 Langfuse Cloud(托管版,有慷慨的免费额度)和私有化部署(Docker Compose,一键起立)。
核心功能覆盖 LLM 应用全生命周期:
- 可观测性(Tracing):接入你的应用,自动记录 LLM 调用链,支持 OpenAI SDK / LangChain / Vercel AI SDK / OpenTelemetry,附带 Web UI 会话 debug
- Prompt 管理:集中管理、版本控制、团队协作迭代 prompt,客户端/服务端双侧缓存,迭代不增加延迟
- 评测(Evaluations):LLM-as-a-Judge、代码评测器、用户反馈收集、人工标注,支持自定义评测管道
- 数据集(Datasets):构建测试集和基准,支持持续改进、预部署测试、结构化实验,与 LangChain / LlamaIndex 无缝集成
- Playground:直接在 UI 中测试 prompt 和模型配置,发现 bad case 后可直接跳转到 Playground 迭代
- 全面 API:OpenAPI 规范,Python / JS/TS typed SDK,适合驱动自定义 LLMOps 工作流
解决什么问题
开发 LLM 应用时,团队常面临这些痛点:
- 黑盒调试:LLM 调用不透明,出问题不知道是 prompt、模型还是数据的问题
- 迭代效率低:改一个 prompt 要改代码、重新部署,没有独立的 prompt 版本管理
- 缺乏评测:没有量化指标衡量应用质量,靠人工肉眼判断
- 多框架分散:同时用 LangChain、OpenAI SDK、LlamaIndex,日志散落在各处
- 团队协作难:prompt 和评测结果没有共享空间
Langfuse 统一了这些环节,让你在一个平台里完成从开发到上线的闭环。
快速安装
方式一:Langfuse Cloud(即用)
- 注册 cloud.langfuse.com(免费额度慷慨,无需信用卡)
- 在项目设置中创建 API 凭证(
LANGFUSE_SECRET_KEY/LANGFUSE_PUBLIC_KEY) - 接入你的代码(见下文核心用法)
方式二:本地 Docker Compose 私有部署
git clone --depth=1 https://github.com/langfuse/langfuse.git
cd langfuse
docker compose up -d
# 访问 http://localhost:3000 完成初始化
私有部署支持 PostgreSQL + ClickHouse(内置 Docker Compose 中),生产环境建议连接外部 ClickHouse 实例。
核心用法
1. 安装 Python SDK
pip install langfuse
2. 配置环境变量
# .env
LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-..."
LANGFUSE_BASE_URL="https://cloud.langfuse.com" # EU 区
# LANGFUSE_BASE_URL="https://us.cloud.langfuse.com" # US 区
# LANGFUSE_BASE_URL="https://jp.cloud.langfuse.com" # 日本区
⚠️ 注意:私有部署时,
LANGFUSE_BASE_URL改为你的实例地址(如http://localhost:3000)。
3. 接入 OpenAI SDK(最常用方式)
Langfuse 的 OpenAI SDK 是drop-in 替换,几乎零改动接入:
# 替换前
from openai import OpenAI
client = OpenAI()
# 替换后
from langfuse.openai import OpenAI
client = OpenAI()
# 后续调用完全一样,Langfuse 自动在后台记录 trace
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Explain quantum computing"}]
)
print(response.choices[0].message.content)
效果:每次 LLM 调用自动生成一个 Trace,可在 Langfuse Dashboard 查看调用详情、耗时、token 消耗。
4. 接入 LangChain Python
from langchain_openai import ChatOpenAI
from langfuse.callback import CallbackHandler
langfuse_handler = CallbackHandler()
llm = ChatOpenAI(model="gpt-4o")
# LangChain 的 Runnable 均可自动被 CallbackHandler 捕获
chain = prompt | llm
result = chain.invoke({"question": "..."}, config={"callbacks": [langfuse_handler]})
5. 接入 Vercel AI SDK(Node.js/TypeScript)
npm install langfuse
import { Langfuse } from "langfuse";
const langfuse = new Langfuse({
publicKey: process.env.LANGFUSE_PUBLIC_KEY,
baseUrl: "https://cloud.langfuse.com",
});
const generation = langfuse.generation({
name: "my-llm-call",
model: "gpt-4o",
messages: [{ role: "user", content: "Hello" }],
});
// 使用 OpenAI SDK 兼容方式调用
// langfuse 会自动拦截并记录
6. Prompt 管理(版本控制 + 热更新)
在 Langfuse Web UI 中创建 prompt 模板:
You are a helpful assistant. The user's question is: {{question}}
代码中调用:
from langfuse.prompt import Prompt
prompt = Prompt.get("my-prompt-v1") # 支持版本指定
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt.compile(question="What is RAG?")}]
)
热更新:UI 中修改 prompt 后,应用无需重新部署即可生效(服务端缓存)。
7. 评测(Datasets + Evaluations)
# 创建 dataset
langfuse.create_dataset(name="qa-test-set", rows=[
{"input": "What is RAG?", "expected": "Retrieval-augmented generation is..."},
{"input": "Explain transformers", "expected": "Attention is all you need..."},
])
# 运行评测
from langfuse.evaluation import evaluate
results = evaluate(
model="gpt-4o",
dataset="qa-test-set",
evaluator="llm-judge", # LLM-as-a-Judge
metrics=["relevance", "accuracy"]
)
典型适用场景
| 场景 | 为什么用 Langfuse |
|---|---|
| 调试 LLM 应用 | Trace 记录每次调用的输入/输出/耗时/Token,发现 bad case 后直接跳转 Playground 迭代 |
| 团队协作 | 多成员共享 prompt 版本、评测结果、数据集,避免 Git 冲突或散落本地 |
| 预上线质量把关 | 用 Datasets + LLM-as-a-Judge 做自动化回归测试,量化质量变化 |
| 成本监控 | Dashboard 展示 Token 消耗、API 调用次数,支持按用户/功能/模型标签分维度统计 |
| LangChain / LlamaIndex 集成 | 一个 CallbackHandler 统一接入,无需逐个工具手动埋点 |
| 多模型切换实验 | Playground 对比不同模型/ prompt 的效果,用同一套 trace 数据做 A/B 分析 |
坑与注意
- 隐私合规:用 Cloud 版时数据会上传到 Langfuse 服务器;敏感数据场景务必私有化部署,且注意网络隔离
- 私有部署 ClickHouse 资源:单节点 Docker Compose 适合开发/小规模团队,生产环境建议独立 ClickHouse 集群
- CallbackHandler 生命周期:确保 handler 实例在 LLM 调用期间不被 GC(尤其在异步场景下)
- LangChain 版本兼容性:CallbackHandler API 随 LangChain 版本变化,建议在
requirements.txt中锁定版本 - Tracing 开销:高频调用场景下,Langfuse SDK 的后台上报有一定网络开销(约几毫秒),生产环境可配置采样率(
sample_rate参数) - 中文文档:官方英文文档完整,中文翻译覆盖部分页面,有疑问建议直接读英文原版
与同类对比
| 特性 | Langfuse | LangSmith | Helicone | OpenTelemetry |
|---|---|---|---|---|
| 定位 | 全套 LLMOps 平台 | 全套 LLMOps 平台 | LLM 可观测性 | 通用可观测性 |
| 开源 | ✅ | ❌(付费) | 部分开源 | ✅ |
| 自托管 | ✅ Docker Compose | ❌ | ❌ | ✅ |
| Prompt 管理 | ✅ | ✅ | ❌ | ❌ |
| 评测/数据集 | ✅ | ✅ | ❌ | ❌ |
| LangChain 集成 | ✅ | ✅ | ✅ | ✅(手动) |
| 免费额度 | 慷慨 | 有限 | 有限 | 免费 |
| 上手难度 | 低 | 中 | 低 | 高(需自建) |
结论: - 选 Langfuse:想要开源 + 自托管 + 全套 LLMOps 能力(尤其 prompt 管理和评测) - 选 LangSmith:不介意付费,追求与 LangChain 生态的原生深度集成 - 选 Helicone:只需轻量 LLM 可观测性,不需要 Prompt 管理和评测 - 选 OTel:已有成熟可观测性基础设施,只需记录 LLM spans
一句话推荐结论
Langfuse 是目前开源 LLMOps 平台中功能最完整、上手最友好的选择——私有化部署 5 分钟搞定,Tracing + Prompt 管理 + 评测三件套一站配齐,是 LangSmith 的强力开源替代。