더우바오(Doubao) API는 볼케이노 엔진(Volcengine)의 아크(Ark) 플랫폼을 통해 제공되며, 청구서는 "호출 한 번에 정해진 요금"이 아니라 입력 토큰, 출력 토큰, 캐시, 추론 방식, 예약 자원이 함께 결정합니다. 많은 팀이 단일 단가로 예산을 세웠다가 출시 후 비용이 높아지는 것을 봅니다. 원인은 대개 모델 가격 인상이 아니라 입력 구조, 캐시 적중률, 호출 방식이 추정 당시와 달라졌기 때문입니다.

이 글은 더우바오 API 과금을 항목별로 대조할 수 있게 나누고, 추정과 절감의 순서를 제시합니다. 구체적인 단가는 사이트의 모델 가격과 볼케이노 엔진 공식 가격 페이지를 기준으로 하며, 가격과 규칙은 변경될 수 있습니다.

안내: 더우바오, 아크, 볼케이노 엔진은 각 권리자의 상표입니다. 이 글은 기술 설명 목적으로만 작성되었으며 어떤 제휴 관계도 의미하지 않습니다. 과금과 청구 규칙은 공식 페이지를 기준으로 합니다.

1. 청구서는 어떤 항목으로 구성되는가

볼케이노 엔진의 온라인 추론은 토큰 기준 후불 과금이지만, 전체 청구서에는 캐시 저장, 배치 추론, 예약 패키지, 파인튜닝 비용이 추가될 수 있습니다.

과금 항목 발생 시점 과금 단위 비고
입력(캐시 미적중) 프롬프트가 처음 컨텍스트에 들어갈 때 토큰 prompt_tokens에 대응
입력(캐시 적중) 이전에 캐시된 접두사를 재사용할 때 토큰 cached_tokens에 대응, 단가가 보통 더 낮음
캐시 저장 컨텍스트 캐시를 켠 뒤 토큰 × 시간 자연시간 내 최대 저장량 기준
출력 모델이 본문이나 구조화 결과를 생성할 때 토큰 completion_tokens에 대응
배치 추론 오프라인 일괄 작업 토큰 별도 가격, 보통 무료 한도 차감 불가
TPM 예약 패키지 분당 처리량을 예약할 때 구매 기간 호출하지 않아도 과금
모델 유닛 전용 연산 자원 구매 기간 호출하지 않아도 과금
파인튜닝 학습 단계 토큰 × 회차 또는 연산량 추론 비용과 별도

먼저 "쓴 만큼 내는 비용"과 "사면 내는 비용"을 구분해야 예산에서 항목이 빠지지 않습니다. 전자는 트래픽에 따라 변하고, 후자는 고정비입니다.

2. 입력과 출력은 각각 어떻게 계산되는가

입력은 요청에서 컨텍스트에 들어가는 모든 내용입니다. 시스템 프롬프트, 대화 이력, 도구 정의, 검색된 문서, 이미지 같은 멀티모달 내용이 모두 포함됩니다. 이 내용은 토큰으로 환산되어 입력 단가로 과금됩니다. 출력은 모델이 실제로 생성한 내용이며 출력 단가로 과금되고, 보통 단가가 더 높습니다.

놓치기 쉬운 세부 사항이 몇 가지 있습니다.

  • 다중 턴 대화에서 매번 전체 이력을 보내면 입력 토큰이 턴 수에 따라 누적되며, 최신 문장만 계산되지 않습니다.
  • 도구 호출의 스키마와 함수 설명도 입력 토큰을 차지하므로 도구가 많을수록 고정 오버헤드가 커집니다.
  • 이미지, 오디오 같은 멀티모달 입력은 규칙에 따라 환산되며 텍스트 길이만으로 추정할 수 없습니다.
  • 추론형 모델이 만드는 사고 내용은 보통 출력에 포함되며, 구체적인 기준은 공식 과금 설명을 따릅니다.

따라서 예산을 세울 때 "입력은 얼마, 출력은 얼마"만 물어서는 부족합니다. "내 요청에서 입력과 출력이 각각 얼마나 차지하는가"를 함께 봐야 합니다. 고객 지원 봇은 입력이 많고 출력이 짧으며, 장문 생성은 반대입니다. 두 경우의 비용 구조는 완전히 다릅니다.

3. 컨텍스트 캐시: 비용을 줄이지만 비용도 만든다

컨텍스트 캐시의 원리는 안정적인 접두사를 재사용하는 것입니다. 두 요청의 시작 부분이 완전히 같으면 적중 부분은 더 낮은 캐시 적중 단가로 과금되고, 새로 추가된 내용만 일반 입력으로 계산됩니다. 하지만 공짜는 아닙니다.

  1. 캐시 적중은 cached_tokens 기준으로 과금되며, 일반 입력보다 낮지만 0은 아닙니다.
  2. 캐시 저장은 시간 단위로 과금되며, 보통 자연시간마다 저장된 최대 토큰 수로 정산합니다.
  3. 캐시는 최선 노력 방식이라 적중을 약속하지 않습니다. 적중률이 낮으면 저장 비용이 절약한 입력 비용을 넘을 수 있습니다.

캐시를 실제로 이익으로 만드는 방법은 안정적인 내용을 요청 앞부분에 두는 것입니다. 시스템 프롬프트, 도구 정의, 지식 접두사를 고정하고, 타임스탬프, 랜덤 ID, 사용자 닉네임, 동적 검색 결과는 뒤쪽에 배치합니다. 업무 특성상 매 요청이 완전히 다르다면 캐시를 먼저 끄고 청구서를 관찰한 뒤 결정하는 편이 좋습니다.

4. 온라인, 배치, 예약 패키지를 어떻게 고를까

볼케이노 엔진은 여러 추론 방식을 제공하며 가격과 적합한 상황이 다릅니다.

  • 토큰 후불 온라인 추론: 트래픽이 불확실하고 지연 요구가 보통 수준인 업무에 적합합니다. 호출하지 않으면 과금되지 않으며, 신규 사용자에게는 대체로 차감 가능한 무료 한도가 있습니다.
  • 배치 추론: 오프라인 라벨링, 콘텐츠 검수, 대량 요약처럼 실시간 응답이 필요 없는 작업에 적합합니다. 가격이 보통 더 낮지만 무료 한도 차감은 지원하지 않습니다.
  • TPM 예약 패키지: 트래픽을 예측할 수 있고 안정적인 처리량이 필요한 운영 업무에 적합합니다. 일 단위 또는 시간 단위로 구매하며, 호출하지 않아도 과금됩니다.
  • 모델 유닛: 전용 연산 자원을 제공하며, 파인튜닝 모델이나 특수한 동시성 요구가 있는 상황에 적합합니다. 고정비에 해당합니다.

선택할 때는 단가만 비교하지 마세요. 배치 추론은 저렴하지만 결과 지연이 길고, 예약 패키지는 안정적이지만 유휴 시간에도 비용이 나갑니다. 업무를 "실시간/오프라인"과 "트래픽 예측 가능 여부"로 나눈 뒤 과금 방식을 맞추는 편이 단순히 모델을 바꾸는 것보다 효과적입니다.

5. usage 필드로 실제 추정 한 번 해보기

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

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ARK_API_KEY"],
    base_url="https://ark.cn-beijing.volces.com/api/v3",
)

resp = client.chat.completions.create(
    model=os.environ["ARK_ENDPOINT_ID"],  # 추론 엔드포인트 ID 또는 모델 ID, 콘솔 기준
    messages=[
        {"role": "system", "content": "당신은 고객 지원 도우미입니다. 세 문장 이내로 답하세요."},
        {"role": "user", "content": "주문이 발송된 뒤에도 주소를 바꿀 수 있나요?"},
    ],
)

print(resp.usage)  # 입력, 출력, 캐시 필드 기록

추정은 다음 순서로 합니다.

  1. 기록 기준을 고정합니다. 시간, 프로젝트, 모델, 입력 토큰, 출력 토큰, 캐시 적중, 스트리밍 여부, 재시도 횟수를 남깁니다.
  2. 일주일을 표본으로 각 시나리오의 평균 입력과 평균 출력을 계산합니다. 사이트 전체 평균은 쓰지 마세요.
  3. "입력 × 입력 단가 + 출력 × 출력 단가"로 1회 비용을 계산하고, 캐시 적중 부분은 더 낮은 단가로 따로 계산합니다.
  4. 일평균 호출량을 곱한 뒤 30을 곱해 월 추론 비용을 구합니다.
  5. 캐시 저장, 배치 작업, 예약 패키지, 모델 유닛 같은 고정 항목을 더합니다.
  6. 재시도, 피크, 가격 조정을 덮을 완충분을 남깁니다.
  7. 매달 청구서로 역산해 추정 모델을 보정합니다.

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

6. 비용 통제 순서를 거꾸로 하지 말 것

  1. 먼저 측정: 프로젝트, 모델, 시나리오별로 실제 토큰 구조를 나눠 비용이 가장 높은 세 호출을 찾습니다.
  2. 캐시 적중률 향상: 안정적인 접두사를 앞에 두고 동적 내용을 줄인 뒤 적중률 변화를 관찰합니다.
  3. 입력 축소: 검색은 관련 조각만 가져오고, 대화 이력은 요약하며, 도구 결과는 필요한 필드만 남깁니다.
  4. 출력 제한: 합리적인 max_tokens를 설정하고 JSON 또는 고정 필드를 요구해 반복 설명을 줄입니다.
  5. 모델 분기: 분류, 추출, 재작성은 경량 모델로 보내고 복잡한 추론만 상위 모델로 올립니다.
  6. 오프라인 작업을 배치로: 실시간 응답이 필요 없는 작업은 배치 추론에 넣고 피크 시간을 피합니다.
  7. 단가 협상은 마지막: 입력을 정리하지 않고 캐시도 적중하지 않는 상태에서는 더 싼 모델로 바꿔도 비용이 내려가지 않습니다.

7. 예산과 청구서를 관리하는 방법

  • 프로젝트마다 Key를 하나씩 두고 테스트와 운영을 분리해 한도가 서로 잠식되지 않게 합니다.
  • Key에 지출 상한과 잔액 알림을 설정해 이상 호출을 조기에 차단합니다.
  • 매주 "프로젝트, 모델, 시나리오" 기준으로 대조해 증가가 가장 빠른 호출을 찾습니다.
  • 캐시, 배치, 모델 분기로 절감한 금액을 따로 기록해야 최적화가 효과가 있었음을 증명할 수 있습니다.
  • 위안화 결제, 통합 청구서, 세금계산서가 필요한 팀은 OpenAI 호환 ZSQH AI Gateway로 연결할 수 있으며, 가격과 과금 기준은 모델 가격을 따릅니다.

자주 묻는 질문

더우바오 API에 무료 한도가 있나요?

온라인 추론에는 보통 신규 사용자 무료 한도가 있어 토큰 후불 소비를 차감할 수 있습니다. 배치 추론과 파인튜닝은 일반적으로 무료 한도 차감을 지원하지 않습니다. 한도와 유효 기간은 볼케이노 엔진 콘솔을 기준으로 합니다.

캐시 저장에도 왜 요금이 부과되나요?

캐시는 서버 저장 자원을 차지하므로 캐시 적중 토큰 비용 외에 저장량과 기간에 따른 비용이 발생합니다. 적중률이 낮다면 먼저 접두사 구조를 최적화하고 필요하면 캐시를 끄세요.

배치 추론이 항상 더 저렴한가요?

배치 추론의 토큰 단가는 보통 더 낮지만 결과가 실시간으로 반환되지 않고 무료 한도도 지원하지 않습니다. 오프라인 작업에는 적합하지만 낮은 지연이 필요한 온라인 고객 지원에는 맞지 않습니다.

재시도한 요청도 과금되나요?

서버가 추론을 완료해 토큰을 생성했다면 클라이언트가 타임아웃으로 결과를 받지 못했더라도 보통 과금됩니다. 실패 요청의 과금 여부는 청구서와 공식 설명을 기준으로 하며, 재시도 로직에는 백오프와 상한을 두어야 합니다.

자체 추정과 청구서가 왜 맞지 않나요?

흔히 빠뜨리는 항목은 대화 이력, 도구 정의, 멀티모달 환산, 캐시 저장, 재시도 요청, 예약 패키지 고정비입니다. 요청 ID로 사용량 로그를 대조해야 차이를 찾을 수 있습니다.

다음 단계

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

관련 글: