k
korAI
중급 전체
중급2026-05-206분

토큰 예산을 설계하면 비용이 절반으로 줄어든다

입력·출력 토큰을 의도적으로 제어하는 전략을 익히면 품질을 유지하면서 API 비용을 대폭 절감할 수 있다. 컨텍스트 창을 낭비 없이 채우는 실전 기법을 다룬다.

token-managementcost-optimizationprompt-caching

왜 토큰 관리가 중급의 핵심인가

기초 단계에서는 프롬프트를 그냥 길게 쓰는 경향이 있다. 하지만 토큰은 곧 비용이고, 컨텍스트 창의 앞쪽과 뒤쪽에 위치한 내용이 모델 주의도에 훨씬 큰 영향을 미친다는 연구 결과가 있다("Lost in the Middle" 현상). 토큰을 전략적으로 배치하면 비용과 품질을 동시에 잡을 수 있다.

입력 토큰 절감 3가지 전략

1. 시스템 프롬프트 캐싱 활용
반복 호출 시 동일한 시스템 프롬프트는 cache_control을 붙여 프롬프트 캐시를 활성화한다. Anthropic 기준 캐시 히트 시 입력 토큰 비용이 90% 감소한다.

2. 불필요한 컨텍스트 청소
대화 히스토리가 쌓이면 중간 턴의 장황한 내용을 요약 메시지 1개로 교체한다. 전체 히스토리를 그대로 넘기는 것은 토큰 낭비의 주범이다.

3. max_tokens로 출력 상한 고정
짧은 답변만 필요한 작업(분류, 예/아니오 판단)에 max_tokens=50처럼 낮게 설정하면 출력 토큰을 직접 제어할 수 있다.

코드로 보는 캐시 + 토큰 제어

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const SYSTEM_PROMPT = `
당신은 고객 문의를 분류하는 전문가입니다.
카테고리: [결제, 배송, 환불, 기술지원, 기타]
반드시 카테고리 이름 하나만 반환하세요.
`.trim();

async function classifyInquiry(userMessage: string): Promise<string> {
  const response = await client.messages.create({
    model: "claude-haiku-4-5",
    max_tokens: 20, // 분류 작업이므로 출력 토큰 최소화
    system: [
      {
        type: "text",
        text: SYSTEM_PROMPT,
        cache_control: { type: "ephemeral" }, // 시스템 프롬프트 캐싱
      },
    ],
    messages: [{ role: "user", content: userMessage }],
  });

  // 사용 토큰 모니터링
  const usage = response.usage;
  console.log({
    inputTokens: usage.input_tokens,
    outputTokens: usage.output_tokens,
    cacheCreation: (usage as any).cache_creation_input_tokens ?? 0,
    cacheRead: (usage as any).cache_read_input_tokens ?? 0,
  });

  return response.content[0].type === "text" ? response.content[0].text : "기타";
}

// 동일 시스템 프롬프트로 반복 호출 → 2번째부터 캐시 히트
await classifyInquiry("주문한 상품이 아직 안 왔어요");
await classifyInquiry("결제가 두 번 됐습니다");

토큰 비용 설계 체크리스트

  • [ ] 시스템 프롬프트가 1,024 토큰 이상이면 cache_control 적용 여부 확인
  • [ ] 분류·추출 등 단답 작업에 max_tokens를 50 이하로 설정했는가
  • [ ] 멀티턴 대화에서 히스토리가 10턴을 넘으면 중간 요약으로 압축했는가
  • [ ] usage 필드를 로깅해 실제 소비 토큰을 주기적으로 모니터링하는가
  • [ ] 긴 문서 첨부 시 핵심 청크만 선별해 넣고 있는가(전문 붙여넣기 지양)