DEV Community

韩

Posted on

Langfuse 开源 LLMOps:3 万 Star 的 LLM 可观测性平台的 5 个隐藏用法

说个真实情况:2026 年大多数团队在构建 LLM 应用时,可观测性依然是事后补救——直到一次幻觉回复让他们丢掉大客户,或者一次提示词回归悄悄溜进生产环境。

有一个开源项目正在静悄悄地解决这个问题,它不是 Grafana,也不是 Datadog。

Langfuse 已经拿到 30,131 个 GitHub Stars,并且刚刚在 2026 年 6 月 30 日推送了新功能。诞生于 Y Combinator W23 批次,它已经成为很多团队悄悄加到 AI 技术栈里的开源 LLMOps——不需要重写应用代码。Langfuse Cloud 提供宽厚的免费额度,但完全开源的特性意味着团队可以私有化部署、二次开发甚至二次分发。

在 2026 年,Agent 需要编排横跨检索、生成、工具调用的多步骤工作流,任何一个盲点代价都很大。Langfuse 把每一次 LLM 调用、每一个 Agent 步骤、每一次提示词变体都变成可查询、可评估、可回滚的结构化链路。


隐藏用法 #1:一行代码搞定零侵入 OpenAI 链路追踪

大多数人的做法: 安装 Langfuse SDK,手动给每个函数套 @observe() 装饰器,逐一埋点。这能工作,但每个调了 LLM 的文件都得发一次 PR。

隐藏技巧:import openai 换成一个导入替换,全套链路追踪到手——token、延迟、成本、嵌套 span——业务逻辑一行不用改。

# 改造前:标准 OpenAI 调用
# from openai import OpenAI
# client = OpenAI()

# 改造后:一行替换就够了
from langfuse.openai import openai  # <-- 只要改这一行

response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "你好"}],
)
# 链路自动捕获:模型、token、成本、延迟全都有
Enter fullscreen mode Exit fullscreen mode

效果: 每次 OpenAI 调用都被自动追踪——模型名称、token、成本、延迟、完整的请求和响应体,一个不落。工具调用的嵌套 span 自动挂到父级生成节点下面。每次追踪都累计成本与 token 消耗。无装饰器,无回调,无重构。原先需要几小时才能完成的埋点工作,现在一行导入替换就搞定。对生产环境尤其友好——跨几十个服务追埋点的代价本来就很吓人。

数据来源: Langfuse README 集成表格:"OpenAI — 使用 OpenAI SDK 的 drop-in 替换进行自动埋点"(Python、JS/TS)。GitHub 30,131 Stars(通过 GitHub API 验证,2026 年 6 月)。


隐藏用法 #2:线上零延迟的提示词版本管理与 A/B 对比

大多数人的做法: 把提示词写死在代码里或者靠配置文件管,没有历史记录,没有回滚能力。新提示词变体把指标搞砸了,回滚要走一次 PR,再跑一轮 CI/CD。

隐藏技巧: 用 Langfuse 提示词管理做分布式提示词仓库。提示词有版本历史,加上服务端+客户端双重缓存,热路径上零延迟。发布新变体只需要在 UI 里拨一下开关。

from langfuse import Langfuse

langfuse = Langfuse()

# 获取特定提示词版本(缓存命中时零网络请求)
prompt = langfuse.get_prompt("customer-support-v2")

# 使用它 — TTL 内的后续请求直接走缓存
response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "system", "content": prompt.compile(tone="友好")}],
)

# 回滚:在 Langfuse UI 切一个活跃版本,无需部署
Enter fullscreen mode Exit fullscreen mode

效果: 提示词回归在客户反应过来之前就被发现。提示词变体(严肃 vs. 亲切语气)的周级 A/B 对比通过追踪 tag 统计,每个变体的延迟和成本都在看板上。回滚坏提示词只需要一次点击,根本不需要走 hotfix PR。服务端的强缓存确保 P99 延迟开销控制在毫秒以下,运营灵活性不会带来性能代价。多区域部署也能从中受益:相同提示词代码部署到 EU 和 US 两个单元,每个单元从 Langfuse 配置中拉取自己的本地化变体。

数据来源: Langfuse README "Prompt Management" 特性:"集中管理、版本控制、协作迭代提示词。服务端和客户端强缓存——迭代提示词无需增加延迟。"


隐藏用法 #3:基于真实生产数据集的定时回归评估

大多数人的做法: 每周人工翻翻追踪日志,或者抽几百条样本做抽检。等你抓到回归的时候,已经影响了成千上万真实用户。

隐藏技巧: 用 Datasets API 把生产环境的真实追踪导出成测试数据集,然后跑 LlamaIndex/LangChain 的评估套件(LLM-as-judge + 启发式指标)——全自动定时运行。把线上日志当成终极测试集。

import datetime
from langfuse import Langfuse

langfuse = Langfuse()

# 第一步:拉取昨天打负反馈的追踪记录
negative_traces = langfuse.api.trace.list(
    from_timestamp=datetime.datetime.now() - datetime.timedelta(days=1),
    tags=["user_feedback:negative"],
)

# 第二步:从真实输入构建数据集
dataset = langfuse.create_dataset(name="regression-suite-june30")
for trace in negative_traces.data:
    langfuse.create_dataset_item(
        dataset_name="regression-suite-june30",
        input=trace.input,
        expected_output="polite-and-helpful",  # 启发式 ground truth
    )

# 第三步:用 LLM-as-judge 评分
eval_result = langfuse.api.datasets.run_evaluation(
    dataset_name="regression-suite-june30",
    scoring_config={"llm-as-judge": {"rubric": "回答是否礼貌?(1-5 分)"}},
)
print(f"平均评分:{eval_result.mean_score:.2f}")
Enter fullscreen mode Exit fullscreen mode

效果: 提示词回归在影响 1000 个用户之前就被拦截。某次 LangChain 更新把语气从"贴心"变成"敷衍",夜间评估跑完自动在 GitHub 开了 Issue。随着时间推移,评估基线上累积起的真实用户输入分布,比任何人工构造的测试集都更有价值。LLM-as-judge 打分 + 用户反馈闭环,形成一个自愈式的生产 LLM 质量门禁。工程经理每周收到一份质量报告,无需任何人提工单。

数据来源: Langfuse README "Evaluations" 特性:"LLM 应用开发工作流的关键环节——LLm-as-judge、代码评估器、用户反馈收集、人工标注、自定义评估流水线"。"Datasets:测试集和基准——持续改进、部署前测试、结构化实验。"


隐藏用法 #4:多步骤 Agent 工作流的瀑布式链路追踪

大多数人的做法: 只记录 Agent 最终输出,丢失了关键信息——哪个工具调用失败了、哪次检索返回了垃圾上下文。用一条最终输出记录去调试 10 步 Agent 工作流,就像只看状态码去排查后端服务。

隐藏技巧: Langfuse 的嵌套追踪树自动把每个 Agent 步骤、每次工具调用、每次检索都捕获为同一个追踪下面的 span。对 CrewAI / AutoGen / smolagents 用户,在 Agent 类上加一个 langfuse.observe() 装饰器就能看到完整执行图——无需接触编排代码。每个 span 都携带延迟和成本元数据,能精准定位最烧钱的步骤。

from langfuse import observe

@observe()  # <-- 给编排器套一个装饰器
class ResearchAgent:
    def plan(self, query: str) -> list[str]:
        return openai.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{"role": "user", "content": f"规划研究任务: {query}"}],
        )

    @observe(as_type="tool")   # 捕获为工具调用 span
    def search(self, query: str) -> str:
        return duckduckgo.run(query)

    @observe(as_type="retrieval")  # 捕获为检索 span
    def fetch(self, url: str) -> str:
        return requests.get(url).text
Enter fullscreen mode Exit fullscreen mode

效果: 一条 Langfuse 追踪以瀑布图形式展示完整 Agent 时间线——规划阶段(120ms)、3 次工具调用(各 400ms)、2 次检索(200ms)、最终综合(800ms)。能精准定位哪个工具调用返回了垃圾数据。每次 Agent 运行的成本一目了然。当高价值客户的使用延迟飙升时,瀑布视图直接暴露出哪个步骤发生了劣化。多 Agent 团队用来调试专业子 Agent 之间的交接——错误悄悄在三跳之间传播,瀑布图一下子就能揪出来。同时,它也能和你已有的 OpenTelemetry 基础设施共存(例如 Jaeger、Honeycomb)。

数据来源: Langfuse README "SDK" 章节:"使用 Langfuse SDK 进行手动埋点,灵活度最高。追踪 LLM 调用和其他逻辑,如检索、嵌入、Agent 动作。" Agent 集成支持:AutoGen、CrewAI、smolagents、Goose、Inferable。


隐藏用法 #5:基于 ClickHouse + K8s Helm 的私有化生产部署

大多数人的做法: 注册 Langfuse Cloud 免费版直接用(对大多数团队来说这完全没问题)。但对于受监管行业或者日处理百万级追踪的团队,把追踪数据送到第三方云是行不通的——涉及数据驻留、合规性、或者纯粹是量级太大。

隐藏技巧: Langfuse 支持一键 Helm 部署到 Kubernetes,底层用 ClickHouse 做列式追踪存储。可观测平台功能完整,数据不出 VPC。ClickHouse 的列式引擎天生就是为 LLM 可观测性那种聚合查询而生的——按模型看 P99 延迟、按用户看成本、跨 token 消耗万级会话实时交互。

# 生产级私有化部署 < 5 分钟
helm repo add langfuse https://langfuse.github.io/langfuse
helm install langfuse langfuse/langfuse \
  --set langfuse.externalDatabase.host=clickhouse.internal \
  --set langfuse.auth.secretKey=$LANGFUSE_SECRET \
  --namespace llmdev

# Helm Chart 自动配置 Postgres(应用元数据)+ ClickHouse(追踪数据)
# 外加 Redis 队列、水平 Pod 自动扩缩
Enter fullscreen mode Exit fullscreen mode

私有化部署底层依赖 ClickHouse 的列式存储,百万级追踪记录也能做亚秒级的成本、延迟聚合查询。Cloud 版本提供宽厚的免费额度,私有部署能扛 PB 级生产日志。如果你更偏好 IaC 而不是 Helm,Langfuse 提供 AWS、Azure、GCP 的 Terraform 模板。这套架构经过实战检验——Langfuse 自己的 Cloud 实例就承载着数千家团队的追踪。

效果: 私有 AI 应用数据完全留在自己的云里。ClickHouse 上的每追踪成本查询能处理百万级行并实时返回。一个每月处理 100 万条追踪的团队,调试时间从几小时压缩到几分钟——因为模型、延迟、成本可以实时交叉聚合。对于金融和医疗这类在 LLM 流水线里处理 PII 的团队,私有化部署是他们能否用上 Langfuse 的分水岭。MIT 开源协议意味着无厂商锁定、无定价突变、完全掌控自己的可观测性命运。

数据来源: Langfuse README "Self-Host Langfuse":"Kubernetes (Helm):通过 Helm 在 Kubernetes 集群上部署 Langfuse——生产环境首选方案。" "底层基于 ClickHouse 开源数据库。" README 列出 AWS、Azure、GCP 的 Terraform 模板。


总结:5 个隐藏技巧速览

  1. OpenAI SDK drop-in — 换一行导入就获得完整链路追踪
  2. 版本化提示词 — 不需要部署就能回滚坏提示词
  3. 定时数据集评估 — 在真实追踪上自动拦截回归
  4. 嵌套 Agent span — 瀑布图视图看到每次工具调用和检索
  5. ClickHouse 私有部署 — 数据不出 VPC 的生产级可观测性

每个技巧从不同层面消除隐藏的可观测性盲区——SDK、提示词管理、评估、链路追踪、部署架构。Langfuse 的 30,131 Stars 和 215 分的 HN 发布讨论,反映出有多少团队正在把开源 LLMOps 叠加到生产流水线里——不是事后补救,而是从第一天起就当成基础设施来建。


你在用 Langfuse 的什么隐藏技巧?

你最具创意的 Langfuse 接入方式是什么——自定义 span、数据集启发式规则、还是别的?评论区分享出来。


我之前在 Dev.to 发布的相关文章:

Top comments (0)