通过 Langfuse SDK 接入 LLM 应用性能监控
更新时间:2026-05-21
概述
Langfuse 是当下 Python 流行的 LLM 可观测 SDK,支持对 Agent、Chain、Tool、LLM Generation 等节点进行细粒度的链路追踪。百度智能云 LLM 应用性能监控兼容 Langfuse 协议,您可以使用 Langfuse SDK 将调用链路数据上报至百度 LLM应用性能监控。
接入时只需将 Langfuse SDK 的连接配置指向百度 LLM应用性能监控 接入点,无需修改业务逻辑代码。
接入流程
步骤 1:获取接入点与 Token
注:该信息因地域和用户而异,可在控制台“接入应用”页面获取,下方为示例
- 接入点:http://apm-collector.bj.baidubce.com
- Authentication:UFSpMM***lnFrVBqtPDK
步骤 2:安装 Langfuse SDK
通过 pip 命令安装 Langfuse SDK:
Plain Text
1pip install langfuse>=3.0.0
如果您的应用基于 LangChain / LangGraph 框架,还需安装:
Plain Text
1pip install langchain>=0.3.0 langchain-openai>=0.3.0 langgraph>=0.2.0
步骤 3:初始化配置
在 Python 项目的入口文件中引入 Langfuse SDK,并根据步骤 1 中获得的接入点和 Public Key 进行初始化。
Plain Text
1-*- coding: utf-8 -*-
2import os
3
4os.environ['LANGFUSE_PUBLIC_KEY'] = "<Authentication>" # 替换为步骤 1 获取的 Authentication
5os.environ['LANGFUSE_SECRET_KEY'] = "sk-placeholder" # 任意非空字符串,SDK 要求该字段不能为空
6os.environ['LANGFUSE_HOST'] = "<endpoint>" # 替换为步骤 1 获取的接入点
7
8from langfuse import Langfuse
9from opentelemetry.sdk.resources import Resource
10from opentelemetry.sdk.trace import TracerProvider
11
12tracer_provider = TracerProvider(
13 resource=Resource.create({
14 "service.name": "<server.name>", # 设置当前应用的名称
15 "host.name": "<host.name>", # 设置当前主机名称
16 })
17)
18
19langfuse_client = Langfuse(tracer_provider=tracer_provider)
对应的字段说明如下:
| 参数 | 描述 | 示例 |
|---|---|---|
<server.name> |
应用名,多个使用相同应用名接入的进程,在 LLM 应用性能监控中会表现为相同应用下的多个实例 | agent-demo |
<Authentication> |
步骤 1 中拿到的 Public Key,作为 LANGFUSE_PUBLIC_KEY 配置 |
UFSpMM***lnFrVBqtPDK |
<endpoint> |
步骤 1 中拿到的接入点 | http://apm-collector.bj.baidubce.com |
<host.name> |
该实例的主机名,是应用实例的唯一标识,通常情况下可以设置为应用实例的 IP 地址 | my-instance-host |
步骤 4:接入验证
启动 Python 应用后,在有 LLM 调用的情况下,LLM 应用性能监控 → 应用列表 中将展示接入的应用。由于数据的处理存在一定延时,如果接入后在控制台没有查询到应用,请等待 30 秒左右。
接入实战示例
示例一
通过 OpenAI SDK 访问千帆接口,使用 Langfuse 的 OpenAI drop-in 替换实现自动遥测。
Plain Text
1import os
2from langfuse import Langfuse
3from opentelemetry.sdk.resources import Resource
4from opentelemetry.sdk.trace import TracerProvider
5
6ai_model = 'ernie-4.0-turbo-128k'
7api_key = "bce-v3/ALTAK-mTNsaNCr4********" # 替换为千帆的 API-Key
8base_url = "https://qianfan.baidubce.com/v2" # 千帆的 endpoint
9
10os.environ['LANGFUSE_PUBLIC_KEY'] = "<Authentication>" # 替换为接入获取的 Public Key
11os.environ['LANGFUSE_SECRET_KEY'] = "sk-placeholder" # 任意非空字符串
12os.environ['LANGFUSE_HOST'] = "<endpoint>" # 替换为接入获取的接入点
13
14tracer_provider = TracerProvider(
15 resource=Resource.create({
16 "service.name": "<server.name>", # 设置当前应用的名称
17 "host.name": "<host.name>", # 设置当前主机名称
18 })
19)
20langfuse_client = Langfuse(tracer_provider=tracer_provider)
21
22from langfuse.openai import openai
23
24if __name__ == '__main__':
25 llm = openai.OpenAI(
26 api_key=api_key,
27 base_url=base_url,
28 )
29
30 response = llm.chat.completions.create(
31 model=ai_model,
32 messages=[
33 {
34 "role": "user",
35 "content": "hello",
36 },
37 ],
38 )
39
40 langfuse_client.flush() # 确保数据上报完成
示例二
遥测使用 LangChain / LangGraph 框架的 LLM 数据。通过 Langfuse 的 CallbackHandler 自动采集 chain、agent、tool、llm 全链路节点。
Plain Text
1import os
2from langfuse import Langfuse
3from langfuse.langchain import CallbackHandler
4from opentelemetry.sdk.resources import Resource
5from opentelemetry.sdk.trace import TracerProvider
6from langchain_openai import ChatOpenAI
7from langchain_core.messages import HumanMessage
8from langgraph.prebuilt import create_react_agent
9
10ai_model = 'ernie-4.0-turbo-128k'
11api_key = "bce-v3/ALTAK-mTNsaNCr4********" # 替换为千帆的 API-Key
12base_url = "https://qianfan.baidubce.com/v2" # 千帆的 endpoint
13
14os.environ['LANGFUSE_PUBLIC_KEY'] = "<Authentication>" # 替换为接入获取的 Public Key
15os.environ['LANGFUSE_SECRET_KEY'] = "sk-placeholder" # 任意非空字符串
16os.environ['LANGFUSE_BASE_URL'] = "<endpoint>" # 替换为接入获取的接入点
17
18tracer_provider = TracerProvider(
19 resource=Resource.create({
20 "service.name": "<server.name>", # 设置当前应用的名称
21 "host.name": "<host.name>", # 设置当前主机名称
22 })
23)
24langfuse_client = Langfuse(tracer_provider=tracer_provider)
25
26langfuse_handler = CallbackHandler() # 创建 LangChain CallbackHandler
27
28if __name__ == '__main__':
29 llm = ChatOpenAI(
30 api_key=api_key,
31 base_url=base_url,
32 model=ai_model,
33 )
34
35 agent = create_react_agent(llm, tools=[])
36
37 result = agent.invoke(
38 {"messages": [HumanMessage(content="what is the weather today?")]},
39 config={"callbacks": [langfuse_handler]},
40 )
41
42 langfuse_client.flush() # 确保数据上报完成
评价此篇文章
