작은소행성☄️ 2025. 3. 28. 09:27
728x90

Langfuse

Langfuse는 대규모 언어 모델(LLM) 기반 애플리케이션의 디버깅, 분석 및 개선을 지원하는 오픈 소스 엔지니어링 플랫폼입니다.

이 도구는 복잡한 로그와 실행 흐름을 시각적으로 탐색하고 디버깅할 수 있는 관측 기능과, 비용, 지연 시간, 응답 품질 등의 주요 지표를 측정하고 개선할 수 있는 분석 기능을 제공합니다.

 

또한, Langfuse는 프롬프트 관리를 통해 코드와 분리된 상태에서 프롬프트를 중앙에서 관리하고 버전 컨트롤할 수 있도록 지원합니다.

이를 통해 애플리케이션 재배포 없이 프롬프트를 업데이트할 수 있으며, 다양한 버전의 성능을 비교하고 롤백할 수 있습니다.

 

Langfuse는 Python, JavaScript/TypeScript 등의 SDK를 제공하며, OpenAI SDK, LangChain, LlamaIndex 등과 같은 인기 있는 프레임워크와의 통합을 지원합니다.

이를 통해 다양한 LLM 애플리케이션과의 연동이 용이하며, 개발자는 자신의 애플리케이션에 맞게 Langfuse를 활용할 수 있습니다.

 

 

Langfuse를 Python에서 사용하는 방법은 크게 다음과 같은 단계로 진행됩니다.

 

1. 설치

pip install langfuse

 

2. 초기 설정

먼저 Langfuse에서 Project KeySecret Key를 발급받아야 합니다. (Langfuse 웹사이트에서 회원가입 후 발급 가능)

환경 변수에 설정하거나, 코드에서 직접 설정할 수 있습니다.

from langfuse import Langfuse

langfuse = Langfuse(
    public_key="your-public-key",
    secret_key="your-secret-key",
    host="https://cloud.langfuse.com"  # self-host할 경우 변경
)

 

 

3. 트레이스 생성 및 로깅

Langfuse에서는 하나의 요청 흐름을 trace로 추적하고, 그 안에서 다양한 span(세부 단계)과 generation(LLM 응답)을 기록합니다.

trace = langfuse.trace(name="example-trace", user_id="user-123")

span = trace.span(name="call-openai")

# 예: OpenAI 호출 결과 기록
response = "Hello, this is a response from the model."
span.generation(
    name="openai-call",
    prompt="Hello?",
    completion=response,
    model="gpt-3.5-turbo",
    temperature=0.7
)

 

 

4. LangChain 또는 OpenAI SDK와 함께 사용

Langfuse는 LangChain이나 OpenAI SDK와 쉽게 통합할 수 있도록 미들웨어나 트래커도 제공합니다.

from langfuse.langchain import LangfuseCallbackHandler
from langchain.chat_models import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

handler = LangfuseCallbackHandler()

llm = ChatOpenAI(temperature=0.7, callbacks=[handler])
prompt = PromptTemplate.from_template("Say hi to {name}")
chain = LLMChain(llm=llm, prompt=prompt)

result = chain.run(name="Alice")

이렇게 하면 자동으로 프롬프트, 응답, 실행 시간, 모델 정보 등이 Langfuse에 기록됩니다.

 

 

샘플코드

from langfuse import Langfuse

# self-host한 Langfuse 연결
langfuse = Langfuse(
    public_key="your-public-key",  # Langfuse UI에서 발급
    secret_key="your-secret-key",  # Langfuse UI에서 발급
    host="http://localhost:3000"
)

# 트레이스 생성
trace = langfuse.trace(name="test-trace", user_id="test-user")

# 작업 구간(span) 생성
span = trace.span(name="initial-processing")

# LLM 결과 기록
span.generation(
    name="dummy-model-call",
    prompt="What's the weather like today?",
    completion="It's sunny and warm.",
    model="dummy-llm",
    temperature=0.7
)

print("✅ Logged to Langfuse successfully!")

 

 

대시보드 확인

Langfuse 웹사이트에서 실시간 로그, 분석, 프롬프트 비교(A/B test), 지표 모니터링 등을 시각적으로 확인할 수 있습니다.

 

 

 

 

 

728x90
반응형