LLM 앱이 실제로 무엇을 했는지 트레이스(실행 기록)로 남겨 호출 과정, 비용, 품질을 분석하는 오픈소스 관측성 플랫폼이다. 실제 사용자가 쓰기 시작한 챗봇이나 에이전트가 어디서 틀리고 비용을 얼마나 쓰는지 확인할 때 붙인다.
| 기능 | 하는 일 |
|---|---|
| 트레이싱 | 호출·단계·툴 사용을 기록하고 시각화 |
| 프롬프트 관리 | 프롬프트를 버전별로 저장하고 코드 밖에서 교체 |
| 평가 | 사용자 피드백, 사람 검수, LLM 채점으로 품질 점수 기록 |
| 데이터셋 | 테스트 입력을 모아 프롬프트·모델 변경 전후를 비교 |
어떤 프롬프트가 들어가 어떤 답이 나왔는지, 에이전트가 어떤 툴을 어떤 순서로 불렀는지, 토큰·비용·지연 시간이 얼마였는지를 한 화면에서 볼 수 있다.
먼저 Langfuse 클라우드에 가입하거나 Docker로 직접 서버를 띄운 뒤 프로젝트의 공개 키와 비밀 키를 받는다. 이 키를 LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY 환경 변수로 넣고 Python 또는 JS/TS SDK를 설치하면 된다.
Python에서는 함수에 @observe 데코레이터를 달면 그 함수가 하나의 단계로 기록된다. LangChain·LlamaIndex는 콜백 연동, OpenAI SDK는 Langfuse가 감싼 클라이언트로 바꾸는 방식으로 붙일 수 있다. OpenTelemetry로도 데이터를 보낼 수 있어 다른 프레임워크와도 연결된다.
사용자가 이상한 답을 받았다고 하면 해당 트레이스를 열어 어느 단계에서 엇나갔는지 본다. 검색 결과가 틀렸는지, 프롬프트가 문제인지, 툴 호출이 실패했는지가 바로 드러난다.
원인을 찾으면 프롬프트 관리에서 새 버전을 만들고, 데이터셋으로 이전 버전과 결과를 비교한다. 배포한 뒤에는 대시보드에서 버전별 점수와 비용을 지켜보면 된다. 반대로 혼자 써 보는 간단한 스크립트라면 로그 출력만으로도 충분해서 굳이 붙일 필요가 없다.
비슷한 도구인 LangSmith는 LangChain 팀이 만든 상용 서비스다. Langfuse는 코드가 공개돼 있어 내 서버에 직접 설치할 수 있다는 점이 가장 큰 차이다. 사용자 대화를 외부로 보내기 어려운 회사라면 이 점이 결정적이다.
| 항목 | Langfuse | LangSmith |
|---|---|---|
| 소스 공개 | 오픈소스 | 비공개 상용 |
| 설치 방식 | 클라우드 또는 셀프호스팅 | 주로 클라우드 |
| 프레임워크 | 특정 프레임워크에 묶이지 않음 | LangChain과 가장 잘 맞음 |
트레이스에는 사용자 입력과 모델 답변이 그대로 저장된다. 개인정보가 섞일 수 있으니 저장 전에 가리는 처리나 보관 기간을 정해 두는 게 좋다. 셀프호스팅을 하면 데이터는 내 손에 남지만, 서버 운영과 업데이트도 직접 맡아야 한다.
가장 흔한 건 운영 중인 LLM 앱의 기본 기록 장치로 붙여 두는 방식이다. 평소에는 비용과 점수를 지켜보다가, 문제 제보가 들어오면 그 트레이스부터 연다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 고객 응대 챗봇 | 이상한 답이 나온 대화의 트레이스를 열어 원인을 찾고, 사용자 피드백을 점수로 쌓기 |
| 사내 문서 검색(RAG) | 검색 단계와 답변 단계를 나눠 기록해 틀린 문서를 가져왔는지 확인 |
| 툴을 쓰는 에이전트 | 툴 호출 순서와 실패 지점, 작업당 토큰 비용을 추적 |
| 프롬프트 개선 | 새 버전을 데이터셋으로 이전 버전과 비교한 뒤 코드 수정 없이 교체 |