AI API 배치 처리란? 바로 답이 필요 없는 작업을 묶는 방법
AI를 활용하여 생성한 이미지입니다.
사용자가 몇 초 안에 답을 받아야 하는 요청과, 결과를 나중에 모아도 되는 요청은 같은 API 흐름으로 처리할 필요가 없어요. 수백 개 문서의 분류·요약·임베딩처럼 즉시 화면에 보여 줄 필요가 없는 작업이라면 OpenAI Batch API를 검토할 수 있습니다.[1] 반대로 고객센터 답변이나 결제처럼 기다림과 실패를 바로 알려야 하는 일은 일반 동기 요청이 더 맞아요.
Batch API는 요청을 JSONL 파일로 묶어 제출하고, 서버에서 비동기로 처리한 뒤 결과 파일을 내려받는 방식입니다. 따라서 “요청을 보내자마자 답을 받는 API”가 아니라 “작업을 등록하고 상태와 결과를 관리하는 작업 큐”에 가깝습니다.
Batch가 맞는 작업부터 고르기
| 작업 | 적합성 | 판단 이유 |
|---|---|---|
| 사용자 채팅 답변 | 낮음 | 사용자가 결과를 기다립니다. |
| 문서 수천 건 분류 | 높음 | 각 문서를 독립 요청으로 만들 수 있습니다. |
| 검색용 임베딩 생성 | 높음 | 대상을 파일로 모아 처리할 수 있습니다. |
| 대규모 평가 실행 | 높음 | 완료 후 결과를 일괄 비교하면 됩니다. |
| 결제·삭제·권한 변경 | 주의 | 중복 실행과 즉시 실패 처리가 필요합니다. |
OpenAI 공식 문서는 평가, 대규모 데이터 분류, 콘텐츠 저장소 임베딩, 오프라인 영상 렌더를 Batch의 예로 안내합니다.[1] 핵심은 데이터가 많다는 사실보다 각 요청이 서로 독립적인지, 완료 시각이 조금 늦어도 업무가 멈추지 않는지예요.
전체 흐름은 다섯 단계입니다
- 대상 분리: 즉시 응답과 나중 처리 목록을 나눕니다.
- JSONL 작성: 한 줄에 하나의 요청 객체를 넣고 고유한
custom_id를 붙입니다. - 업로드·제출: 입력 파일을 업로드하고 Batch 작업을 생성합니다.
- 상태 기록: 생성·검증·진행·완료·실패 상태를 저장합니다.
- 결과 결합: 결과 파일을 내려받아 custom_id로 원본 행과 연결합니다.
공식 흐름도 파일을 제출하고 상태를 확인한 다음 완료된 출력 파일을 가져오는 순서입니다.[1] 사용자가 결과를 기다리는 화면과 배치 관리 화면을 분리하면, 24시간 조건을 기다리는 동안 서비스 전체가 멈추는 일을 피할 수 있어요.
JSONL을 안전하게 만드는 법
JSONL은 JSON 객체를 한 줄에 하나씩 둔 텍스트 파일입니다. 아래는 구조를 보여 주는 예시이며, 모델 ID와 요청 본문은 사용하는 API의 최신 문서에 맞게 바꿔야 합니다.
{"custom_id":"classify-001","method":"POST","url":"/v1/responses","body":{"model":"사용할-모델-ID","input":"첫 번째 문서를 분류해 주세요."}}
{"custom_id":"classify-002","method":"POST","url":"/v1/responses","body":{"model":"사용할-모델-ID","input":"두 번째 문서를 분류해 주세요."}}
입력 파일 하나에는 하나의 모델만 사용할 수 있다고 OpenAI가 안내합니다.[1] 여러 모델을 비교하려면 모델별 파일과 배치를 나누세요. 파일을 만들기 전에는 각 줄을 JSON 파서로 검사하고, 줄바꿈·따옴표가 들어간 문장을 올바르게 이스케이프해야 해요.
custom_id는 원본 행과 연결하는 열쇠예요
완료 결과의 순서가 입력 순서와 같다고 가정하면 잘못된 문서에 결과를 붙일 수 있습니다. 원본 데이터의 내부 ID나 행 번호와 custom_id를 별도 표에 보관하고, 결과를 받은 뒤 ID로 조인하세요. 이름·전화번호·이메일 같은 개인정보를 custom_id에 직접 넣지 않는 것도 중요해요.
- 한 배치 안에서 custom_id를 중복시키지 않습니다.
- 원본 행과 요청 파일의 개수를 제출 전에 비교합니다.
- 빈 입력과 너무 긴 입력을 별도 목록으로 분리합니다.
- 원본 파일과 API 전송용 파일을 같은 권한으로 공유하지 않습니다.
비용·처리 시간은 따로 계산하세요
OpenAI 공식 문서는 Batch에 동기 API보다 50% 낮은 비용, 더 높은 rate limit 여유, 배치별 24시간 이내 완료 조건이 있다고 설명합니다.[1] 결과를 기다릴 수 있는 대량 작업에서는 장점이 될 수 있어요. 하지만 실제 청구량은 요청 수, 입력·출력 토큰, 모델, 실패 후 재처리 횟수에 따라 달라집니다.
| 계산 항목 | 확인할 내용 |
|---|---|
| 요청 수 | 처리할 문서·행·파일의 실제 개수 |
| 입력 크기 | 본문, 첨부 내용, 반복 지시문의 크기 |
| 출력 크기 | 요약 길이·분류 필드·임베딩 결과 |
| 재처리 | 실패 항목만 다시 보낼 수 있는지 |
| 대기 비용 | 완료 전 임시 저장·상태 조회를 운영할 수 있는지 |
“배치가 50% 저렴하다”는 문장을 전체 비용의 절반으로 이해하면 안 돼요. 불필요하게 긴 출력을 요청하거나 같은 성공 항목을 재전송하면 할인 효과가 줄어듭니다.
배치에 넣지 않는 편이 좋은 경우
- 현재 가격·재고처럼 요청 시점의 답이 필요한 조회
- 앞 요청의 결과가 다음 요청의 입력을 결정하는 순차 작업
- 실패하면 즉시 사람에게 알려야 하는 결제·삭제·권한 변경
- 몇 분 안에 결과가 오지 않으면 사용자 경험이 무너지는 기능
이런 일을 배치로 바꾸면 취소, 진행률, 재시도, 중복 실행, 대체 메시지를 별도로 만들어야 합니다. 일반 API와 Batch를 함께 사용하되 사용자에게 보여 주는 흐름은 구분하는 방식이 현실적이에요.
실패와 재처리는 처음부터 설계하세요
배치가 완료돼도 모든 요청이 성공했다는 뜻은 아닙니다. 결과에는 성공 응답과 오류가 섞일 수 있으므로 custom_id, 상태, 오류 메시지, 재시도 횟수를 함께 저장하세요.
- 전체 입력과 결과 개수를 비교합니다.
- 성공·실패·응답 없음 항목을 분리합니다.
- 형식 오류, 입력 문제, 한도, 일시적 오류를 나눕니다.
- 성공 항목은 다시 보내지 않고 실패 목록만 재처리합니다.
- 최종 반영 전에 대표 결과를 사람이 검토합니다.
AI가 분류한 결과를 데이터베이스에 바로 덮어쓰기보다, 검토 대기 상태를 두면 잘못된 응답이 원본을 손상시키는 일을 줄일 수 있어요.
개인정보와 파일 보관
배치 파일은 한 번에 많은 자료를 담기 때문에 한 번의 실수가 넓게 퍼질 수 있습니다. 주민등록번호, 비밀번호, API 키, 고객 정보와 회사 기밀은 꼭 필요한지 먼저 판단하고 전송 전에 마스킹하세요.
- 원본과 마스킹한 전송본을 분리합니다.
- 입력·출력 파일의 읽기 권한과 보관 기간을 정합니다.
- 결과에 원문이 다시 포함되는지 확인합니다.
- 조직의 API 사용·보안 정책과 삭제 절차를 따릅니다.
초보자용 작은 도입 순서
- 개인정보가 없는 대표 데이터 두세 건을 준비합니다.
- 서로 다른 custom_id를 붙인 JSONL을 작성합니다.
- 각 줄의 JSON과 필수값을 자동 검사합니다.
- 작은 배치를 끝까지 제출하고 상태 조회·다운로드를 해 봅니다.
- custom_id로 원본과 결과가 정확히 연결되는지 확인합니다.
- 실패 항목만 재처리하는 흐름을 확인합니다.
- 비용·완료 시간·성공률을 기록한 뒤 범위를 넓힙니다.
자주 묻는 질문
Batch 요청은 바로 답을 주나요?
아니요. 요청 파일을 제출하고 상태를 조회한 뒤 완료된 결과 파일을 가져오는 비동기 방식입니다.[1]
결과는 입력 순서대로 오나요?
순서에 의존하지 않는 게 안전합니다. custom_id로 원본과 결과를 연결하세요.
항상 더 저렴한가요?
공식 문서는 동기 API보다 50% 낮은 비용을 안내하지만, 모델·토큰·요청 수·재처리에 따라 실제 비용은 달라집니다.[1]
한 배치에 여러 모델을 넣어도 되나요?
공식 문서는 입력 파일 하나에 하나의 모델을 포함해야 한다고 안내합니다.[1] 모델별로 파일을 나누세요.
정리
AI API Batch 처리는 즉시 응답이 필요하지 않은 독립 작업을 JSONL로 묶어 비동기로 실행하는 방법입니다. 비용과 처리량 측면의 이점이 있지만 실시간 API를 대신하지 않으며, 24시간 이내 완료 조건도 즉시 응답을 뜻하지 않아요.[1] 작은 파일로 형식과 ID 연결을 먼저 확인하고, 성공·실패·재처리 로그와 사람의 샘플 검토를 남긴 뒤 전체 데이터로 확대하세요.
관련 글
Sources
- [1] OpenAI API Batch 공식 문서 — 용도, 비용, rate limit, 완료 조건, JSONL·custom_id·단일 모델·상태 조회·결과 파일 흐름을 안내합니다.
[…] AI API를 배치 처리하는 구조를 다뤘다면 응답이 바로 필요하지 않은 작업을 묶는 AI API 배치 처리와 비교해 볼 수 있어요. 보안 에이전트는 단순한 일괄 호출보다 권한과 […]