Langfuse란
Langfuse
Langfuse는 대규모 언어 모델(LLM) 기반 애플리케이션의 디버깅, 분석 및 개선을 지원하는 오픈 소스 엔지니어링 플랫폼입니다.
이 도구는 복잡한 로그와 실행 흐름을 시각적으로 탐색하고 디버깅할 수 있는 관측 기능과, 비용, 지연 시간, 응답 품질 등의 주요 지표를 측정하고 개선할 수 있는 분석 기능을 제공합니다.
또한, Langfuse는 프롬프트 관리를 통해 코드와 분리된 상태에서 프롬프트를 중앙에서 관리하고 버전 컨트롤할 수 있도록 지원합니다.
이를 통해 애플리케이션 재배포 없이 프롬프트를 업데이트할 수 있으며, 다양한 버전의 성능을 비교하고 롤백할 수 있습니다.
Langfuse는 Python, JavaScript/TypeScript 등의 SDK를 제공하며, OpenAI SDK, LangChain, LlamaIndex 등과 같은 인기 있는 프레임워크와의 통합을 지원합니다.
이를 통해 다양한 LLM 애플리케이션과의 연동이 용이하며, 개발자는 자신의 애플리케이션에 맞게 Langfuse를 활용할 수 있습니다.
Langfuse를 Python에서 사용하는 방법은 크게 다음과 같은 단계로 진행됩니다.
1. 설치
pip install langfuse
2. 초기 설정
먼저 Langfuse에서 Project Key와 Secret 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), 지표 모니터링 등을 시각적으로 확인할 수 있습니다.