샘플링
샘플링 (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)
- 출처 문서: 샘플링 (Sampling)