급하지 않은 LLM 요청을 많이 모아 한꺼번에 맡기고 결과는 나중에(최대 24시간) 받는 대신, 요금을 온디맨드의 절반 정도로 낮추는 방식이다. 문서 분류·대량 번역·야간 리포트처럼 바로 답이 필요 없는 대량 작업에 쓴다.
| 항목 | 일반 API 호출 | 배치 API |
|---|---|---|
| 응답 | 바로 (초 단위) | 나중에 (최대 24시간) |
| 요금 | 기본가 | 약 50% 할인 |
| 맞는 작업 | 채팅, 실시간 기능 | 대량 분류·요약·번역 |
응답 시간 약속이 없으니 제공사는 서버가 한가할 때 요청을 몰아서 처리해 GPU를 꽉 채워 쓸 수 있다. 그렇게 아낀 비용을 할인으로 돌려주는 구조다. 배치 요청은 보통 일반 호출과 따로 한도를 잡기 때문에, 대량 작업을 돌려도 실시간 서비스의 한도를 덜 잡아먹는다.
OpenAI와 Anthropic 모두 배치 API를 제공하고, 흐름은 비슷하다. 요청마다 내가 정한 custom_id를 붙여 한 묶음으로 제출하고, 상태를 확인하다가 끝나면 결과를 받는다.
| 단계 | 할 일 |
|---|---|
| 1. 준비 | 요청마다 custom_id와 프롬프트 작성 |
| 2. 제출 | OpenAI는 JSONL 파일 업로드 후 배치 생성, Anthropic은 요청 목록을 배치로 전송 |
| 3. 확인 | 배치 상태를 주기적으로 조회 |
| 4. 결과 | JSONL 결과를 받아 custom_id로 원래 요청과 연결 |
결과가 제출한 순서대로 온다는 보장이 없으니 꼭 custom_id로 맞춰야 한다. 앞부분 지시문이 같은 요청이 많다면 프롬프트 캐싱과 같이 써서 비용을 더 줄일 수 있다.
밤새 돌리는 데이터 파이프라인, 대규모 로그 분석, 평가용 데이터셋 채점처럼 결과를 나중에 모아 보는 일이면 배치가 낫다. 사용자가 화면 앞에서 기다리는 채팅이나 스트리밍, 앞 단계 답을 보고 다음 요청을 정하는 에이전트 루프에는 맞지 않는다.
| 작업 | 추천 |
|---|---|
| 상품 설명 수십만 건 번역 | 배치 |
| 야간 리포트 생성 | 배치 |
| 고객 상담 챗봇 | 일반 호출 |
| 여러 단계 도구를 쓰는 에이전트 | 일반 호출 |
묶음 안에서 일부 요청만 실패할 수 있다. 결과에서 오류난 custom_id만 골라 다시 제출하는 처리를 미리 만들어 둔다. 결과 파일은 정해진 기간만 보관되니 받는 즉시 저장하는 게 좋다. 직접 모델을 띄워 쓴다면 vLLM 같은 서빙 엔진의 오프라인 배치 모드로 같은 효과를 낼 수 있다.
가장 흔한 건 정해진 시간에 도는 대량 처리 작업이다. 하루 동안 쌓인 데이터를 모아 저녁에 제출하고, 다음 날 아침 결과를 받아 저장하는 식으로 쓴다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 데이터 파이프라인 | 새로 들어온 문서·리뷰·로그를 밤마다 모아 분류·태깅·요약하고 결과를 DB에 저장 |
| 모델 평가 | 평가용 데이터셋 수천 문항의 답변 생성과 채점을 한 묶음으로 제출 |
| 콘텐츠 대량 처리 | 상품 설명 번역·요약을 수만 건 단위로 맡기고 custom_id로 원래 항목에 연결 |
| 합성 데이터 생성 | 학습·테스트용 예시 문장이나 질문을 대량으로 만들 때 싸게 돌림 |