샘플링

샘플링 (Sampling)

Sampling은 Langfuse가 수집하는 trace의 볼륨을 제어하는 데 사용돼요. 샘플링은 클라이언트 측에서 처리돼요. LANGFUSE_SAMPLE_RATE 환경 변수를 설정하거나 sample_rate/sampleRate 생성자 파라미터를 사용해 샘플 비율을 구성할 수 있어요. 값은 0과 1 사이여야 해요.

출처: 문서

본문

Sampling은 Langfuse가 수집하는 trace의 볼륨을 제어하는 데 사용해요. 샘플링은 클라이언트 측에서 처리돼요.

LANGFUSE_SAMPLE_RATE 환경 변수를 설정하거나 sample_rate/sampleRate 생성자 파라미터로 샘플 비율을 구성할 수 있어요. 값은 0과 1 사이여야 해요.

기본값은 1로 모든 trace가 수집돼요. 0.2 값은 trace의 20%만 수집된다는 뜻이에요. SDK는 trace 레벨에서 샘플링하므로, trace가 샘플링되면 그 trace 내의 모든 observation과 score도 함께 샘플링돼요.

Python SDK

from langfuse import Langfuse, get_client
import os

# Method 1: Set environment variable
os.environ["LANGFUSE_SAMPLE_RATE"] = "0.5"  # As string in env var
langfuse = get_client()

# Method 2: Initialize with constructor parameter then get client
Langfuse(sample_rate=0.5)  # 50% of traces will be sampled
langfuse = get_client()

@observe() 데코레이터 사용 시:

from langfuse import observe, Langfuse, get_client

# Initialize the client with sampling
Langfuse(sample_rate=0.3)  # 30% of traces will be sampled

@observe()
def process_data():
    # Only ~30% of calls to this function will generate traces
    # The decision is made at the trace level (first span)
    pass

trace가 샘플링되지 않으면 observation(span·generation)이나 연관된 score 중 어떤 것도 Langfuse로 보내지지 않아, 고트래픽 애플리케이션의 데이터 볼륨을 크게 줄일 수 있어요.

JS/TS SDK

Langfuse는 OpenTelemetry의 샘플링 결정을 존중해요. OTEL SDK에서 sampler를 구성해 어떤 trace를 Langfuse로 보낼지 제어할 수 있어요. 고볼륨 애플리케이션에서 비용 관리와 노이즈 감소에 유용해요.

다음은 TraceIdRatioBasedSampler로 trace의 20%만 보내도록 구성하는 예시예요:

import { NodeSDK } from "@opentelemetry/sdk-node";
import { LangfuseSpanProcessor } from "@langfuse/otel";
import { TraceIdRatioBasedSampler } from "@opentelemetry/sdk-trace-base";

const sdk = new NodeSDK({
  // Sample 20% of all traces
  sampler: new TraceIdRatioBasedSampler(0.2),
  spanProcessors: [new LangfuseSpanProcessor()],
});

JS/TS SDK 문서에서 자세한 내용을 확인하세요.

OpenAI (JS/TS)

Langfuse는 OpenTelemetry의 샘플링 결정을 존중해요. OTEL SDK에서 sampler를 구성해 어떤 trace를 Langfuse로 보낼지 제어할 수 있어요. 고볼륨 애플리케이션에서 비용 관리와 노이즈 감소에 유용해요.

다음은 TraceIdRatioBasedSampler로 trace의 20%만 보내도록 구성하는 예시예요:

import { NodeSDK } from "@opentelemetry/sdk-node";
import { LangfuseSpanProcessor } from "@langfuse/otel";
import { TraceIdRatioBasedSampler } from "@opentelemetry/sdk-trace-base";

const sdk = new NodeSDK({
  // Sample 20% of all traces
  sampler: new TraceIdRatioBasedSampler(0.2),
  spanProcessors: [new LangfuseSpanProcessor()],
});

더 알아보기 (Learn more)