모든 LLM 호출 비용을 알려주는 30줄짜리 Wrapper
요약
LLM 호출 비용을 정확하게 파악할 수 있는 토큰 로깅 Wrapper를 소개합니다. 응답 객체에 포함된 사용량(usage) 정보를 활용하여, 모든 API 호출을 감싸고 사용량을 기록함으로써 개발 단계에서부터 비용 추적이 가능해집니다. 특히 캐시 읽기 및 출력 토큰의 중요성을 강조하며 효율적인 비용 관리를 돕습니다.
핵심 포인트
- API 응답의 usage 블록만으로 비용 로깅이 가능합니다.
- 캐싱된 토큰은 낮은 요율로 별도 계산해야 정확합니다.
- 비용 절감을 위해서는 긴 프롬프트보다 장황한 출력(Output)을 확인하세요.
LLM으로 개발하는 대부분의 사람들은 월간 청구서가 나올 때까지 특정 호출이 얼마의 비용이 드는지 모릅니다. 그리고 그때쯤이면 상세 내역 없이 무서운 단일 숫자로만 나타납니다. 해결책은 간단합니다. 모든 응답에는 이미 사용한 토큰 수가 나와 있습니다. 클라이언트를 한 번 감싸고, 그 사용량을 표와 비교하여 가격을 매긴 다음, 호출당 한 줄씩 기록하면 됩니다. 이제 개발하는 동안 청구서가 쌓이는 것을 보고, 어떤 경로가 비용을 많이 쓰고 있는지 찾을 수 있습니다.
사용량은 이미 응답에 포함되어 있다
시작하기 위해 프록시나 대시보드가 필요하지 않습니다. 응답 객체에는 토큰 카운트가 담긴 usage 블록이 있으며, Claude API의 경우 input_tokens, output_tokens, 그리고 프롬프트 캐시에 접근하거나 작성한 내용에 대한 별도의 cache_read_input_tokens와 cache_creation_input_tokens가 있습니다. 추가해야 할 유일한 것은 가격표와 곱셈입니다.
import json, time
# 100만 토큰당 $ — 제공업체의 현재 가격을 사용하세요.
...
이것이 전부입니다. 원본 create 대신 `logged_call(client,
캐시된 토큰은 별도로 카운트하세요. 모든 입력 토큰을 전체 요율로 가격 책정하면 프롬프트 캐싱을 사용하는 어떤 앱에서도 비용을 과대평가하게 됩니다. 왜냐하면 캐시 읽기는 가격의 약 10분의 1 수준이기 때문입니다. 위에서 제시된 Wrapper는 cache_read_input_tokens를 분리하여 낮은 가격으로 책정하는데, 이것이 유용한 수치와 오해를 불러일으키는 수치의 차이를 만듭니다.
입력(Input)보다는 출력(Output)을 확인하세요. 대부분의 모델에서 출력 토큰은 입력보다 몇 배 더 비싸기 때문에, 긴 답변을 반환하는 호출이 긴 프롬프트를 읽는 호출보다 비용이 많이 드는 경우가 일반적입니다. 절약을 찾으려면 큰 프롬프트가 아니라 장황한 응답(verbose responses)부터 확인해야 합니다.
이것은 첫날 오후에 그 가치를 증명할 만한 도구입니다. 청구서가 더 이상 놀라움이 아니게 되고, 비싼 경로가 미스터리가 아니게 되며, API가 이미 제공하고 있던 사용량 수치만으로도 당신은 이 두 가지를 모두 진실하게 만들었습니다.
만약 다른 방식으로 자체 지출을 추적한다면, 저는 그것을 보고 싶습니다. 왜냐하면 실제로 이것을 측정하는 사람들은 우리 대부분이 추측하는 것보다 무언가를 발견한 경향이 있기 때문입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기