Langfuse 文档 中文 英文原文 ↗
文档 / Langfuse SDK

Langfuse SDK

Langfuse 提供两个 SDK:

Langfuse SDK 是创建自定义 observations 和 traces以及使用 Langfuse 提示词管理评估功能的推荐方式。

关键好处

本节记录 Langfuse SDK 的追踪相关功能。要将 Langfuse SDK 用于提示词管理评估,请访问它们各自的文档。

自托管 Langfuse 的要求
旧版文档

本文档适用于最新版本的 Langfuse SDK。

  • 旧版 Python SDK v3 的文档可在这里找到。
  • 旧版 TypeScript SDK v4 的文档可在这里找到。

快速开始

遵循快速开始指南,将第一个 trace 接入 Langfuse。更多细节参见设置部分。

1. 安装包:

bash
npm install @langfuse/tracing @langfuse/otel @opentelemetry/sdk-node

2. 设置环境变量:

3. 初始化 OpenTelemetry:

创建一个 instrumentation.ts 以注册 Langfuse span processor,以便 traces 到达 Langfuse。

tsinstrumentation.ts
import { NodeSDK } from "@opentelemetry/sdk-node";
import { LangfuseSpanProcessor } from "@langfuse/otel";

export const sdk = new NodeSDK({
  spanProcessors: [new LangfuseSpanProcessor()],
});

sdk.start();

在应用入口点的顶部导入此文件(例如 index.ts)。

4. 为你的应用埋点:

埋点意味着添加记录应用中正在发生什么的代码,以便它可以发送到 Langfuse。用 TypeScript SDK 为你的代码埋点主要有三种方式。

在本示例中,我们将使用上下文管理器。你也可以使用装饰器或创建手动 observations

tsindex.ts
import { sdk } from "./instrumentation";
import { startActiveObservation } from "@langfuse/tracing";

async function main() {
  await startActiveObservation("my-first-trace", async (span) => {
    span.update({
      input: "Hello, Langfuse!",
      output: "This is my first trace!",
    });
  });
}

// Shutdown flushes events and is required for short-lived applications
main().finally(() => sdk.shutdown());

我何时需要使用 shutdown()?

5. 运行你的应用并在 Langfuse 中查看 trace:

bash
npx tsx index.ts

Langfuse 中的第一个 trace

在 Langfuse 中查看该 trace

设置

本节涵盖设置 Langfuse SDK 的所有细节。遵循快速开始指南创建你的第一个 trace。

OpenTelemetry 基础

Langfuse SDK 构建在 OpenTelemetry 之上。这提供:

下图展示了 Langfuse 如何映射到原生 OpenTelemetry 概念:

mermaid
graph TD
    subgraph OTEL_Core_Concepts ["OpenTelemetry"]
        direction LR
        OTEL_Trace["OTel Trace"]
        Root_OTEL_Span["Root OTel Span"]
        Child_OTEL_Span["Child OTel Span"]

        OTEL_Trace -- is defined by --> Root_OTEL_Span
        Root_OTEL_Span -- Hierarchy via <br/> Context Propagation --> Child_OTEL_Span
    end

    subgraph Langfuse_Mapping ["Langfuse"]
        direction LR
        LF_Trace["Langfuse Trace"]
        LF_Observation["Langfuse Observation <br/> (typed as either Span, Generation or Event)"]

        LF_Trace -- Collects one or more --> LF_Observation
    end

    OTEL_Trace -.->|shares ID with | LF_Trace

    Root_OTEL_Span -.->|Mapped to| LF_Observation
    Child_OTEL_Span -.->|Mapped to| LF_Observation

    Root_OTEL_Span -.->|sets default input and output | LF_Trace
    Root_OTEL_Span -.->|can hold trace attributes| LF_Trace
    Child_OTEL_Span -.->|can hold trace attributes| LF_Trace

    classDef otel fill:#D6EAF8,stroke:#3498DB,stroke-width:2px,color:#000;
    classDef langfuse fill:#D5F5E3,stroke:#2ECC71,stroke-width:2px,color:#000;
    class OTEL_Trace,Root_OTEL_Span,Child_OTEL_Span otel;
    class LF_Trace,LF_Observation langfuse;

Langfuse SDK 提供围绕 OTel spans 的包装器(LangfuseSpanLangfuseGeneration),提供与 Langfuse 专属功能(如打分和媒体处理)交互的便捷方法,同时在底层仍是原生 OTel spans。你也可以使用这些包装器对象通过 update_trace() 添加 Langfuse trace 属性,或使用 propagate_attributes() 自动传播到所有子 observations。

了解更多

其他语言

Langfuse 维护 Python 和 JavaScript/TypeScript 的 SDK。对于其他语言,你可以使用我们的 OpenTelemetry 端点为你的应用埋点,并使用 public API 使用 Langfuse 提示词管理、评估和查询。

埋点

要为你的应用埋点,你可以将 OpenTelemetry spans 发送到 Langfuse OTel 端点。为此,你可以使用以下 OpenTelemetry SDK:

提示词管理、评估和查询:

要使用其他 Langfuse 功能,你可以使用 public API 从任何运行时集成 Langfuse。我们还提供一份社区维护的 SDK 列表在此

非官方中文翻译 · 图片/视频/代码均链接官方资源 · 版权归 Langfuse GmbH 所有 查看英文原文 ↗