
GPT-5.4 mini와 GPT-5.4의 동적 전환 설계를 통해 이미지로부터 음악 페스티벌 타임테이블 생성을 고속화 및 고정밀화한 이야기
요약
음악 페스티벌 타임테이블 이미지에서 데이터를 추출할 때, 스테이지 수에 따라 GPT-5.4 mini와 GPT-5.4를 동적으로 전환하여 비용과 정밀도의 균형을 맞춘 설계 사례를 소개합니다.
핵심 포인트
- 스테이지 수 10개를 기준으로 모델 전환 임계값 설정
- GPT-5.4 mini로 선행 해석 후 스테이지 수 판정
- 복잡한 이미지(스테이지 10개 이상)는 고정밀 모델로 재해석
- 일관된 JSON 스키마 유지를 통해 파싱 복잡도 및 버그 방지
음악 페스티벌용 타임테이블 작성 서비스인 「모두의 타임테이블(みんなのタイムテーブル)」에 이미지로부터 타임테이블을 자동 생성하는 기능을 구현했습니다. 하지만 이 기능은 LLM(Large Language Model)을 사용하기 때문에 정밀도, 비용, 속도의 균형에 과제가 있었습니다.
특히 문제가 되었던 것은 스테이지 수가 많은 이미지의 경우 정밀도가 저하된다는 문제였습니다.
이 기사에서는 그 과제와 해결 방법으로 채택한 「GPT-5.4 mini와 GPT-5.4의 동적 전환 설계」에 대해 소개합니다.
완성된 기능
스테이지 수가 많으면 정밀도가 떨어지는 문제
이미지로부터 타임테이블을 생성할 때, 다음과 같은 구조를 가진 데이터를 추출하고 있습니다.
- 스테이지 이름 (가로축)
- 출연자 이름
- 시작 시각
테스트에는 다음 2가지 페스티벌의 타임테이블 이미지를 사용했습니다.
- ARABAKI ROCK FEST.26 (6개 스테이지)
- 시모키타자와니테'25 (24개 스테이지)
초기 구현에서는 경량 모델인 GPT-5.4 mini를 사용하고 있었습니다. 스테이지 수가 6인 타임테이블에서는 문제없이 동작했지만, 스테이지 수가 24인 타임테이블에서는 「다른 스테이지의 출연자가 섞이는」 문제가 발생했습니다.
반면, 단순히 항상 고정밀 모델(GPT-5.4)을 사용하면 비용이 높고 속도가 느리다는 문제가 있었습니다.
2단계 모델 구성 구현
이 문제를 해결하기 위해 채택한 것이 「2단계 모델 구성」입니다.
다음 2가지 모델을 병용하여, 「처음부터 분기시키는」 것이 아니라 「먼저 mini로 해석하고, 그 결과에 따라 재실행하는」 구조로 만들었습니다.
- GPT-5.4 mini: 고속·저비용
- GPT-5.4: 고정밀·고비용
처리 플로우 도표
스테이지 수에 따라 다음과 같이 처리 플로우가 분기됩니다.
1. GPT-5.4 mini로 이미지 해석 (반드시 1회 실행)
먼저 모든 이미지에 대해 GPT-5.4 mini로 이미지 해석을 수행합니다. 이 단계에서는 정밀도보다 속도와 비용 절감을 우선시합니다.
출력은 JSON 형식이며, 다음과 같은 구조가 됩니다.
이는 AI에 의한 출력을 재현한 테스트 데이터로, 결합 테스트에서 사용하고 있습니다.
{
"stages": [
{
...
2. 스테이지 수 체크
다음으로 생성된 JSON의 stages 수를 확인합니다.
스테이지 수에 따라 다음과 같이 다음 처리가 분기됩니다.
- stages < 10 → 그대로 채택
- stages ≥ 10 → 재해석으로
스테이지 수는 유명한 음악 페스티벌을 중심으로 조사한 결과 대부분 10 스테이지 미만이었기 때문에, 10이라는 임계값으로 결정했습니다.
3. GPT-5.4로 재해석 (필요한 경우에만)
스테이지 수가 10 이상인 경우에만 동일한 이미지를 사용하여 GPT-5.4로 재해석을 수행합니다.
이를 통해 스테이지 경계의 오인식과 다른 스테이지의 출연자가 섞이는 문제를 방지합니다.
구현
이미지 해석은 서비스 클래스에서 수행하며, 재해석 시에도 동일한 프롬프트가 사용됩니다.
class TimetableExtractor
# 이미지로부터 타임테이블을 추출하는 클래스 메서드
def self.extract(tempfile)
...
왜 스테이지 수뿐만 아니라 JSON 전체를 출력하게 하는가
당초에는 GPT-5.4 mini의 프롬프트만으로 「스테이지 수가 10 미만이면 스테이지 수만, 10 이상이면 JSON을 출력한다」와 같은 제어를 구현하는 것도 검토했습니다. 하지만 출력 형식이 조건에 따라 변화하면 파싱 (Parsing) 처리가 복잡해지고, 예상치 못한 출력에 의한 버그 리스크도 높아집니다.
따라서 항상 동일한 JSON 스키마 (Schema)로 출력하는 방침을 세웠습니다.
스테이지 수 판정만이 목적이라면 숫자만 반환하게 할 수도 있지만, 10 미만에서는 재해석하지 않고 mini의 결과를 그대로 채택하기 때문에 이 역시 동일한 JSON 스키마로 출력하게 하고 있습니다.
또한, 해석 처리의 서두에 스테이지 수 판정 전용 프롬프트를 추가하는 것도 검토했으나, 최소한 API 요청 횟수가 2회 필요하게 되므로 채택하지 않았습니다. (현재 설계에서는 스테이지 수가 10 미만인 이미지는 mini의 1회 실행만으로 완결됩니다.)
결과
다음과 같은 결과가 되었습니다.
스테이지 수가 적은 경우의 고속화
모든 이미지에 GPT-5.4를 사용하는 경우 타임테이블 생성에 1분 이상 걸렸으나, 분기함으로써 스테이지 수가 10 미만인 경우에는 10~30초 정도로 타임테이블 생성이 가능해졌습니다.
스테이지 수가 많은 경우의 정밀도 향상
24개 스테이지가 포함된 이미지의 경우, GPT-5.4 mini를 사용하면 다른 스테이지의 출연자가 섞이는 문제가 발생했으나, 분기(Branching) 처리 이후에는 이 문제가 해결되었습니다. (분석 시간은 1~2분 정도 소요됩니다.)
API 비용 절감
2026년 5월 현재 GPT 이용 가격은 다음과 같습니다.
| 모델 | Input | Output |
|---|---|---|
| GPT-5.4 | $2.50 / 1M | $15.00 / 1M |
| GPT-5.4 mini | $0.75 / 1M | $4.50 / 1M |
GPT-5.4 mini는 GPT-5.4의 약 30% 정도의 API 비용으로 이용할 수 있습니다. 따라서 스테이지 수가 10개 미만인 경우가 많다고 가정할 때, API 비용을 30% 정도 절감할 수 있을 것으로 예상됩니다.
요약
이번에는 GPT-5.4 mini를 통한 고속 분석 후, 스테이지 수에 따라 GPT-5.4로 전환하여 고정밀 분석을 수행하는 설계 방식을 채택함으로써 고속화와 비용 절감을 동시에 달성하였으며, 스테이지 수가 많은 페스티벌에서는 정밀도 또한 향상시킬 수 있었습니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기