핵심 요약
Anthropic Batch API는 24시간 SLA에 50% 할인. 즉시 응답이 필요 없는 분석·요약·라벨링·재인덱싱 워크로드를 모두 옮겨 월 LLM 비용이 47% 감소. 큐를 직접 만들지 않아도 되며, 대량 처리 안정성이 자체 큐보다 오히려 높았다.
1. 무엇이 50% 싼가
| 표준 API | Batch API | |
|---|---|---|
| Sonnet 4.6 input | $3 / M | $1.5 / M |
| Sonnet 4.6 output | $15 / M | $7.5 / M |
| SLA | 실시간 | 24h 이내 |
| 최대 요청/배치 | — | 10만 |
2. 어떤 워크로드에 적합?
- 야간 리포트 생성
- 고객 문의 라벨링·분류
- 제품 설명 다국어 일괄 번역
- 로그 이상 패턴 일괄 분석
- 검색 인덱스 재구축용 요약
실시간 챗봇·코드 보조에는 부적합.
3. 배치 만들기
requests = []
for row in db.iter_pending(limit=10000):
requests.append({
"custom_id": str(row.id),
"params": {
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": SYSTEM,
"messages": [{"role": "user", "content": row.text}]
}
})
batch = client.messages.batches.create(requests=requests)
4. 결과 폴링
while True:
b = client.messages.batches.retrieve(batch.id)
if b.processing_status == "ended": break
time.sleep(60)
for line in client.messages.batches.results(batch.id):
db.write_result(line.custom_id, line.result)
실 환경에서 24h 한도 도달은 거의 없었음. 평균 완료 38분.
5. 데드라인 관리
꼭 N시간 안에 끝내야 한다면 배치를 N등분해 시차 제출. 한 배치 실패가 전체를 막지 않게 격리. 우리 운영은 6시간 마이크로 배치 4회로 운영해 야간 윈도우 안 종료 100% 달성.
6. 실패 처리
요청별 결과에 error 필드가 들어옴. overloaded_error는 자동 재시도되지만 사용자 측 invalid_request_error는 즉시 dead-letter로. 한 배치 1만 건 중 평균 8건 실패.
7. 비용 시뮬레이션
일 80만 요청 분석 워크로드 기준. 표준 API $11,400/월 → Batch $5,820/월. 캐시 친화 시스템 프롬프트와 결합하면 추가 30% 절감.
자주 묻는 질문
Q. structured output·tool use도 배치에서 되나? 가능. Anthropic 측 거의 모든 기능 지원.
Q. OpenAI Batch와 비교? 가격 모델 동일. 두 벤더 모두 사용한다면 워크로드별 분기 라우터를 두는 게 일반적.

댓글 0