AI 입문가이드
입력 vs 출력 토큰: AI API가 청구하는 것
AI API가 입력과 출력 토큰을 따로 세는 이유, usage 필드에서 이를 읽는 곳, 그리고 한 요청의 비용을 계산하는 방법.

언어 모델에 첫 API 호출을 방금 했다면, 응답에서 usage 블록을 보고 정확히 무엇을 세는지 궁금했을 것입니다. 짧게 답하면: 모든 요청에는 두 개의 계량기가 있습니다. 하나는 보내는 토큰(입력)을, 다른 하나는 모델이 되돌려 쓰는 토큰(출력)을 셉니다. 각 계량기에는 자체 가격이 있고, 요청 비용은 둘의 합입니다.
이 가이드는 숫자를 어디서 찾는지, 어떻게 달러로 환산하는지, 그리고 덜 쓰기 위해 무엇을 바꿀 수 있는지 보여줍니다. "토큰"이라는 단어가 아직 모호하다면 AI에서 토큰이란?부터 시작하세요.
입력과 출력으로 무엇이 세어지나#
입력 토큰은 모델이 답하기 위해 읽어야 하는 모든 것입니다:
- 최신 메시지;
- 시스템 프롬프트("영어로 간단히 답하라" 같은 지시);
- 대화의 이전 메시지(다시 보낸 경우);
- 요청에 붙여넣은 문서, 코드 또는 검색 결과.
출력 토큰은 모델이 답으로 생성하는 모든 것입니다. OpenAI 호환 형식에서는 choices[0].의 텍스트입니다. 일부 모델은 사고 모드에서 최종 답 전에 추론 토큰도 생성합니다. 출력으로 청구되는지는 모델의 가격 페이지에서 확인하세요.
초보자에게 중요한 점: 모델은 요청 사이에 대화를 기억하지 않습니다. 채팅 앱은 매번 전체 기록을 다시 보내므로, 긴 대화의 입력은 새 메시지가 한 줄이어도 매 턴마다 커집니다.
숫자를 읽는 곳: usage 블록#
OpenAI 호환 API의 모든 비스트리밍 응답은 usage 객체로 끝납니다. 다음은 그 형태의 교육용 예시입니다:
{
"choices": [
{ "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
],
"usage": {
"prompt_tokens": 2000,
"completion_tokens": 500,
"total_tokens": 2500
}
}표를 오른쪽으로 스크롤하세요 →
| 필드 | 의미 | 청구 구분 |
|---|---|---|
prompt_tokens |
보낸 모든 것의 토큰 | 입력 |
completion_ |
모델이 생성한 토큰 | 출력 |
total_tokens |
prompt_tokens + completion_ |
별도 가격 아님: 단지 합계 |
흔한 초보자 실수는 total_tokens에 하나의 가격을 곱하는 것입니다. 입력과 출력의 가격이 다르므로 두 숫자를 따로 써야 합니다.
일부 제공자는 추가 필드를 넣습니다. 예를 들어 DeepSeek 자체 API는 prompt_tokens을 prompt_와 prompt_으로 나누고, 사고 모드에서는 reasoning_tokens를 보고합니다(출처: DeepSeek API 문서, 2026년 10월 21일 확인). 표의 세 필드는 모든 OpenAI 호환 응답에서 신뢰할 수 있는 것입니다.
답을 스트리밍하면 usage는 시작 시점에 알 수 없습니다. DeepSeek 자체 API에서는 data: [DONE] 전 마지막 콘텐츠 청크에 도착하며(DeepSeek API 문서, 2026년 10월 21일 확인), 다른 API는 다르게 보내거나 요청 시에만 보낼 수 있으니 클라이언트가 무엇을 받는지 확인하세요. 스트리밍 자체는 Python에서 스트리밍 응답에서 다룹니다.
양쪽 가격이 다른 이유#
프롬프트를 읽는 것과 답을 쓰는 것은 다른 종류의 작업입니다. 모델은 전체 프롬프트를 한 번에 처리하지만, 답은 한 번에 한 토큰씩 생성해야 하며 각 새 토큰은 이전 토큰에 의존합니다. 그래서 제공자는 보통 출력을 입력보다 비싸게 책정하며, 어떤 가격표에서든 모델당 두 숫자가 보입니다.
아래 예시로 쓰는 모델 MiniMax-M2.7(id minimax-m2.7)도 이 패턴을 따릅니다. 현재 1M 토큰당 가격은 입력 $0.05, 출력 $0.15입니다.
공식#
가격은 100만 토큰당으로 표시되므로, 한 요청의 비용은:
cost = input_tokens × input_price ÷ 1,000,000
+ output_tokens × output_price ÷ 1,000,000산술을 보여주기 위해 임의의 둥근 가격으로 나타낸 것입니다(예시이며, 아래 표의 현재 가격으로 대체하세요):
# example, substitute current prices from the table
price_in = 0.20 # USD per 1M input tokens
price_out = 0.80 # USD per 1M output tokens
prompt_tokens = 2000
completion_tokens = 500
cost = (prompt_tokens * price_in + completion_tokens * price_out) / 1_000_000
# 2000 × 0.20 ÷ 1,000,000 = 0.0004 (input)
# 500 × 0.80 ÷ 1,000,000 = 0.0004 (output)
# 0.0004 + 0.0004 = 0.0008 USD실제 모델로 계산한 예#
위 usage 예시의 요청을 보겠습니다: 입력 2,000 토큰, 출력 500 토큰. CheapTokens를 통한 MiniMax-M2.7에서는 $0.00018입니다. 이 숫자는 페이지가 표시될 때마다 현재 가격표로 계산됩니다.
요청 하나는 아주 작으니 규모를 키워 보면 도움이 됩니다. 이 크기의 요청을 10,000번 보내는 작은 앱은 입력 20,000,000 토큰과 출력 5,000,000 토큰을 쓰며, 이는 $1.75입니다.
우리 목록의 다른 모델에서 같은 요청:
| 모델 | 입력 $/1M | 출력 $/1M | 비용 | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00006 | $0.00012 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00008 | $0.00017 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00018 | $0.0012 |
총 입력 2,000개 및 출력 500개 토큰입니다. 100만 토큰당 가격은 현재 기준이며 당사 요금제에 따라 함께 변경됩니다. OpenRouter 열은 동일한 작업량에 대한 참고 가격을 보여줍니다.
여기서 출력은 토큰 수에서 작은 부분(2,500 중 500)이지만 토큰 비중보다 청구서에서 더 큰 부분을 차지합니다. 출력 토큰 가격이 더 높기 때문입니다(표 참조). 이 모델에서는 출력 쪽이 OpenRouter 기준 가격 대비 절감이 확인되는 부분이기도 하며, 앱이 긴 답을 쓴다면 유용합니다.
코드에서 사용하기#
공식 openai Python 패키지에서 CheapTokens base URL을 지정해 usage을 읽을 수 있습니다:
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="YOUR_API_KEY",
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[{"role": "user", "content": "Explain input and output tokens in two sentences."}],
)
usage = response.usage
print("input:", usage.prompt_tokens)
print("output:", usage.completion_tokens)
print("total:", usage.total_tokens)
# example, substitute current prices from the table above
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"approx. cost: ${cost:.6f}")아직 요청을 보내지 않았다면 먼저 CheapTokens로 첫 API 요청을 따르세요.
토큰을 덜 쓰는 방법#
- 프롬프트를 줄이세요. 시스템 프롬프트를 다듬고 모델에 필요 없는 지시를 제거하세요. 보내는 모든 토큰은 매 요청마다 청구됩니다.
- 기록을 줄이세요. 긴 채팅에서는 전체 대화 대신 마지막 몇 턴이나 짧은 요약을 유지하세요.
- 문서의 관련 부분만 보내세요. 한 페이지의 텍스트가 파일 전체보다 저렴합니다.
- 필요한 형식을 요청하세요. "세 개의 불릿으로 답하라"는 열린 에세이보다 출력 토큰이 적습니다.
max_tokens을 의도적으로 설정하세요. 출력만 제한합니다. 너무 낮으면 답이 잘립니다. 자세한 내용은 AI 답변이 문장 중간에 멈추는 이유?에 있습니다. CheapTokens의 MiniMax-M2.7은 답당 최대 8,192 출력 토큰을 허용하며 180K 컨텍스트 창을 가집니다.
더 큰 워크플로의 비용을 추정하려면 AI 에이전트 비용을 추정하는 방법을 참조하세요.
기억할 점#
- 모든 요청에는 입력 토큰(
prompt_tokens)과 출력 토큰(completion_)이 있습니다.tokens - 가격이 별도이며, 보통 출력이 더 비쌉니다.
- 비용 = 입력 토큰 × 입력 가격 + 출력 토큰 × 출력 가격, 가격은 1M 토큰당.
- 추측하지 말고 응답의
usage에서 숫자를 읽으세요.
CheapTokens에서는 선불 잔액 하나로 모든 모델을 이용할 수 있고, 모델별 가격은 피크 시간 요금 없이 고정되며, API는 OpenAI Chat Completions 및 Anthropic Messages와 호환됩니다. 위 예시를 시도하려면 API 키를 받아 첫 요청을 보내세요.
모든 모델의 현재 가격: CheapTokens 가격.



