LangFuse:开源可内网部署的 Agent 全链路监测方案
前面学了用 LangSmith 做 Agent 的全链路监测,以及跑效果评估的实验。
它是线上的服务,不用自己部署,直接接入就行。
但是,本地调试用 LangSmith 没问题,很方便,配几个环境变量就行,LangChain、LangGraph 开箱即用。
那如果是线上呢?
LangSmith 线上服务是收费的。
如果你想用免费方案,那就得用 LangFuse 了,它是开源的,可以自己部署。

而且它也不绑定具体框架,但各种 Agent 框架都很容易集成。
它有 cloud 开箱即用版,和自己部署,两种方式。
我们先来试一下 cloud 版:
登录一下:
https://cloud.langfuse.com/
和 LangSmith 功能差不多


拿到 api key 之后,我们在项目里配置下:
创建项目:
mkdir langfuse-test
cd langfuse-test
npm init -y

我们跑一下 deepagents 然后用 langfuse 来收集下信息:
用 OpenTelemetry 做埋点、函数插桩,收集到的数据转成 LangFuse 的格式,上报服务器,之后在平台就可以看到 trace 的链路了。
然后来跑一下 Agent 评估:
流程和 LangSmith 一样:
创建数据集 dataset、 创建评估器 evaluator 跑实验 experiment
然后我们跑一下,在 langfuse 平台看一下:
刚才用的是 cloud,然后我们本地部署一下,不然生产环境也是要收费的:
根目录跑一下这个:
curl -o docker-compose.yml https://raw.githubusercontent.com/langfuse/langfuse/main/docker-compose.yml
用一下:
这样,只要改一下环境变量,代码一行不用改,tracing、evaluate 等就都收集到了我们自己部署的 langfuse 服务里了。
然后来看一下这个 langfuse 服务的架构:

大概是这样的关系:

langfuse web 是 web 服务,接受请求,把消息放到 redis 的消息队列 worker 用来消费 redis 消息队列的消息,做具体的处理 redis 这里主要用作消息队列,再就是缓存 postgresql 存各种业务数据 minio 存文件 clickhouse 存 tracing 等数据,用于查询分析
这个简单了解就行,不重要。
最后来看一下 monitor:
它主要是一些指标的统计,再就是告警,可以当某个指标达到阈值的时候,通过 slack 或者 webhook 之类的通知你。
最后再对比一下 LangSmith 和 LangFuse,面试有可能会问:
部署与成本:
LangSmith 闭源产品,默认 SaaS 托管。
零运维、按量收费,高 tracing 量生产环境成本高;
企业版(Enterprise 付费签约)提供私有化自托管方案,但成本极高(最低门槛 10 万美金 / 年起)
LangFuse 支持 Cloud 版 + 自建开源部署,生产环境可零成本、数据完全自主可控,无用量扣费压力
框架适配性:
LangSmith 深度绑定 LangChain/LangGraph,原生零配置,其他框架兼容差;
LangFuse 基于 OpenTelemetry 埋点,全框架通用,适配任意 Agent 框架,无技术绑定
核心就是上面两个区别。

代码上传了课程仓库: https://github.com/QuarkGluonPlasma/ai-agent-course-code
总结
LangSmith 用起来简单,LangChain 生态配几个环境变量就能接入。
但是它是闭源 saas,生产环境按量付费比较贵
虽然支持私有化部署,但门槛高,最低 10 万美金 / 年。
所以 LangFuse 是一个很好的开源替代方案,支持 cloud 和本地 docker compose 跑。
它基于 OpenTelemetry 自动埋点收集数据上报,所以很容易支持各种 Agent 框架。
我们跑了 Tracing,创建了数据集 Dataset 和评估器 Evauator 然后跑了实验 Experiment
功能和 LangSmith 差不多。
后续我们本地调试还是 LangSmith,但要在生产环境跑的 Agent 都会用 LangFuse。