You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
ModelProvider 日志应用
Langfuse 观测(使用 Langfuse SDK 接入)
复制全文
下载 pdf
Langfuse 观测(使用 Langfuse SDK 接入)
本章节介绍日志服务应用市场提供的大模型观测日志应用 Langfuse 可观测。​
概述​
Langfuse SDK 是嵌入 LLM/Agent 应用的观测与平台接入库。记录执行过程并上报 Langfuse,也提供 Prompt 管理、评估和评分等能力。主要维护 Python 和 JavaScript/TypeScript SDK,更多详细信息,请参考 Langfuse 官方文档。​
通过接入 Langfuse 可观测日志应用,自动在日志服务创建 Langfuse 专用 Trace 日志主题,生成可视化图表并展示会话、Trace、Token 与工具调用数据,实现链路追踪和可观测性。可用于如下场景:​
​
可观测性​
说明​
性能分析​
  • 模型调用延迟分布​
  • Tool 执行时间排行​
  • Token 消耗趋势​
错误追踪​
  • 查看完整的调用链路​
  • 定位出错的环节​
  • 分析错误原因​
成本优化​
  • 识别高消耗的对话​
  • 优化 Prompt 减少 Token​
  • 选择更经济的模型​
​
前提条件​
​
类别​
说明​
地域限制​
部署 Langfuse SDK 应用的服务器与日志服务为同一地域(Region),确保网络连通。​
鉴权方式​
根据不同的鉴权方式,获取用户 Access Key ID、Secret Access Key 或 APIKey。​
  • AK/SK:火山引擎账号的 AccessKey ID、AccessKey Secret。​
  • 在火山引擎控制台密钥管理页面获取。推荐使用 IAM 用户密钥,请确认该用户具备相关的操作权限,详情可参考IAM 概述。​
  • 支持自动创建日志服务资源(Project/App/Topic),并自动生成日志主题 ID。​
  • API Key:请求火山日志服务的重要凭证,仅用于 Log、Metric、Trace 的数据上报。​
  • 严格收敛权限、不支持自动创建日志服务资源。​
  • 适合多机房与权限管控严格场景。​
说明​
API Key 为邀测功能,若有相关业务需求,可联系客户经理开通白名单。​
​
一 接入 Langfuse 日志应用​
  1. 在顶部导航栏中,选择日志服务所在的地域。​
  1. 在左侧导航栏中,选择 AgentLoop > AI观测。​
  1. 在 AI 观测页面,单击接入 AI 观测。​
  1. 在接入 AI 观测页面,创建应用。​
  1. 单击 Langfuse 图标,选中 Langfuse 应用。​
  1. 配置接入应用参数,然后单击创建应用。​
  • ​
    参数​
    说明​
    Region​
    接入日志应用数据存放的地域。​
    日志项目​
    选择存放日志应用数据的日志项目。​
    说明​
    日志应用创建成功后,将会在该日志项目中,自动创建携带LANGFUSE标签的日志主题,用于存放 trace 数据。该日志主题相关信息如下:​
    • 日志主题名称:应用名称_trace​
    • 分区数量:2​
    • 日志存储时长:标准存储 90 天​
    • 索引:自动配置键值索引。​
    应用名称​
    输入 Langfuse 日志应用的名称。​
    • 长度为3-64个字符。​
    • 只能包含中文、小写字母、数字、下划线_和连字符-。​
    • 不能以连字符-和下划线_开头/结尾。​
    • 不能tls_、tos_以及部分预留字段开头。​
    描述​
    日志应用描述信息。​
    长度限制为0-128个字符。​
    ​
  1. 创建应用后,执行下一步获取使用指引,并接入日志应用。​
二 接入 Langfuse 应用数据​
  1. 获取接入 Langfuse 应用数据的使用指引。​
  1. 进入接入配置页面。​
  • ​
    接入日志应用时获取
    接入日志应用后获取
    ​
    在 AgentLoop 中创建 Langfuse 日志应用时,可根据界面提示获取对应的使用指引。​
    1. 参考一 接入 Langfuse 日志应用,接入 Langfuse 日志应用。​
    1. 在接入 AI 观测页面的接入配置中,配置如下信息,获取使用指引。​
    ​
  1. 在接入配置页面,选择鉴权方式,配置如下信息,获取使用指引。​
  • ​
    AK/SK 接入
    API Key 接入
    ​
    1. 接入方式选择 AK SK 接入。​
    1. 连接方式根据实际情况,选择公网或火山引擎内网。​
    1. 在使用指引中,复制自动生成的使用指引。​
    ​
  • 使用指引示例(AK/SK 接入方式):​
  • ​
    公网
    火山引擎内网
    ​
    ​
    ## Python Langfuse 接入​
    ​
    该接入方式保留原有 Langfuse `get_client()` 和 `langfuse.openai.OpenAI` 用法,将 Langfuse 产生的 Trace 通过 OTLP/HTTP 上报到当前 TLS Trace 实例。​
    ​
    ### 1. 安装依赖​
    ​
    ```bash​
    python -m pip install -U langfuse opentelemetry-exporter-otlp-proto-http​
    ```​
    ​
    如需运行示例中的方舟模型调用,请同时安装:​
    ​
    ```bash​
    python -m pip install -U openai​
    ```​
    ​
    ### 2. 添加初始化文件​
    ​
    将给出的`tls_langfuse_bootstrap.py` 放到应用代码目录,确保应用可以正常导入该模块。​
    ​
    ​
    ```python​
    """Register a TLS OTLP exporter for clients returned by ``get_client()``."""​
    ​
    import os​
    from typing import Optional​
    ​
    from opentelemetry.exporter.otlp.proto.http.trace_exporter import (​
    OTLPSpanExporter,​
    )​
    ​
    from langfuse import Langfuse​
    ​
    _bootstrap_client: Optional[Langfuse] = None​
    ​
    _REQUIRED_ENV_VARS = (​
    "LANGFUSE_PUBLIC_KEY",​
    "LANGFUSE_SECRET_KEY",​
    "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",​
    "OTEL_EXPORTER_OTLP_TRACES_HEADERS",​
    )​
    ​
    ​
    def init_langfuse_tls() -> Langfuse:​
    """Initialize the shared Langfuse resource manager with a TLS exporter.​
    ​
    Call this once, before the first call to ``get_client()`` or the first​
    instrumented model request. Later ``get_client()`` calls reuse the resource​
    manager and exporter registered here.​
    """​
    global _bootstrap_client​
    ​
    if _bootstrap_client is not None:​
    return _bootstrap_client​
    ​
    missing = [name for name in _REQUIRED_ENV_VARS if not os.environ.get(name)]​
    if missing:​
    missing_names = ", ".join(missing)​
    message = f"Missing required environment variables: {missing_names}"​
    raise RuntimeError(message)​
    ​
    endpoint = os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"].rstrip("/")​
    if not endpoint.startswith("https://"):​
    message = "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT must use HTTPS"​
    raise ValueError(message)​
    ​
    if not endpoint.endswith("/v1/traces"):​
    message = (​
    "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT must end with /v1/traces; "​
    "signal-specific OTEL endpoints are used without path rewriting"​
    )​
    raise ValueError(message)​
    ​
    # OTLPSpanExporter reads its endpoint, headers, and timeout from the​
    # standard OTEL_EXPORTER_OTLP_TRACES_* environment variables.​
    tls_exporter = OTLPSpanExporter()​
    ​
    # Creating this client registers a resource manager keyed by the Langfuse​
    # public key. Existing business code can continue to call get_client().​
    _bootstrap_client = Langfuse(span_exporter=tls_exporter)​
    return _bootstrap_client​
    ```​
    ### 3. 配置环境变量​
    ​
    ```bash​
    # Langfuse SDK 初始化标识。​
    # Trace 鉴权由下方 TLS AK/SK 完成。​
    export LANGFUSE_PUBLIC_KEY="需手动替换实际 tls-ak"​
    export LANGFUSE_SECRET_KEY="需手动替换实际 tls-sk"​
    ​
    # TLS OTLP/HTTP 公网接入点​
    export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://系统自动填充当前endpoint:4318/v1/traces"​
    ​
    ​
    # 将 <your-ak> 和 <your-sk> 替换为火山引擎访问密钥​
    export OTEL_EXPORTER_OTLP_TRACES_HEADERS="x-tls-otel-tracetopic=<系统自动填充 trace-topic-id>,x-tls-otel-ak=<需手动替换实际 your-ak>,x-tls-otel-sk=<需手动替换实际 your-sk>,x-tls-otel-region=<系统自动填充当前地域>"​
    ```​
    ​
    请通过部署平台的 Secret 或环境变量能力注入 AK/SK,不要将凭证写入源码或 Dockerfile。​
    ​
    ### 4. 初始化 Langfuse​
    ​
    在应用启动入口中加入以下代码,并确保它在第一次调用 `get_client()` 或发起被追踪的模型请求之前执行:​
    ​
    ```python​
    from tls_langfuse_bootstrap import init_langfuse_tls​
    ​
    init_langfuse_tls()​
    ```​
    ​
    现有业务代码可以保持不变:​
    ​
    ```python​
    from langfuse import get_client​
    ​
    langfuse = get_client()​
    ```​
    ​
    如果应用是脚本、任务等短生命周期进程,请在退出前刷新 Trace:​
    ​
    ```python​
    langfuse.flush()​
    ```​
    ​
    ​
  1. (仅AK/SK方式)修改使用指引中的鉴权信息。​
  • 将已获取的 Access Key ID、Secret Access Key 分别填入使用指引的 AK、SK 中。​
  1. 将 Langfuse 观测日志接入至日志应用。​
  1. 登录部署 Langfuse 的服务器。​
  1. 执行使用指引中获取的信息,安装日志服务插件。​
  1. 插件安装完成后,重启 Langfuse 服务。​
  1. 返回日志服务控制台,查看可观测图表数据。​
监控图表详情​
日志服务 Langfuse 应用观测监控图表详情如下:​
​
类型​
图表​
总览​
  • 请求总览:​
  • 会话个数、对话个数、模型请求数、工具调用次数、请求趋势​
  • 成本总览:​
  • 总 Tokens、输入 Tokens、输出 Tokens、Cache Read Tokens、Reasoning Tokens、Token 消耗趋势、模型调用趋势​
  • 工具总览​
  • 调用成功次数、调用失败次数、工具调用耗时 P90、工具调用 Top10、工具调用失败 Top10、工具调用趋势​
  • 模型性能总览​
  • 模型调用分布 Top 10、模型调用耗时 P90、Provider 调用分布、Provider 调用耗时 P90​
Trace 分析​
  • 总览​
  • 总 Trace 数、总 Token 消耗、平均 Token、耗时 P90​
  • Trace 调用链分析​
  • 展示指定调用链的 Input、Output、Trace ID、总 Tokens、Input Tokens、Output Tokens、耗时(s)、开始时间、结束时间等。​
会话分析​
  • 总览​
  • 会话个数、总 Token 消耗、模型请求数、平均会话 Token​
  • 会话分析​
  • 展示指定会话的 First Input、Last Output、Session ID、总 Tokens、总耗时 (ms)、调用链数量、耗时(s)、模型、开始时间、结束时间等。​
Token 分析​
  • 总览​
  • 总 Tokens、输入 Tokens、输出 Tokens、Cache Read Tokens、Reasoning Tokens、输入Tokens(除Cache)、会话Token消耗Top 10、模型Token消耗Top 10、Token分类占比​
Topic 列表​
展示当前日志应用产生的日志类型、日志项目和日志主题及描述信息等。​
​
管理我的应用​
日志应用接入成功后,支持对已接入的日志应用进行相关管理操作:​
​
AgentLoop
应用市场
​
  1. 在顶部导航栏中,选择日志服务所在的地域。​
  1. 在左侧导航栏中,选择 AgentLoop > AI观测。​
  1. 在 AI 观测页面,在对应日志应用的操作列,支持如下管理操作:​
  • 修改应用信息:单击编辑图标,可修改应用名称和描述信息。​
  • 获取使用指引:单击接入配置图标,进入接入配置弹窗,可获取使用指引示例信息。​
  • 删除我的应用:单击删除图标,可删除该日志应用。​
​
应用名称_trace(日志主题)日志字段​
​
字段​
类型​
说明​
Attributes​
json​
Span 上挂载的自定义键值对,记录业务相关信息。​
Duration​
long​
Span 持续时长(End - Start),衡量该操作的耗时。​
End​
long​
Span 结束时间。​
Events​
text​
Span 生命周期内发生的事件。​
Host​
text​
运行服务的主机。​
Kind​
text​
Span 的类型。​
Links​
text​
关联其他 Span 的引用(用于跨 Trace 关联,比如异步任务场景)。​
Name​
text​
Span 的名称,通常是操作描述。​
OTLPName​
text​
通过 OTLP 协议上报时的原始名称(OTLP = OpenTelemetry Line Protocol)。​
OTLPVersion​
text​
使用的 OTLP 协议版本号。​
ParentSpanID​
text​
父 Span 的 ID,表示当前操作是被哪个操作触发的,根节点此字段为空。​
Resource​
json​
一组描述服务本身的属性集合(比 ServiceName 更全),如服务名、版本、运行环境等。​
ServiceName​
text​
产生这条 Span 的服务名称。​
SpanID​
text​
当前 Span 的唯一 ID。​
Start​
long​
Span 开始时间。​
StatusCode​
text​
Span 的执行结果。​
StatusDescription​
text​
Span 的执行结果的补充说明。​
TracelD​
text​
整条调用链的 TracelD,同一次请求的所有 Span 共享同一个 TraceID。​
TraceState​
text​
自定义的追踪上下文元数据。​
​
Attributes​
​
字段​
类型​
说明​
langfuse.observation.cost_details​
text​
费用明细,通常包含输入 token 费用、输出 token 费用、总费用等。​
langfuse.observation.input​
text​
观测的输入内容,即 prompt 等。​
langfuse.observation.metadata.provider​
text​
调用的 LLM 服务商。​
langfuse.observation.model.name​
text​
调用的模型名称。​
langfuse.observation.output​
text​
观测的输出内容。​
langfuse.observation.type​
text​
观测的节点类型。​
langfuse.observation.usage_details​
text​
Token 用量明细,通常包含 input_tokens(输入 token 数)、output_tokens(输出 token 数)、total_tokens(总 token 数)。​
session.id​
text​
会话 ID。​
user.id​
text​
用户 ID。​
​
​
最近更新时间:2026.09.16 18:19:48
这个页面对您有帮助吗?
有用
有用
无用
无用