DeepSeek API의 청구서는 단순히 "호출 횟수 곱하기 단가"가 아니라 입력 토큰, 출력 토큰, 캐시 적중 상황이 함께 결정합니다. 많은 팀이 표시된 가격으로 예산을 잡았다가 출시 후 실제 비용이 더 높게 나오는데, 원인은 보통 단가가 바뀌어서가 아니라 입력 구조, 캐시 적중률, 재시도 횟수가 추정 당시와 달라졌기 때문입니다.

이 글은 DeepSeek API 과금을 계산 가능한 부분으로 나눕니다. 어떤 토큰이 과금되는지, 캐시가 왜 어떤 때는 적용되고 어떤 때는 적용되지 않는지, 응답의 usage로 어떻게 추정하는지, 비용 절감을 어떤 순서로 해야 하는지 다룹니다. 구체적인 단가는 사이트 내 모델 가격과 DeepSeek 공식 문서를 기준으로 합니다.

안내: DeepSeek는 해당 권리자의 상표입니다. 이 글은 2026년 10월의 일반적인 인터페이스 형태를 기준으로 하며, 가격, 모델 이름, 과금 규칙은 조정될 수 있으므로 구매 전에 공식 페이지를 다시 확인하세요.

1. 청구서를 네 가지 과금 항목으로 나누기

과금 항목 발생 시점 주요 영향 요인 최적화 방향
입력(캐시 미적중) 새 내용이 처음 컨텍스트에 들어갈 때 문서 길이, 대화 기록, 도구 정의 검색, 요약, 잘라내기
입력(캐시 적중) 요청이 이전에 캐시된 접두사를 재사용할 때 접두사 안정성, 적중률 고정 접두사, 무작위 내용 감소
출력 모델이 본문과 구조화 결과를 생성할 때 출력 길이, 형식 제약 max_tokens, JSON 제약
추론 내용 추론 모델이 사고 과정을 생성할 때 문제 난이도, 추론 단계 단순 작업에는 추론 모델 미사용

DeepSeek의 컨텍스트 캐시는 보통 입력 측에 반영됩니다. 적중한 접두사는 더 낮은 입력 가격으로 과금되고, 미적중 부분은 표준 입력 가격으로 과금됩니다. 캐시 저장 비용을 받는지, 캐시를 얼마나 보관하는지는 공식 문서의 현재 설명을 기준으로 하며, 오래된 글의 규칙을 그대로 따르지 마세요.

단일 요청은 다음과 같은 비용 공식으로 쓸 수 있습니다.

단일 요청 비용 =
  캐시 적중 입력 Tokens × 적중 단가
+ 캐시 미적중 입력 Tokens × 입력 단가
+ 출력 Tokens × 출력 단가

이 공식을 로그에 적용해야 "이 기능이 한 달에 얼마를 쓰는가"에 답할 수 있습니다. 콘솔의 총 청구서만 보면 어느 프로젝트, 어떤 요청 유형이 비용을 키우는지 찾기 어렵습니다.

2. 캐시가 비용을 줄이는 이유와 자주 무효화되는 이유

컨텍스트 캐시의 기본 논리는 두 요청의 앞부분이 완전히 같으면 서버가 이전 계산 결과를 재사용하고 새로 추가된 부분만 다시 계산한다는 것입니다. 따라서 캐시는 다음 내용에 가장 효과적입니다.

  1. 고정된 system prompt와 역할 설정.
  2. 안정적인 도구 정의와 함수 스키마.
  3. 반복 사용되는 지식베이스 조각, 제품 매뉴얼, 계약 템플릿.
  4. 멀티턴 대화에서 변하지 않는 앞부분.

반대로 다음 작성 방식은 캐시를 자주 무효화합니다.

  • system prompt 맨 앞에 현재 시간, 무작위 ID, 사용자 닉네임을 넣는 경우.
  • 매 요청마다 도구나 문서 순서를 다시 배열하는 경우.
  • 전체 문서를 맨 앞에 두고 사용자 질문을 뒤에 두는 경우.
  • 같은 업무를 서로 다른 모델, 다른 진입점 사이에서 오가는 경우.
  • 접두사가 너무 짧아 재사용 가능한 단위에 도달하지 못하는 경우.

변하는 내용을 요청 끝에 두고 안정적인 내용을 앞에 두는 것이 가장 간단하면서 효과적입니다. 캐시는 보통 최선 노력 방식이며 적중을 전제로 하지 않으므로, 예산은 "부분 적중"을 가정해 잡아야 하고 전부 적중한다고 가정하면 안 됩니다.

3. usage 필드로 실제 추정하기

글자 수로 토큰을 추측하지 마세요. 호출할 때마다 응답의 usage를 기록하고 일주일 연속 관찰하면 자신의 업무에 맞는 실제 구조를 얻을 수 있습니다.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",
)

resp = client.chat.completions.create(
    model="deepseek-chat",  # 모델 이름은 사이트 가격 페이지 기준
    messages=[
        {"role": "system", "content": "당신은 고객지원 도우미이며 세 문장 이내로 답하세요."},
        {"role": "user", "content": "주문 발송 후에도 주소를 변경할 수 있나요?"},
    ],
    max_tokens=256,
)

usage = resp.usage
hit = getattr(usage, "prompt_cache_hit_tokens", 0) or 0
miss = getattr(usage, "prompt_cache_miss_tokens", 0) or 0

print("입력", usage.prompt_tokens)
print("캐시 적중", hit, "미적중", miss)
print("출력", usage.completion_tokens)

응답에 캐시 세부 필드가 없다면 총 입력과 총 출력을 기록한 뒤 청구서나 사용량 페이지로 역산하세요. 중요한 것은 필드 기준을 일관되게 유지하는 것이며, 날짜나 진입점이 다른 데이터를 섞어 비교하면 안 됩니다.

추정 시 최소한 시간, 프로젝트, 모델, 입력 토큰, 출력 토큰, 캐시 적중, 재시도 횟수, 스트리밍 여부를 기록하세요. 금액은 월말에 단가를 곱해 계산하더라도 과정 지표는 매일 봐야 합니다.

4. 같은 호출량인데 청구서가 몇 배 차이나는 이유

시나리오 일반적인 토큰 구조 비용 확대 지점 최적화 중점
고객지원 봇 입력 많음, 출력 짧음 대화 기록이 반복 전송됨 요약, 캐시, 최근 몇 턴만 포함
문서 추출 입력 중간, 출력 구조화 같은 문서를 반복 읽음 접두사 캐시, 배치 처리
코드 어시스턴트 입력과 출력 모두 큼 도구 결과와 긴 파일 검색, 청킹, 출력 제한
장문 생성 입력 짧음, 출력 김 출력 토큰 누적 분할 생성, max_tokens
추론 작업 입력 중간, 출력에 사고 포함 사고 과정이 출력에 포함됨 단순 작업은 비추론 모델로 전환

차이는 보통 다섯 곳에서 발생합니다.

  1. 입출력 비율이 다름: 고객지원과 장문 작성은 비용 구조가 정반대이므로 같은 평균값으로 추정할 수 없습니다.
  2. 캐시 적중률이 다름: 고정 접두사는 재사용되지만 동적 내용은 캐시를 무효화합니다.
  3. 컨텍스트 길이가 다름: 매 턴마다 전체 문서를 넣으면 입력 비용이 턴 수에 따라 누적됩니다.
  4. 재시도 횟수가 다름: 429나 시간 초과 후 재전송은 요청량을 늘립니다. 실패 요청의 과금 여부는 청구서를 기준으로 합니다.
  5. 모델 등급이 다름: 추론 모델과 비추론 모델은 단가와 출력 길이가 모두 다르며, 잘못 맞추면 예산이 커집니다.

5. 비용 절감 순서를 거꾸로 하지 말 것

  1. 먼저 수치화: usage와 로그로 각 기능의 실제 토큰 구조를 계산하고 감에 의존하지 않습니다.
  2. 다음은 캐시 적중률 향상: system prompt, 도구 정의, 지식 접두사를 고정하고 앞부분의 동적 내용을 줄입니다.
  3. 다음은 입력 감소: RAG는 관련 조각만 회수하고, 대화 기록은 요약하며, 도구 출력은 필요한 필드만 남깁니다.
  4. 출력 제한: 합리적인 max_tokens를 설정하고 JSON이나 고정 필드를 요구해 반복 설명을 줄입니다.
  5. 모델 분기: 분류, 추출, 재작성은 경량 모델로 보내고 복잡한 추론만 상위 모델로 올립니다.
  6. 비동기와 배치 처리: 실시간 응답이 필요 없는 라벨링, 요약, 오프라인 분석은 큐에서 실행합니다.
  7. 모니터링과 알림: 프로젝트, 모델, 시나리오 세 축으로 사용량을 보고 예산 상한을 설정합니다.

순서를 거꾸로 하면 보통 이런 결말이 됩니다. 더 저렴한 모델로 바꿨지만 입력을 관리하지 않고 캐시도 적중하지 않아 청구서는 줄지 않고 품질만 떨어집니다.

6. 예산과 청구서 관리

  • 프로젝트마다 키 하나를 쓰고 테스트와 운영을 분리해 할당량이 서로 잠식되지 않게 합니다.
  • 키에 지출 상한과 알림을 설정해 비정상 호출 시 자동으로 손실을 막습니다.
  • 매주 "프로젝트, 모델, 시나리오" 기준으로 대조해 가장 빠르게 증가하는 호출을 찾습니다.
  • 캐시와 모델 분기로 절감한 부분을 별도로 기록해야 최적화 효과를 입증할 수 있습니다.
  • 위안화 결제와 인보이스가 필요한 팀은 국내 AI 게이트웨이로 청구서를 통합할 수 있습니다. 구체적인 가격, 환율, 인보이스 규칙은 모델 가격을 기준으로 합니다.

자주 묻는 질문

DeepSeek 캐시는 수동으로 켜야 하나요?

보통 캐시 구간을 명시적으로 표시할 필요가 없으며, 서버가 접두사 기준으로 재사용 여부를 자동 판단합니다. 구체적인 메커니즘과 보관 시간은 공식 문서를 기준으로 합니다. 사용자가 할 일은 설정을 늘리는 것이 아니라 접두사를 안정적으로 유지하는 것입니다.

캐시 적중률이 오르내리는 이유는 무엇인가요?

흔한 원인은 접두사에 타임스탬프, 무작위 ID, 사용자 정보가 섞이거나 요청이 서로 다른 모델과 진입점 사이를 오가는 것입니다. 먼저 변하는 내용을 끝으로 옮긴 뒤 일주일 관찰하세요.

추론 모델의 사고 내용도 과금되나요?

추론 모델이 생성한 사고 토큰은 보통 출력에 포함되어 과금됩니다. 구체적인 기준은 공식 문서와 청구서를 따르세요. 단순 분류와 추출 작업에는 추론 모델을 기본으로 쓰지 않는 것이 좋습니다.

입력과 출력 중 어느 쪽이 더 비싼가요?

대부분 모델은 출력 단가가 입력 단가보다 높지만, 캐시 적중 후 입력 가격은 보통 더 낮습니다. 두 단가만 비교하지 말고 자신의 입출력 비율로 단일 요청 비용을 계산하세요.

추정과 청구서가 맞지 않는 이유는 무엇인가요?

흔히 빠뜨리는 항목은 대화 기록, 도구 정의, 재시도 요청, 캐시 미적중, 긴 출력입니다. 요청 ID로 사용량 로그와 대조해야 차이를 찾을 수 있습니다.

다음 단계

먼저 ZSQH AI Gateway에서 테스트 키를 만들고 실제 작업으로 일주일간 실행하며 입력, 출력, 캐시 적중을 기록한 뒤 모델 가격으로 예산을 환산하세요. 모델 가용성과 가격은 가격 페이지를 기준으로 합니다.

관련 읽기: