반응형

1.Langfuse 란?
Langfuse는 오픈소스 LLM 옵저버빌리티(Observability) 플랫폼이에요.
AI 애플리케이션의 성능 모니터링, 추적(Tracing), 평가(Evaluation), 그리고 프로덕션 환경에서의 LLM 사용량 분석을 위한 종합적인 도구를 제공합니다.
Langfuse 의 주요 기능들.
| 추적 및 모니터링 | - LLM API 호출의 전체 lifecycle 추적- 토큰 사용량, 응답 시간, 비용 분석- 멀티 에이전트 워크플로우의 단계별 추적- 실시간 성능 메트릭 대시보드 |
| 데이터 분석 | - 프롬프트 성능 분석 및 최적화- 사용자 세션 및 대화 추적- A/B 테스트를 위한 프롬프트 버전 관리- 데이터 내보내기 및 외부 분석 도구 연동 |
| 품질 관리 | - LLM 응답 품질 평가 및 점수화- 사용자 피드백 수집 및 분석- 모델 성능 회귀 탐지- 프로덕션 환경에서의 품질 모니터링 |
2.왜 Langfuse ?
구분문제점Langfuse 해결책
| 1. 프로덕션 환경에서의 가시성 확보 | - LLM API 호출이 블랙박스처럼 작동하여 문제 원인 파악이 어려움- 토큰 사용량과 비용을 실시간으로 추적하기 어려움- 성능 병목지점을 식별하기 어려움 | - 모든 LLM 호출의 상세 로그와 메트릭 제공- 실시간 비용 추적 및 예산 관리- 응답 시간, 처리량 등 성능 지표 모니터링 |
| 2. 멀티 에이전트 시스템의 복잡성 관리 | - 여러 에이전트가 연동하는 워크플로우에서 각 단계별 성능 파악 어려움- 에러 발생 시 정확한 원인 위치 추적 어려움- 에이전트 간 데이터 흐름 파악 어려움 | - 워크플로우의 전체 실행 경로 시각화- 각 에이전트별 성능 메트릭 분리 측정- 계층적 추적으로 복잡한 호출 체인 관리 |
| 3. 데이터 기반 최적화 | - 프롬프트 성능을 정량적으로 평가하기 어려움- 사용자 만족도와 모델 응답 품질 상관관계 파악 어려움- 개선 효과를 객관적으로 측정하기 어려움 | - 프롬프트별 성능 지표 자동 수집- 사용자 피드백과 모델 메트릭 연동 분석- A/B 테스트를 통한 개선 효과 검증 |
| 4. 비용 최적화 | - LLM API 비용이 예상보다 높게 발생- 어떤 기능이 비용을 많이 소모하는지 파악 어려움- 비용 효율적인 모델 선택 기준 부재 | - 기능별, 사용자별 세분화된 비용 분석- 모델별 cost-per-performance 비교- 비용 임계값 알림 및 예산 관리 |
3.Langfuse 아키텍쳐

4.구축해보기
환경
- 쿠버네티스가 설치되어있는 환경
- Kubectl 설치 및 연동이 되어있고, 배포 권한이 있어야 함
순서
- 아래 helm chart 의 repository 에서 repo 정보를 업데이트 한다
- helm chart repository : https://artifacthub.io/packages/helm/langfuse-k8s/langfuse/1.5.0?modal=values
- values 에 정의된 값을 custom 하게 입력한다.
- 저의 경우는 Web 을 NodePort 로 설정하고, 외부에는 Ingress 를 생성하여 오픈하였습니다.
- 설치 스크립트
#!/bin/bash
helm repo add langfuse-k8s https://langfuse.github.io/langfuse-k8s/
echo "repository added.."
helm repo update
echo "repository updated.."
LANGFUSE_VERSION="1.5.2"
SERVICE_NAME="langfuse"
VALUES_FILE="langfuse-value.yaml"
NAMESPACE="langfuse"
echo "install langfuse..."
helm install $SERVICE_NAME langfuse-k8s/langfuse -n $NAMESPACE \
--values $VALUES_FILE \
--version $LANGFUSE_VERSION
helm uninstall langfuse -n langfuse
처음 웹서버 파드를 띄우고 진입하면 회원가입을 해야 한다.

Setting 부분에서 API 키를 발급받아 아래 연결을 위한 테스트 코드를 작성하고 실행한다.
연결 테스트를 위한 코드
```
from langfuse import Langfuse
from langfuse import observe, get_client
langfuse = Langfuse(
secret_key="secret-key",
public_key="pub-key",
host="http://000000000.ap-northeast-2.elb.amazonaws.com"
)
@observe
def my_function():
return "Hello, world!" # Input/output and timings are automatically captured
my_function()
# Flush events in short-lived applications
langfuse = get_client()
langfuse.flush()
```
그리고 아래 연동된 모습이다.


5.트러블 슈팅
- 에러 요약
- worker pod 에서 redis 통신 에러 발생
- web pod 에서 CrashLoopBackOff 발생
- minIO 오류 발생
- 설치 시 오류 발생
- 해결방법
- chart value 값 내에 postgresql, clickhouse 의 password 지정
- 워커파드의 수동 재시작 ( 아마 잘 working 하는 파드의 순서가 있는 모양인데, worker 파드가 먼저 띄워지면서 에러가 발생하는것으로 보임)
- host 는 수동으로 셋팅하지 말것
- minIO 값에 글로벌 설정 통일 및 ID, password 설정
반응형
'AI Agent Engineer' 카테고리의 다른 글
| vibe coding - cursor 의 memory bank 와 rules 그리고 plan 모드 (0) | 2025.10.19 |
|---|---|
| AI Agent Framework - langchain, strands , crewAI비교 (0) | 2025.10.18 |
| Strands SDK - MCP 연결해보기 (0) | 2025.10.01 |
| Strands SDK 기초 - AI Agent 개발 맛보기 (0) | 2025.09.03 |
| MCP 쉽게 이해해보기 (2) | 2025.07.08 |