LLM API 비용을 답의 품질은 그대로 두고 줄이는 방법들이다. 비용을 정하는 입력 토큰, 출력 토큰, 호출 횟수 중 어디에 돈이 많이 드는지 먼저 보고, 프롬프트 캐싱·모델 라우팅·배치 처리·토큰 줄이기를 상황에 맞게 섞어 쓴다.
| 방법 | 줄이는 것 | 이럴 때 쓴다 |
|---|---|---|
| 프롬프트 캐싱 | 반복되는 입력 비용 | 긴 지시문·문서를 매번 보낼 때 |
| 모델 라우팅 | 호출 한 번의 단가 | 쉬운 요청과 어려운 요청이 섞여 있을 때 |
| 배치 API | 전체 단가 | 결과를 바로 받지 않아도 될 때 |
| 응답 캐시 | 호출 횟수 | 똑같은 질문이 반복될 때 |
서비스에 LLM을 붙이면 비용이 생각보다 빨리 쌓인다. 보통 출력 토큰이 입력 토큰보다 비싸다. 에이전트처럼 같은 맥락을 여러 번 보내는 구조에서는 입력 토큰이 크게 불어난다. 로그에서 요청별 입력·출력 토큰을 모아 보면 어떤 방법이 가장 효과적일지 바로 드러난다.
기본은 프롬프트를 짧게 쓰는 것이다. 결과에 영향이 없는 지시와 예시는 지운다. 출력은 형식을 정해 짧게 받고, max_tokens로 상한을 둔다.
Claude API에서는 긴 시스템 프롬프트나 문서 끝에 cache_control을 붙이면 그 지점까지의 앞부분이 캐시에 저장된다. 같은 앞부분으로 다시 호출하면 캐시에서 읽어 오므로 그 부분의 입력 비용이 최대 90%까지 줄어든다. 다만 캐시에 처음 저장할 때는 평소보다 비싸고 캐시는 잠시 뒤 사라진다. 그러니 자주 반복되는 앞부분에만 건다.
캐시를 쓰려면 앞부분이 글자 하나까지 같아야 한다. 고정된 지시문과 문서는 앞에, 매번 바뀌는 사용자 입력은 뒤에 둔다. 똑같은 질문이 그대로 반복되는 서비스라면 LangChain의 SQLiteCache 같은 응답 캐시로 API 호출 자체를 없앨 수 있다.
같은 입력 토큰을 보낼 때의 상대 비용. 배치는 OpenAI 기준, 캐시 읽기는 Claude 기준이다.
분류, 추출, 짧은 답변은 소형 모델에 보내고 복잡한 추론만 상위 모델에 맡기면 평균 단가가 크게 내려간다. 작업 종류나 입력 길이 같은 규칙으로 나눠도 되고, RouteLLM 같은 라우팅 라이브러리로 자동화해도 된다. 라우팅을 적용한 뒤에는 작은 모델로 보낸 요청 중 일부를 골라 품질이 떨어지지 않았는지 꼭 확인한다.
밤사이 데이터 처리, 대량 평가, 문서 일괄 요약처럼 바로 답할 필요가 없는 일은 배치 API로 묶어 보낸다. OpenAI 배치 API는 요청을 파일로 올리면 24시간 안에 결과를 돌려주고, 가격은 절반이다. 사용자가 답을 기다리는 대화형 기능에는 맞지 않는다.
보통 한 가지만 쓰지 않고, 서비스에서 돈이 가장 많이 새는 곳에 맞는 방법부터 붙인다. 같은 맥락을 반복해서 보내면 캐싱을, 요청 난이도가 섞여 있으면 라우팅을, 기다려도 되는 작업이면 배치를 먼저 쓴다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 매 단계 다시 보내는 긴 지시문과 코드 맥락을 프롬프트 캐싱으로 싸게 읽기 |
| 사내 문서 검색 챗봇 | 고정 지시문은 캐시하고, 자주 나오는 같은 질문은 응답 캐시로 호출 없이 답하기 |
| 고객 문의 자동화 | 문의 분류·추출은 소형 모델로, 답변 초안처럼 판단이 필요한 단계만 상위 모델로 |
| 대량 평가·일괄 요약 | 밤사이 배치 API로 묶어 보내 절반 가격에 처리 |