Langfuse LLM 비용 집계 누락 — 워커 이미지에 포함된 모델 단가
LLM 게이트웨이를 거치는 호출을 Langfuse 로 관측하고 있습니다. 어느 모델을 얼마나 썼고 비용이 얼마나 나왔는지를 트레이스로 쌓아 두는 용도라, 팀별 사용량 집계도 여기서 뽑습니다.
그런데 새로 나온 모델은 트레이스는 잘 들어오는데 비용이 $0.00 로 집계됐습니다. 토큰 수는 맞게 찍히고 단가만 0 이었고, Model Definitions 목록에도 그 모델이 없었습니다.
원인 — 워커 이미지에 번들된 기본 단가
Langfuse 워커는 기동할 때 upsertDefaultModelPrices() 를 돌려, 이미지에
번들된 default-model-prices.json 으로 DB 의 기본 단가를 시딩합니다.
문제는 배포된 워커 이미지가 그 모델이 추가되기 전 버전이었다는 겁니다. 이미지 안의 JSON 에 새 모델 단가 행이 없으니, DB 는 한 번 시딩된 뒤로 그 모델 없이 그대로 남습니다. 트레이스는 모델 이름으로 매칭이 안 되니 단가 0 으로 계산됩니다.
핵심은 Helm 차트 버전과 실제 워커 이미지(appVersion) 가 따로 논다는 점입니다. 차트만 최신이라고 워커 이미지가 최신은 아니라, 단가 JSON 이 옛날에 묶여 있었습니다.
번들 JSON 에 그 모델이 있는지는 업스트림에서 직접 확인됩니다.
gh api repos/langfuse/langfuse/commits?path=.../default-model-prices.json
해결 — 워커 이미지 업그레이드로 자동 시딩
차트를 올려 워커 이미지가 새 JSON 을 포함하게 하면, 재기동 때
upsertDefaultModelPrices() 가 그 모델 단가를 자동으로 시딩합니다. 급하면
Model Definitions 에 단가를 수동으로 넣어도 되지만, 근본은 이미지 갱신입니다.
단가 데이터는 설정이 아니라 이미지 버전
이미지가 스스로 기준 데이터를 시딩하는 구조면, 그 데이터는 설정이 아니라 이미지 버전이 좌우합니다. 단가·기본값 같은 참조 데이터가 안 맞을 때 설정만 뒤지면 안 나옵니다 — 배포된 이미지가 그 데이터를 담을 만큼 최신인지를 봐야 합니다. 그리고 Helm 차트 버전과 실제 앱 이미지 버전은 별개라, “차트는 최신인데 왜?” 가 여기서 갈립니다.
댓글 0