본문 바로가기
카테고리 없음

API 토큰 비용 - 입력과 출력이 다른 청구서 보고 깨달은 돈의 흐름

by BOOST YOUR INFORMATION 2026. 5. 12.

API 토큰 비용 입력과 출력이 다른 요금 참조 이미지
API 토큰 비용 - 입력과 출력이 다른 개발자가 청구서의 돈의 흐름

 

API 토큰 비용 - 입력과 출력이 다른 요금이라는 사실, 20년차 개발자가 청구서 보고 깨달은 돈의 흐름

AI API 비용에서 가장 많이 놓치는 사실이 하나 있다. 입력 토큰과 출력 토큰의 요금이 다르다는 것이다. 대부분의 모델에서 출력 토큰이 입력 토큰보다 2배에서 5배 비싸다. 100만 토큰을 입력으로 보내는 것보다 100만 토큰을 출력으로 받는 게 훨씬 많은 비용이 든다. 이걸 모르고 AI 서비스를 설계하면 어느 날 갑자기 청구서가 예상의 몇 배로 나오는 상황을 마주하게 된다.

입력과 출력, 수도꼭지와 수영장의 차이

입력 토큰은 수도꼭지에 흘려보내는 물이라고 생각하면 된다. 일정한 속도로 들어가고 비용이 발생한다. 출력 토큰은 수영장을 채우는 것이다. 같은 양의 물이지만 수영장을 채우는 건 더 많은 인프라, 더 많은 에너지가 든다. AI 모델 입장에서도 답변을 생성하는 건 입력을 처리하는 것보다 훨씬 많은 연산이 필요하다. 요금 차이가 나는 게 논리적으로 이해가 된다.

GPT-4o 기준으로 보면 입력은 백만 토큰당 약 5달러, 출력은 백만 토큰당 약 15달러 수준이다. Claude Sonnet 기준으로는 입력이 백만 토큰당 3달러, 출력이 15달러다. 출력이 5배 비싸다. 이 차이를 설계에 반영하지 않으면 비용이 폭발할 수 있다.

# 실제 API 비용 계산기
def calculate_api_cost(
    input_tokens: int,
    output_tokens: int,
    model: str = "gpt-4o"
) -> dict:
    
    # 백만 토큰당 달러 기준 (2025년 기준 참고용)
    pricing = {
        "gpt-4o": {"input": 5.0, "output": 15.0},
        "gpt-4o-mini": {"input": 0.15, "output": 0.60},
        "claude-sonnet": {"input": 3.0, "output": 15.0},
        "claude-haiku": {"input": 0.25, "output": 1.25},
        "gemini-1.5-pro": {"input": 1.25, "output": 5.0}
    }
    
    if model not in pricing:
        return {"error": "모델 정보 없음"}
    
    price = pricing[model]
    input_cost = (input_tokens / 1_000_000) * price["input"]
    output_cost = (output_tokens / 1_000_000) * price["output"]
    total_cost = input_cost + output_cost
    
    return {
        "model": model,
        "input_tokens": input_tokens,
        "output_tokens": output_tokens,
        "input_cost_usd": round(input_cost, 6),
        "output_cost_usd": round(output_cost, 6),
        "total_cost_usd": round(total_cost, 6),
        "output_ratio": round(output_cost / total_cost * 100, 1)
    }

# 예시: 1000토큰 입력, 500토큰 출력
result = calculate_api_cost(1000, 500, "claude-sonnet")
print(result)

# 비교: 같은 입력에 출력이 2배라면
result2 = calculate_api_cost(1000, 1000, "claude-sonnet")
print(result2)

출력 토큰이 비싼 이유, 음식 값이 아니라 요리사 값

식당에 비유해보자. 재료비가 입력 토큰이라면 출력 토큰은 요리사 인건비다. 재료를 가져다 주는 건 상대적으로 단순하다. 그걸 요리로 만들어내는 건 스킬이 필요하고 시간이 더 걸린다. AI도 마찬가지다. 프롬프트를 받아서 이해하는 것보다 답변을 생성하는 과정이 연산 집약적이다. GPU 자원을 더 많이 쓴다. 그 비용이 요금에 반영된 것이다.

이 구조를 알면 설계 방향이 달라진다. 출력을 줄이는 게 입력을 줄이는 것보다 비용 절감 효과가 크다. 짧게 답하게 유도하거나, 구조화된 형식으로 요청해서 불필요한 설명 없이 결과만 받는 게 훨씬 경제적이다.

현장에서 내가 배운 가장 큰 교훈이 이거다. AI에게 "자세히 설명해줘"라고 하면 돈이 많이 든다. "다음 형식으로만 답해줘"라고 하면 돈이 적게 든다. 출력을 제어하는 프롬프트 설계가 비용 관리의 핵심이다.

실무에서 청구서 폭탄을 맞은 사례들

고객사 AI 서비스를 운영하면서 비용이 예상을 초과한 사례가 여러 번 있었다. 가장 기억에 남는 건 챗봇에 "이전 대화를 요약해서 컨텍스트로 넣는" 기능을 추가했을 때다. 매 요청마다 이전 대화 전체를 입력으로 넣다 보니 대화가 길어질수록 입력 토큰이 폭발적으로 늘었다. 처음엔 기술적으로 그럴싸해 보였는데 비용으로 보면 재앙이었다.

또 다른 사례는 AI 코드 리뷰 기능이었다. 코드 전체를 입력으로 넣고 상세한 리뷰를 받도록 설계했더니 출력 토큰이 어마어마했다. 지적사항마다 설명을 길게 달다 보니 입력보다 출력이 더 많이 나오는 상황까지 갔다. 이때 배운 게 출력 형식을 지정하는 게 얼마나 중요한지였다. 리뷰 결과를 JSON 형식으로 받고, 각 항목은 50자 이내로 제한하니 비용이 40% 이상 줄었다.

# 출력 토큰 절약 프롬프트 설계 예시

# 비용이 많이 드는 방식
expensive_prompt = """
다음 코드를 리뷰해주세요. 각 문제점에 대해 자세히 설명하고 
개선 방안도 함께 제시해주세요.

코드:
{code}
"""

# 비용 효율적인 방식
efficient_prompt = """
다음 코드를 리뷰하세요. 결과는 아래 JSON 형식만 사용하세요.
각 issue의 description은 30자 이내로 작성하세요.

{{
  "issues": [
    {{"line": 숫자, "severity": "high/medium/low", "description": "설명"}}
  ],
  "score": 1-10
}}

코드:
{code}
"""

print("비용 효율적인 프롬프트를 사용하면 출력 토큰을 50-70% 줄일 수 있습니다.")

입력 토큰을 전략적으로 줄이는 법

입력 토큰 절감도 중요하다. 특히 시스템 프롬프트는 매 API 호출마다 반복해서 들어가기 때문에 조금만 줄여도 누적 효과가 크다. 내가 쓰는 방법은 시스템 프롬프트를 작성한 뒤 반드시 토큰 수를 측정하고, 같은 의미를 더 적은 단어로 표현할 방법을 찾는 것이다.

또 하나는 RAG를 쓸 때 검색 결과를 무조건 다 넣지 않는 것이다. 연관성 점수를 기준으로 상위 3개만 넣는다든지, 각 문서의 앞부분 200자만 넣는다든지 하는 식으로 입력 토큰을 제한한다. 처음엔 품질이 떨어질까 걱정했는데 실제로 해보면 적절히 선별된 컨텍스트가 모든 걸 때려넣는 것보다 오히려 나은 결과가 나올 때가 많다.

토큰 = 돈이라는 현실을 받아들인 후

20년 넘게 개발을 하면서 비용 의식이 중요하다는 걸 많이 배웠다. 데이터베이스 쿼리를 최적화하고, 캐시를 쓰고, 불필요한 API 호출을 줄이는 게 다 비용 의식에서 나온다. AI API도 다르지 않다. 토큰이 곧 돈이라는 인식을 갖고 설계해야 지속 가능한 서비스를 만들 수 있다.

처음에는 "AI가 알아서 잘 해주겠지" 하고 무분별하게 넣었다가 청구서를 보고 식은땀을 흘렸다. 지금은 기능 설계를 할 때 토큰 예산을 먼저 정하고 시작한다. 이 기능 하나에 평균 몇 토큰이 드는지, 월 사용자가 몇 명일 때 비용이 어떻게 되는지를 스프레드시트로 뽑아보고 결정한다. 이 습관 하나가 서비스의 수익성을 지켜준다.

입력과 출력의 비용 차이를 이해하고, 출력을 구조화해서 줄이고, 입력을 필요한 것만 넣는 설계를 하는 것. 이 세 가지가 AI 서비스에서 비용을 제어하는 핵심이다. 기술적으로 그럴싸한 설계가 비용 면에서는 최악인 경우가 많다. 항상 토큰 비용을 설계의 첫 번째 제약 조건으로 넣어야 한다.

출처 및 참고 자료

  • OpenAI 가격 정책: https://openai.com/api/pricing/
  • Anthropic 가격 정책: https://www.anthropic.com/pricing
  • Google AI 가격 정책: https://ai.google.dev/pricing
  • OpenAI 토큰 사용량 최적화 가이드: https://platform.openai.com/docs/guides/production-best-practices
  • tiktoken 라이브러리: https://github.com/openai/tiktoken

소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 ⚡ 정보 부스터 🚀