API 가격 책정 이해하기: 토큰 기반 청구가 모두를 혼란스럽게 하는 이유와 이를 파악하는 방법
요약
API 기반 AI 서비스의 토큰 기반 청구 방식은 업계 표준이지만 복잡하여 사용자들이 혼란을 겪기 쉽습니다. 이 글에서는 입력/출력 토큰 비용 차이, 시스템 프롬프트 포함 여부, 그리고 대화 기록 누적(Context Accumulation)으로 인해 실제 예상보다 훨씬 높은 비용이 발생할 수 있음을 설명합니다.
핵심 포인트
- 입력과 출력 토큰의 가격 차이를 반드시 인지해야 합니다.
- 시스템 프롬프트도 입력 토큰으로 계산되어 비용에 포함됩니다.
- 대화 기록(Context)은 매 요청마다 누적되어 비용을 급격히 증가시킵니다.
지난주, 저는 한 고객의 청구서를 디버깅하고 있었습니다. 그들은 월 $10 구독료일 것이라 생각했지만, $47이 청구되었습니다. 좌절감은 역력했습니다: "저는 몇 가지 프롬프트를 테스트하고 싶었을 뿐인데. 어떻게 이런 일이 일어났나요?"
만약 여러분이 API 가격 페이지를 보고 혼란스러움을 느낀 적이 있다면, 당신만 그런 것이 아닙니다. 토큰 기반 청구(Token-based billing)는 업계 표준이지만, 이를 명확하게 설명하는 사람은 거의 없습니다. 제가 그 문제를 해결해 드리겠습니다.
"토큰당" 가격 책정의 문제점
대부분의 API 제공업체는 다음과 같은 것을 보여줍니다:
GPT-4o-mini: $0.15 per 1M input tokens, $0.60 per 1M output tokens
저렴하게 들리죠? 하지만 다음 사실을 깨닫기 전까지는 그렇지 않습니다:
- 프롬프트가 몇 개의 토큰을 사용하는지 보낼 때까지 알 수 없다.
- 입력(Input)과 출력(Output)은 가격이 다르다 (출력이 보통 3~4배 더 비싸다).
- 시스템 프롬프트도 입력 토큰으로 계산된다 (그리고 그 양이 엄청날 수 있다).
- 컨텍스트가 누적된다 (대화의 모든 메시지가 쌓인다).
따라서 "1M 토큰당 $0.15"를 보면, 우리의 뇌는 '푼돈'이라고 생각합니다. 하지만 실제 청구서는? 달러일 수도 있습니다.
요청을 보낼 때 실제로 무슨 일이 일어나는가
실제 예시를 추적해 보겠습니다. 다음과 같은 내용을 API로 전송한다고 가정합니다:
messages = [
{"role": "system", "content": "당신은 도움이 되는 비서입니다..."}, # ~50 토큰
{"role": "user", "content": "양자 컴퓨팅을 3문장으로 설명해 주세요."} # ~15 토큰
...
API가 보는 것:
- 입력: 65 토큰 (시스템 프롬프트 + 사용자 메시지)
- 출력: ~80 토큰 (응답)
청구되는 금액:
- 입력 비용: 65 × $0.15 / 1,000,000 = $0.00000975
- 출력 비용: 80 × $0.60 / 1,000,000 = $0.000048
- 총계: $0.00005775
이는 1센트도 안 되는 금액입니다. 그렇다면 $47은 어디서 온 것일까요?
대화 승수 효과 (The Conversation Multiplier Effect)
여기 함정이 있습니다. 대화 기록의 모든 메시지가 요청마다 다시 전송됩니다.
1차 턴:
- 입력: 65 토큰 → $0.00000975
- 출력: 80 토큰 → $0.000048
2차 턴 (후속 질문):
- 입력: 65 + 80 + 20 (새 메시지) = 165 토큰 → $0.00002475
- 출력: 100 토큰 → $0.00006
3차 턴:
- 입력: 165 + 100 + 25 = 290 토큰 → $0.0000435
- 출력: 120 토큰 → $0.000072
10차 턴이 되면, 컨텍스트에 대한 비용을 10배 지불하게 됩니다. 50차 턴이 되면 50배를 지불하는 것입니다.
이것이 '간단한 테스트'가 $47의 비용이 발생할 수 있는 이유입니다. 토큰당 가격 문제가 아니라, 누적되는 문제입니다.
실제 비용 예측 방법
제가 고객들에게 사용하는 공식은 다음과 같습니다:
Estimated monthly cost = (avg_tokens_per_request × requests_per_day × 30) × (input_price + output_price) / 2
예시:
- 하루에 20개의 요청을 보냅니다.
- 각 요청은 평균적으로 입력 토큰 500개 + 출력 토큰 300개를 사용합니다.
- GPT-4o-mini를 사용합니다 ($0.15 입력, $0.60 출력)
일일 입력: 500 × 20 = 10,000 토큰
일일 출력: 300 × 20 = 6,000 토큰
월간 입력: 10,000 × 30 = 300,000 토큰
...
잠깐, 고작 15센트만요? 말이 안 됩니다.
빠진 부분: 대화 기록입니다.
각 요청에 이전 메시지 5개가 포함되고 (평균 200 토큰씩), 실제 요청당 입력 토큰은 다음과 같습니다:
500 (새로운 내용) + 5 × 200 (기록) = 1,500 토큰
재계산:
월간 입력: 1,500 × 20 × 30 = 900,000 토큰
월간 비용:
- 입력: 900,000 × $0.15 / 1,000,000 = $0.135
...
여전히 저렴합니다. 하지만 이제 상상해 보세요:
- 하루에 100개의 요청 (20개가 아님)
- 기록이 20개 메시지 (5개가 아님)
- GPT-4o-mini 대신 GPT-4를 사용 ($2.50 입력, $10 출력)
월간 입력: (500 + 20 × 200) × 100 × 30 = 13,500,000 토큰
월간 출력: 300 × 100 × 30 = 900,000 토큰
...
이렇게 해서 $47에 도달하는 것입니다.
구독 모델 대안
이것이 일부 제공업체(RollTok 포함)가 토큰 할당량을 가진 월간 구독을 제공하는 이유입니다. 토큰당 지불 방식 대신, 다음을 얻게 됩니다:
- 예측 가능한 청구 (Predictable billing): X 토큰당 월 $10
- 깜짝 요금 없음 (No surprise bills): 최대 비용을 미리 알 수 있음
- 단순한 사고 모델 (Simpler mental model): '예산이 있다' vs '토큰 단위로 측정된다'
하지만 트레이드오프가 있습니다? 사용하지 않은 토큰은 이월되지 않습니다. 1M 토큰을 구매하고 200K를 사용했다면, 나머지는 월말에 만료됩니다.
이것이 공정할까요? 이는 사용 패턴에 따라 다릅니다:
- 일관된 일일 사용: 구독(Subscription) 방식이 보통 더 저렴합니다
- 버스트 사용 (Burst usage): 토큰당 지불 방식(Pay-per-token)이 더 나을 수 있습니다
- 테스트/실험: 구독은 예산 상한선(budget cap)을 제공합니다
자신에게 맞는 모델 선택하기
스스로에게 질문해보세요:
- 하루에 몇 건의 요청이 필요한가요?
-
10건 미만: 토큰당 지불 방식(Pay-per-token)
-
10~50건: 어느 쪽도 괜찮습니다
-
50건 초과: 구독 방식이 더 저렴할 가능성이 높습니다
- 대화가 얼마나 길어지나요?
-
5턴 미만: 토큰당 지불 방식(Pay-per-token)
-
5~20턴: 어느 쪽도 괜찮습니다
-
20턴 초과: 구독 (컨텍스트 누적은 치명적입니다/context accumulation kills you)
- 비용 예측 가능성이 필요한가요?
- 예: 구독(Subscription)
- 아니오: 토큰당 지불 방식(Pay-per-token)
- 예산 허용 범위는 어느 정도인가요?
- '월 $20을 초과할 수 없다': 구독(Subscription)
- '사용하는 만큼 지불하겠다': 토큰당 지불 방식(Pay-per-token)
투명한 가격 계산기 (A Transparent Pricing Calculator)
고객들을 위해 제가 만든 간단한 계산기가 여기 있습니다. 여기에 숫자를 넣어보세요:
def estimate_monthly_cost(
requests_per_day,
avg_input_tokens,
...
제공업체에 약정하기 전에 이것을 사용하세요. 깜짝 요금에서 당신을 구해줄 것입니다.
제공업체가 더 잘해야 할 점 (What Providers Should Do Better)
솔직히 말해서? 대부분의 API 제공업체들은 이 부분을 너무 혼란스럽게 만듭니다. 제가 보고 싶은 것은 다음과 같습니다:
- 전송 전에 예상 비용 표시:
토큰 기반 청구(Token-based billing) 자체가 본질적으로 나쁜 것은 아닙니다. 유연하고 세밀하기 때문입니다. 하지만 다음 사항들을 이해해야 합니다:
- 입력(Input)과 출력(Output)의 가격이 다릅니다.
- 컨텍스트가 누적됩니다.
- 실제 비용은 프롬프트 길이뿐만 아니라 대화 길이에 따라 달라집니다.
API 제공업체를 평가할 때는 단순히 토큰당 가격만 보지 마세요. 다음 사항들을 살펴보아야 합니다:
- 실제 사용 패턴 (일별 요청 수, 대화 길이)
- 비용 예측 가능성 필요 여부 (구독 모델 vs 토큰당 지불)
- 사용하지 않은 토큰의 처리 방식 (롤오버(rollover) vs 만료(expire))
만약 어떤 제공업체가 '100만 토큰당' 가격만 보여주고 대화 승수 효과(conversation multiplier effect)를 설명하지 않는다면, 그곳은 피하세요.
솔직히 말씀드리자면: 저는 월별 구독과 토큰 할당량을 제공하는 RollTok에서 일하고 있습니다. 저는 이 모델이 꾸준한 사용자에게 더 잘 작동한다고 생각하지만, 토큰당 지불 방식은 폭발적인 사용량에 적합합니다. 본 글은 두 가지 모델을 모두 솔직하게 설명하려는 시도입니다.
이 내용이 도움이 되셨다면, API 가격 책정, 인증(authentication), 디버깅에 대한 시리즈를 작성하고 있습니다. 더 많은 정보를 원하시면 팔로우해주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기