AI API 배치 처리란? 바로 답이 필요 없는 작업을 묶는 방법

결론부터: 바로 답을 받아야 하는 질문에는 일반 API 요청을 쓰고, 평가·분류·임베딩처럼 결과를 기다려도 되는 대량 작업에는 OpenAI Batch API를 검토하세요. Batch는 여러 요청을 JSONL 파일로 묶어 비동기로 처리하는 방식입니다.[2]
이 방식은 대화형 화면의 즉시 응답을 위한 기능이 아닙니다. 작업을 모아 보내고 상태를 확인한 뒤 결과 파일을 가져오는 흐름에 가깝습니다.
Batch API가 맞는 작업
| 작업 | Batch 적합성 | 이유 |
|---|---|---|
| 문서 1,000개의 분류 | 적합 | 각 요청이 독립적이고 즉시 결과가 필요하지 않음 |
| 검색용 임베딩 생성 | 적합 | 처리 대상을 파일로 정리하기 쉬움 |
| 사용자에게 즉시 보여줄 답변 | 부적합 | 대기 시간을 예측하기 어려움 |
OpenAI 공식 문서는 Batch를 평가, 대규모 데이터 분류, 콘텐츠 저장소 임베딩, 오프라인 영상 렌더 작업 같은 예로 설명합니다.[2]
처리 순서
- 한 줄에 하나의 요청을 담은
.jsonl파일을 만듭니다. - 각 줄에 고유한
custom_id를 넣습니다. - 파일을 업로드하고 Batch 작업을 시작합니다.
- 상태를 조회하다가 완료되면 결과 파일을 가져옵니다.
각 요청의 본문은 대상 API의 매개변수와 같은 형식을 쓰지만, 입력 파일 하나에서는 하나의 모델만 사용해야 합니다.[2]
시간과 비용을 읽는 법
OpenAI 문서에 따르면 Batch는 동기 API보다 50% 비용 할인을 제공하고, 별도의 더 높은 rate limit 풀을 사용하며, 각 배치는 24시간 안에 완료됩니다. 이것은 즉시 응답을 보장한다는 뜻이 아니므로 사용자 화면의 실시간 요청과 섞어 설계하면 안 됩니다.[2]
제가 확인한 조건
2026년 8월 31일, OpenAI 개발자 문서의 Batch API 페이지에서 JSONL 입력, custom_id, 비동기 처리, 24시간 완료 기준을 확인했습니다. 이 실행에서는 OpenAI API 키를 사용한 실제 요청을 보내지 않았으므로 계정별 한도나 실제 처리 시간은 확인하지 않았습니다.
초보자 체크리스트
- 사용자가 몇 초 안에 답을 받아야 하는 작업인가요?
- 각 요청을 JSONL 한 줄로 독립시킬 수 있나요?
- 결과와 원래 요청을 연결할 고유한
custom_id가 있나요? - 24시간 안에 끝나지 않거나 실패한 요청을 재처리할 기록을 남기나요?
FAQ
Batch를 쓰면 항상 더 싼가요?
공식 문서가 안내하는 50% 할인은 Batch 사용 조건에 해당하는 처리에 대한 설명입니다. 계정 설정, 모델, 요청량에 따른 실제 청구액은 사용 전에 현재 가격과 사용량을 따로 확인해야 합니다.
Batch 결과 순서는 입력 순서와 같나요?
결과를 입력과 연결할 때는 순서에 기대지 말고 각 요청의 custom_id를 사용하세요.
관련 글
공식 출처
대량 작업을 예약하기 전에 실패 재처리와 결과 보관 위치부터 정해 두세요.