OpenAI API 기능별 사용량 추적: 비용 귀속 가이드

Ashley Innocent

Ashley Innocent

12 May 2026

OpenAI API 기능별 사용량 추적: 비용 귀속 가이드

OpenAI 인보이스에는 지난달 $4,237를 지출했다고 나와 있습니다. 하지만 그중 $3,100가 폭주하는 요약 엔드포인트에서 발생했고, $700는 한 달에 $50를 지불하는 고객에게서, 그리고 $437는 아무도 사용하지 않는 기능에서 발생했다는 사실은 알려주지 않습니다. 대시보드는 가격 책정, 용량 또는 로드맵 결정에 필요한 전체 그림을 숨깁니다.

이 가이드는 OpenAI API 비용을 올바르게 귀속시키는 방법을 보여줍니다: 모든 요청에 메타데이터를 태그하고, 기능, 경로 및 고객별로 지출을 집계하며, 키별 예산 상한을 설정하고, 비용이 미스터리한 항목이 아닌 명확한 항목이 되도록 프롬프트를 설계합니다. LLM 기능을 제공한다면, 이 작업은 AI를 폭주하는 지출에서 관리 가능한 제품 비용으로 전환시킵니다.

💡
Apidog는 비용 추적 래퍼가 프로덕션에 배포되기 전에 제대로 작동하는지 확인하는 데 필요한 요청 수준 가시성과 시나리오 테스트를 제공합니다. Apidog를 다운로드하여 태그가 지정된 요청을 다시 재생하고, 로그 형태를 확인하며, 모든 호출이 데이터 웨어하우스가 예상하는 메타데이터를 포함하는지 검증하는 데 사용하십시오.
버튼

요약 (TL;DR)

모든 OpenAI API 호출에 구조화된 메타데이터(기능, 경로, 고객 ID, 환경)를 태그하고, 토큰 수와 계산된 비용을 캡처하는 요청당 구조화된 로그 라인을 내보낸 다음, 데이터 웨어하우스에서 태그별로 집계하십시오. OpenAI 대시보드에서 키별 예산 상한을 설정하고, 시간당 지출 이상 징후에 대한 알림을 설정하며, Apidog 시나리오 테스트를 통해 래퍼를 처음부터 끝까지 검증하여 숫자를 신뢰할 수 있는지 확인하십시오.

서론

화요일에 새로운 AI 기능을 출시했습니다. 금요일 아침, CFO가 DM으로 OpenAI 비용이 왜 40%나 급증했는지 묻습니다. 대시보드를 열어보니 총 지출이 증가하고 있습니다. 어떤 기능, 어떤 고객 또는 어떤 경로가 원인인지는 보여주지 않습니다. 추측하기 시작합니다.

이는 프로덕션 LLM 워크로드를 실행하는 모든 팀이 겪는 어려움입니다. OpenAI의 청구 인터페이스는 경리부를 위한 것이지, 엔지니어링 귀속을 위한 것이 아닙니다. 일일 총액, 모델별 분석만 볼 수 있습니다. 요청 형태, 이를 트리거한 고객 또는 모델을 호출한 기능은 볼 수 없습니다.

해결책은 개념적으로는 간단하지만 실행은 까다롭습니다. 모든 API 호출을 메타데이터 계층으로 감싸십시오. 모든 요청을 구조화된 저장소에 기록하십시오. 태그별로 집계하십시오. 상한을 설정하십시오. 차이에 대한 알림을 설정하십시오. 이 게시물이 끝날 때쯤에는 구체적인 데이터 모델, 두 가지 작동하는 코드 샘플, Apidog를 사용한 검증 워크플로, 그리고 직접 구축, 구매 또는 OpenAI 사용 API를 사용할지 결정할 수 있는 도구 비교를 갖게 될 것입니다.

비용 계산을 위한 가격 책정 컨텍스트는 GPT-5.5 가격 분석을 참조하십시오. 개발자 도구 측면의 관련 청구 귀속 문제에 대해서는 API 팀을 위한 GitHub Copilot 사용량 청구를 참조하십시오. OpenAI API 기본 사항에 대해서는 공식 OpenAI API 참조를 참조하십시오.

OpenAI의 청구 대시보드가 충분하지 않은 이유

지금 바로 OpenAI 청구 페이지를 열어보세요. 일일 지출 차트, 모델 분석 및 사용량 제한을 볼 수 있습니다. 이것이 전체 인터페이스입니다. 애플리케이션 하나, 고객 하나, 기능 하나만 있다면 잘 작동합니다. 하지만 동일한 제품에 여러 기능, 여러 고객, 여러 환경 또는 여러 개발자가 있는 순간, 대시보드는 쓸모없어집니다.

다음은 누락된 사항들입니다.

컨텍스트 없는 총 지출. 대시보드는 어제 GPT-5.5에 $312를 지출했다고 알려줍니다. 하지만 이 비용이 한 고객이 지원 채팅 엔드포인트를 50,000번 호출해서 발생했는지, 아니면 누군가 플래그를 잘못 설정하여 전체 지식 기반을 다시 요약하는 백그라운드 작업에서 발생했는지는 알려주지 않습니다. 차트에서는 둘 다 동일하게 보입니다.

기능별 분석 없음. OpenAI는 API 키와 모델별로 요청에 태그를 지정합니다. 하지만 기능, 경로, 고객 ID 또는 환경별로는 태그를 지정하지 않습니다. 이 중 어떤 것이라도 원한다면 직접 구축해야 합니다. 대시보드에는 제품 분석을 위한 기본 차원이 없습니다.

보고 지연. 사용량 데이터는 수십 분에서 몇 시간의 지연 후에 나타납니다. 대시보드에 폭주하는 루프가 나타날 때쯤이면 이미 신용카드가 소진된 상태입니다. 과거 차트가 아닌 실시간 추적이 필요합니다.

경고 기본 요소 없음. OpenAI는 조직당 하나의 예산 상한과 하나의 소프트 알림 이메일을 제공합니다. 키별 알림, 기능별 임계값, 이상 감지 기능은 없습니다. "채팅 엔드포인트가 한 시간에 $50를 초과하면 나에게 알려달라"는 기능을 원한다면 직접 구축해야 합니다.

고객 귀속 없음. AI 기능이 있는 B2B SaaS를 판매하는 경우, 어떤 고객이 어떤 지출을 발생시켰는지 알아야 가격을 책정하거나, 속도를 조절하거나, 상향 판매할 수 있습니다. 대시보드는 "이번 달에 고객 X가 나에게 얼마의 비용을 발생시키고 있는가"라는 질문에 답할 수 없습니다. 재무팀은 고객당 총 마진을 계산하기 위해 이 숫자가 필요합니다. 이 숫자가 없으면 단위 경제학은 추측에 불과합니다.

서비스 계정과 프로젝트 수준 키는 도움이 되지만 부분적입니다. OpenAI의 프로젝트 키를 사용하면 사용량을 프로젝트별로 분할할 수 있습니다. 이는 한 단계의 귀속을 제공합니다. 하지만 기능별, 고객별 또는 경로별 귀속은 제공하지 않습니다. 중요한 질문에 답하려면 여전히 애플리케이션 수준 메타데이터가 필요합니다. OpenAI 사용량 API는 요청당이 아닌 프로젝트별로 집계된 데이터를 반환합니다.

이 패턴은 LLM 기능을 대규모로 출시하는 모든 팀에서 반복됩니다. Dev.to의 "OpenAI는 당신이 얼마를 썼는지 알려줍니다. 어디에 썼는지는 아닙니다. 그래서 대시보드를 만들었습니다"라는 스레드가 입소문이 난 것은 이 문제를 명확히 지적했기 때문입니다. 측정할 수 없는 것은 관리할 수 없습니다. 기본 대시보드는 재무 질문에 답합니다. 당신은 제품 질문에 답해야 합니다.

비용 귀속 데이터 모델

비용 귀속은 한 가지 결정에서 시작됩니다. 모든 OpenAI 요청은 데이터 웨어하우스에 기록되는 태그가 지정된 이벤트를 생성합니다. 이 이벤트는 분석의 단위입니다. 스키마를 올바르게 설정하면 나머지 작업(대시보드, 경고, 상한)은 SQL 쿼리가 됩니다.

다음은 필요한 최소 스키마입니다.

열 (Column) 유형 (Type) 예시 (Example) 중요성 (Why it matters)
request_id uuid 7a91... 멱등성, 중복 제거, 재시도
timestamp timestamptz 2026-05-06T14:23:01Z 시계열 쿼리, 이상 감지
feature text support-chat 호출을 트리거한 제품 영역
route text /api/v1/chat/answer HTTP 경로 또는 백그라운드 작업 ID
customer_id text cust_4291 고객별 지출, 총 마진
environment text prod, staging, dev 개발 비용을 고객 귀속에서 제외
model text gpt-5.5, gpt-5.4-mini 모델별로 가격이 다름
prompt_tokens int 15234 응답에서 가져온 입력 토큰 수
completion_tokens int 812 응답에서 가져온 출력 토큰 수
reasoning_tokens int 4500 추론 토큰 (출력 요금으로 계산됨)
cached_tokens int 12000 프롬프트 캐시 적중, 50% 요금 부과
latency_ms int 2341 비용과 사용자 경험 간의 상관관계 분석용
cost_usd numeric(10,6) 0.045672 쓰기 시점에 토큰 수로부터 계산됨
prompt_cache_key text system-v3 기능별 캐시 적중률 추적
error_code text null, 429 재시도를 이중으로 계산하지 않도록

쿼리 시점이 아닌 쓰기 시점에 비용을 계산하십시오. 가격은 변동될 수 있습니다. 요청이 발생한 날 지불한 요금을 반영하는 고정된 숫자를 원할 것입니다. GPT-5.5에 대한 계산 로직은 다음과 같습니다:

PRICING = {  # USD per 1M tokens, as of May 2026
    "gpt-5.5":      {"input": 5.00,  "cached": 2.50,  "output": 30.00},
    "gpt-5.5-pro":  {"input": 30.00, "cached": 15.00, "output": 180.00},
    "gpt-5.4":      {"input": 2.50,  "cached": 1.25,  "output": 15.00},
    "gpt-5.4-mini": {"input": 0.25,  "cached": 0.125, "output": 2.00},
}

def compute_cost_usd(model, prompt_tokens, cached_tokens, completion_tokens, reasoning_tokens):
    rates = PRICING[model]
    uncached = max(0, prompt_tokens - cached_tokens)
    input_cost  = (uncached      * rates["input"])  / 1_000_000
    cache_cost  = (cached_tokens * rates["cached"]) / 1_000_000
    output_cost = ((completion_tokens + reasoning_tokens) * rates["output"]) / 1_000_000
    return round(input_cost + cache_cost + output_cost, 6)

추론 토큰은 출력으로 간주됩니다. OpenAI API는 이를 `usage.completion_tokens_details.reasoning_tokens`로 반환하지만, 출력 요금으로 청구됩니다. 이를 놓치면 모든 Thinking 모드 호출에서 비용을 과소 계산하게 됩니다. 전체 가격 계산에 대해서는 GPT-5.5 가격 분석을 참조하십시오.

이제 OpenAI 클라이언트를 래핑하십시오. 모든 호출은 하나의 함수를 통해 이루어집니다. 이 함수는 메타데이터를 가져와 요청을 하고 이벤트를 기록합니다.

import time, uuid, json, logging
from openai import OpenAI

client = OpenAI()
logger = logging.getLogger("llm.cost")

def call_with_attribution(
    *, feature, route, customer_id, environment,
    model, messages, **openai_kwargs
):
    request_id = str(uuid.uuid4())
    started = time.time()
    error_code = None
    response = None

    try:
        response = client.chat.completions.create(
            model=model, messages=messages, **openai_kwargs
        )
    except Exception as e:
        error_code = getattr(e, "code", "unknown_error")
        raise
    finally:
        latency_ms = int((time.time() - started) * 1000)
        u = response.usage if response else None
        prompt_tokens     = getattr(u, "prompt_tokens", 0)
        completion_tokens = getattr(u, "completion_tokens", 0)
        cached_tokens     = getattr(getattr(u, "prompt_tokens_details", None), "cached_tokens", 0) or 0
        reasoning_tokens  = getattr(getattr(u, "completion_tokens_details", None), "reasoning_tokens", 0) or 0
        cost_usd = compute_cost_usd(model, prompt_tokens, cached_tokens, completion_tokens, reasoning_tokens)

        logger.info(json.dumps({
            "event": "openai.request",
            "request_id": request_id,
            "feature": feature,
            "route": route,
            "customer_id": customer_id,
            "environment": environment,
            "model": model,
            "prompt_tokens": prompt_tokens,
            "completion_tokens": completion_tokens,
            "reasoning_tokens": reasoning_tokens,
            "cached_tokens": cached_tokens,
            "latency_ms": latency_ms,
            "cost_usd": cost_usd,
            "error_code": error_code,
        }))

    return response

이 단일 래퍼가 비용 귀속의 표면이 됩니다. 제품의 모든 기능이 이를 호출합니다. 구조화된 로그 라인은 데이터 웨어하우스의 입력입니다. 여기에서 기존 로그 파이프라인(Vector, Fluent Bit, Logstash, OTLP collector)을 통해 로그를 BigQuery, ClickHouse, Snowflake 또는 Postgres로 전송합니다. 두 번째 파이프라인도, 추가 서비스도 필요 없습니다.

Node.js 팀의 경우 형태는 동일합니다. OpenAI SDK를 메타데이터를 가져와 `response.usage`를 캡처하고 비용을 계산하며 JSON 라인을 기록하는 함수로 감싸십시오. 플랫폼이 이미 이벤트 버스(Kafka, NATS, Pub/Sub)를 실행 중이라면, stdout 대신 해당 이벤트 버스에 이벤트를 게시하고 다운스트림 소비자가 이를 데이터 웨어하우스 및 경고 시스템으로 분산시키도록 하십시오.

비용 추적을 연결하고 Apidog로 테스트하기

이제 스키마와 래퍼가 준비되었습니다. 이제 이를 작동 가능한 것으로 바꾸십시오. 다음 여섯 단계를 따르십시오.

1. 직접적인 OpenAI 호출을 래퍼로 교체합니다. 코드베이스에서 `OpenAI(` 및 `client.chat.completions.create`를 검색합니다. 모든 일치 항목은 `call_with_attribution(...)` 호출이 됩니다. `feature` 및 `route`를 필수 인수로 만드십시오. 전역 변수가 아닌 호출 지점에서 전달하십시오. 전달하는 것을 잊으면 함수가 "unknown"으로 기본값을 설정하는 대신 오류를 발생시켜야 합니다.

2. 구조화된 로그를 내보냅니다. JSON 형식으로 stdout에 로그를 기록하고, 이벤트당 한 줄을 사용합니다. 특히 이러한 이벤트에 대해 로거 수준을 INFO로 설정합니다. 디버그 노이즈와 섞지 마십시오. 이미 구조화된 로거(structlog, pino, winston)를 사용하고 있다면, 여기에 연결하십시오.

3. 데이터 웨어하우스에서 기능별로 집계합니다. 이벤트가 BigQuery 또는 ClickHouse에 도착하면 쿼리는 자동으로 작성됩니다.

SELECT
  feature,
  DATE_TRUNC(timestamp, DAY) AS day,
  COUNT(*) AS requests,
  SUM(cost_usd) AS spend_usd,
  SUM(prompt_tokens + completion_tokens) AS tokens,
  AVG(latency_ms) AS avg_latency_ms,
  SUM(cached_tokens) / NULLIF(SUM(prompt_tokens), 0) AS cache_hit_rate
FROM openai_events
WHERE environment = 'prod'
  AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY feature, day
ORDER BY day DESC, spend_usd DESC;

4. 경로별 지출을 차트로 만듭니다. Grafana, Metabase, Looker 또는 Superset을 테이블에 연결합니다. 세 가지 뷰를 구축합니다: 시간 경과에 따른 기능별 지출, 시간 경과에 따른 고객별 지출, 그리고 어제 지출 기준으로 정렬된 상위 20개 경로 테이블. 이것이 당신의 일일 운영 대시보드가 될 것입니다.

5. 배포 전에 Apidog로 래퍼를 테스트합니다. 대부분의 팀이 건너뛰고 후회하는 단계입니다. 당신의 래퍼는 구조화된 로그를 기록합니다. 스키마가 잘못되면, 당신의 데이터 웨어하우스도 조용히 잘못되고 대시보드는 거짓말을 할 것입니다. Apidog를 사용하여 당신의 서비스에 대한 엔드투엔드 테스트를 진행하십시오:

이 검증 단계에 적합한 더 넓은 API 테스트 접근 방식에 대해서는 QA 엔지니어를 위한 API 테스트 도구를 참조하십시오. 비용 귀속 범위와 함께 작동하는 계약 우선 접근 방식에 대해서는 계약 우선 API 개발을 참조하십시오.

6. 키별 예산 상한 및 알림을 설정합니다. OpenAI는 환경별 또는 기능별로 하나의 프로젝트 키를 만들 수 있도록 합니다. 이를 활용하십시오. `prod-support-chat` 키, `prod-summarization` 키, `staging-all` 키를 만드십시오. OpenAI 대시보드에 하드 상한을 설정하여 한 기능의 폭주 루프가 전체 조직 예산을 소진시키지 않도록 하십시오. 그 위에 자신만의 알림 시스템을 구축하십시오: 10분마다 실행되는 SQL 쿼리를 사용하여 특정 기능의 7일 이동 평균 시간당 지출이 3배를 초과하면 알림을 보내도록 합니다. PagerDuty, Opsgenie 또는 Slack 웹훅 모두 작동합니다. 트리거는 OpenAI가 아닌 데이터 웨어하우스에서 옵니다.

기본 키 상한과 웨어하우스 기반 알림의 조합은 두 가지 방어 계층을 제공합니다. 기본 상한은 재앙적인 소모에 대한 최후의 방어선입니다. 웨어하우스 알림은 상한에 도달하기 전에 느린 편차를 감지합니다.

고급 기술 및 프로 팁

기본 파이프라인이 실행되면 최적화가 이어집니다.

프롬프트 캐싱. GPT-5.5는 캐시된 토큰에 대해 입력 요금의 50%를 청구합니다. 시스템 프롬프트를 안정적인 접두사로 구조화하고 요청별 변수를 끝에 배치하십시오. 이렇게 하면 채팅 워크로드에서 70% 이상의 캐시 적중률이 일반적입니다. 대시보드에서 기능별 `cache_hit_rate`를 추적하여 프롬프트 변경이 적중률을 떨어뜨리는 시점을 확인할 수 있습니다. 공식 OpenAI 프롬프트 캐싱 문서는 자격 규칙을 다룹니다.

오프라인 작업을 위한 배치 API. 동기식 응답이 필요 없는 모든 작업은 50% 할인을 위해 배치 API를 통해 이루어집니다. 야간 요약, 평가 실행, 임베딩 백필, 문서 재처리 등이 포함됩니다. 비용 래퍼는 여전히 적용됩니다. 배치 엔드포인트를 호출하고 이벤트를 `batch_job_id`로 태그하여 원래 워크로드로 다시 귀속시킬 수 있습니다.

추론 노력 튜닝. GPT-5.5 Thinking은 더 높은 `reasoning.effort`를 사용하는 동일한 모델입니다. 각 노력 수준은 출력 토큰을 증가시킵니다. 기능을 감사하십시오: `low`로도 품질 기준을 통과할 수 있는 곳에서 `medium`을 실행하고 있습니까? A/B 테스트를 실행하고, 품질과 비용을 추적하며, 품질이 유지된다면 더 저렴한 옵션을 배포하십시오. 더 심층적인 수학적 내용은 GPT-5.5 API 사용 방법을 참조하십시오.

컨텍스트 창 규율. 긴 프롬프트는 비용이 많이 듭니다. 엄격한 검색 예산이 있는 RAG는 전체 지식 기반을 컨텍스트 창에 채워 넣는 것보다 낫습니다. 기능별 평균 `prompt_tokens`를 추적하십시오. 기능 변경 없이 매주 증가한다면 프롬프트가 부풀어 오르고 있는 것입니다.

GPT-5.5 272K 토큰 절벽을 주시하십시오. OpenAI는 272K 토큰을 초과하는 요청에 대해 2배의 입력 승수와 1.5배의 출력 승수를 적용합니다. 래퍼에 `prompt_tokens > 250000`일 때 경고를 기록하는 가드를 추가하여 절벽에 도달할 위험이 있는 프롬프트를 감지할 수 있도록 하십시오. 가격 책정 세부 정보는 GPT-5.5 가격 책정 게시물을 참조하십시오.

고객별 지출 상한. B2B를 판매하고 계약에 LLM 기반 기능이 포함되어 있다면 고객별 상한이 필요합니다. 데이터 웨어하우스에서 `customer_id`별로 누적 지출을 계산하고, 각 호출 전에 애플리케이션이 이를 확인하도록 합니다. 상한에 도달하면 "월별 AI 할당량 초과" 메시지와 청구 CTA를 포함한 429를 반환합니다. 이것이 AI 기능을 마진 위험에서 마진 제품으로 바꾸는 방법입니다.

피해야 할 일반적인 실수.

대안 및 도구

이것을 직접 구축할 필요는 없습니다. 다음은 솔직한 비교입니다.

접근 방식 (Approach) 강점 (What it does well) 비용 (What it costs) 사용 시점 (When to use)
OpenAI 사용량 API 기본, 설정 불필요, 정확성 높음 무료 하나의 프로젝트, 하나의 기능, 고객별 귀속 불필요 시
Helicone 드롭인 프록시, 대시보드, 캐싱, 사용자별 비용 무료 티어; 월 $20부터 유료 호스팅된 대시보드를 빠르게 원하고, 경로에 프록시가 있어도 괜찮을 때
Langfuse 오픈 소스, 자체 호스팅 또는 클라우드, 추적 + 비용 무료 자체 호스팅; 클라우드는 월 $29부터 하나의 도구에서 추적 및 비용을 원하고, 오픈 소스를 선호할 때
LangSmith LangChain과 긴밀한 통합, 평가 + 비용 유료 (사용자당 월 $39부터) 이미 LangChain을 사용 중이고, 하나의 공급업체를 원할 때
맞춤형 데이터 웨어하우스 (Custom warehouse) 완전한 제어, 기존 스택에 적합, 프록시 없음 엔지니어링 시간 대규모 워크로드, 맞춤형 차원, 엄격한 데이터 상주 요건 시

고려해야 할 절충점이 있습니다. 프록시(Helicone)는 중요한 경로에 한 단계를 추가합니다. 지연 비용은 작지만 실제하며, 가용성에 대한 의존성을 갖게 됩니다. 자체 호스팅 관찰 가능성 스택(Langfuse)은 완전한 제어권을 제공하지만 직접 운영해야 합니다. 맞춤형 데이터 웨어하우스 경로는 대부분의 대규모 팀이 결국 선택하는 방법입니다. 이는 나머지 데이터 스택과 통합되지만, 쿼리와 경고를 직접 작성해야 합니다. 기본 사용량 API는 요구 사항이 간단할 때는 괜찮지만, 복잡해지면 쓸모가 없어집니다.

실제로 좋은 LLM 비용 관찰 가능성이 무엇인지에 대한 더 깊은 내용은 Helicone 팀의 LLM 비용 추적 가이드에서 프록시 기반 접근 방식을 설명합니다. Langfuse의 비용 추적 문서는 오픈 소스 경로를 다룹니다.

플랫폼 규모로 이를 운영한다면, 패턴은 일반화됩니다. 비용 귀속 래퍼가 서비스 메시 전략에 어떻게 부합하는지에 대해서는 마이크로서비스 아키텍처를 위한 API 플랫폼을 참조하십시오.

실제 사용 사례

고객별 LLM 지출이 있는 B2B SaaS. 한 회사는 영업 인텔리전스 제품을 판매합니다. 각 고객은 요약 요청 시 GPT-5.5 호출을 트리거합니다. 귀속 기능이 없다면, 회사는 OpenAI에 월 $80,000를 지출한다는 것만 압니다. 고객별 귀속을 통해, 고객의 12%가 지출의 71%를 차지한다는 것을 알게 됩니다. 회사는 계층별 가격 책정, 최저 계층에 대한 소프트 할당량, 좌석당 초과 요금을 도입합니다. AI 기능의 총 마진은 한 분기 만에 41%에서 73%로 증가합니다.

내부 개발자 도구 추적. 한 엔지니어링 조직은 모든 개발자에게 개인 GPT-5.5 채팅 도우미에 대한 액세스를 제공합니다. 개발자별 태그(`customer_id`가 `dev_email`이 됨)를 통해 플랫폼 엔지니어링팀은 세 명의 개발자가 내부 지출의 50%를 차지한다는 것을 확인합니다. 그 중 두 명은 끄는 것을 잊은 자동화된 에이전트 루프를 실행하고 있었습니다. 이들을 끔으로써 월 $1,800를 절약할 수 있습니다. 세 번째 개발자는 합법적인 작업을 수행하고 있었으며, 데이터는 그들에게 더 높은 조직 전체 할당량을 정당화합니다.

AI 기능 지출 예측. 제품팀은 새로운 요약 기능을 출시하고 싶어 합니다. PM은 비용을 예측하는 방법을 모릅니다. 과거 기능별 데이터를 사용하여 팀은 모델을 구축합니다: 호출당 평균 프롬프트 토큰, 평균 출력 토큰, 활성 사용자당 예상 호출 수, 예상 활성 사용자 수. 예측 결과는 다음과 같습니다: 활성 사용자당 하루 $0.04, 또는 월 $1.20. 가격 책정팀은 기능을 사용자당 월 $5로 책정합니다. 단위 경제학이 가시적이기 때문에 재무팀은 승인합니다.

결론

측정할 수 없는 것은 관리할 수 없습니다. OpenAI의 청구 대시보드는 재무 질문에 답합니다. 기능별, 고객별, 경로별 귀속은 제품 질문에 답합니다. 래퍼를 구축하고, 이벤트를 기록하고, 데이터 웨어하우스를 쿼리하면, AI 비용이 더 이상 미스터리가 아닙니다.

다섯 가지 핵심 사항:

Apidog를 다운로드하여 비용 귀속 래퍼를 처음부터 끝까지 검증하는 데 사용하십시오. 태그가 지정된 요청으로 AI 엔드포인트를 구동하고, 로그 페이로드 형태를 확인하며, 환경 전반에 걸쳐 시나리오를 다시 재생하여 데이터 웨어하우스가 신뢰하는 데이터가 엔지니어가 작성한 데이터인지 확인하십시오.

관련 비용 관리 자료로는 GPT-5.5 가격 분석API 팀을 위한 GitHub Copilot 사용량 청구를 참조하십시오.

자주 묻는 질문 (FAQ)

추론 토큰은 청구 시 입력으로 간주되나요, 아니면 출력으로 간주되나요?추론 토큰은 출력 요율로 청구됩니다. OpenAI API는 `usage.completion_tokens_details.reasoning_tokens` 아래에 이를 반환합니다. 비용을 계산할 때 `completion_tokens`에 추가하십시오. 노력별 승수에 대해서는 GPT-5.5 가격 분석을 참조하십시오.

`response.usage`는 OpenAI 대시보드와 비교하여 얼마나 정확한가요?`response.usage`의 토큰 수는 대시보드와 토큰 단위로 일치합니다. 오래된 요금표로 비용을 계산하면 가격 변경으로 인해 약간의 오차가 발생할 수 있습니다. 모델별 요금을 고정하고 OpenAI가 가격 변경을 발표하는 날 업데이트하십시오.

OpenAI 프로젝트 키만으로 귀속을 할 수 있나요?프로젝트 키는 프로젝트별이라는 한 가지 귀속 차원을 제공합니다. 기능별, 고객별 또는 경로별 귀속은 제공하지 않습니다. 환경 분할 및 예산 상한을 위해 프로젝트 키를 사용하고, 다른 모든 것에 대해서는 애플리케이션 수준 메타데이터를 사용하십시오.

재시도 및 속도 제한 오류는 어떻게 되나요? 비용이 이중으로 계산되나요?모델이 실행되기 전에 실패한 요청(4xx, 완료 전 네트워크 오류)은 `usage` 객체를 반환하지 않으므로 비용이 기록되지 않습니다. 성공했지만 애플리케이션 계층에서 재시도된 요청은 `request_id`를 재사용하지 않으면 두 번 기록됩니다. 멱등성 재시도는 동일한 `request_id`를 전달해야 하며, 래퍼는 쓰기 시에 중복을 제거해야 합니다.

OpenAI 사용량 API는 얼마나 빨리 데이터를 반환하나요?사용량 API는 수십 분의 지연이 있습니다. 실시간 의사 결정(경고, 킬 스위치)을 위해서는 자체 데이터 웨어하우스를 사용하십시오. 월별 대사를 위해서는 사용량 API가 적절하며 청구서와 일치합니다.

로그 볼륨을 줄이기 위해 요청을 샘플링해야 하나요?아니요. 데이터 볼륨은 작으며(요청당 한 줄의 JSON), 샘플링은 고객별 및 경로별 귀속을 깨뜨립니다. 모든 요청을 기록하십시오.

이 접근 방식을 다른 LLM 공급자에게도 사용할 수 있나요?예. 스키마는 일반화됩니다. `provider` 열(`openai`, `anthropic`, `google`, `deepseek`)과 공급자별 가격표를 추가하십시오. 래퍼는 공급자별이지만, 데이터 웨어하우스와 대시보드는 그렇지 않습니다. 비교 지점으로는 DeepSeek V4 API 가격을 참조하십시오.

이것이 임베딩 및 이미지 생성 호출에도 작동하나요?예, 공급자별 비용 계산 방식에 따라 작동합니다. 임베딩은 균일 요금으로 입력 토큰당 청구됩니다. 이미지는 해상도별 요율로 이미지당 청구됩니다. 스키마에 `endpoint`(예: `chat`, `embeddings`, `image`)를 추가하고 이를 기반으로 비용 계산을 분기하십시오.

버튼

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요