프롬프트 엔지니어링으로 메뉴 이미지 품질 검수하기: GPT 기반 업무 자동화

6 hours ago 6

GPT의 등장으로 생성형 AI 기술은 대화, 검색, 추천 등 다양한 분야에서 활용되며 빠르게 보편화되고 있습니다. 2024년 10월 기준, 국내 ChatGPT 사용자는 520만 명을 넘어서며 10명 중 1명 이상이 생성형 AI를 활용하고 있습니다. 하지만 기업의 실제 업무 환경에서 이 기술을 안정적으로 적용하기에는 다양한 과제들이 남아있습니다. 배달의민족은 지난 4월부터 GPT를 활용한 AI 이미지 검수 기능을 도입했는데요. 이번 글에서는 GPT를 업무에 적용하면서 마주한 고민과 그 해결 과정을 공유하고자 합니다.

이미지 검수에 GPT를 활용한 이유

배달의민족에 입점한 사장님들은 배민셀프서비스를 이용해 메뉴 이미지를 등록하고 관리합니다. 기존에는 일일 최소 1만 건 이상의 검수 요청을 운영자가 직접 확인하면서 검수 완료까지 오래 걸리는 문제가 있었습니다. 이를 해결하기 위해, 내부의 메뉴 이미지 반려 기준을 살펴보고 자동화 방법을 모색했습니다.

머신러닝 모델을 구축하기에는 학습 데이터 부족, 자주 변경되는 정책 대응의 어려움 등이 존재했습니다. 반면 GPT를 활용하면 다양한 검수 기준에 신속히 대응하고, 프롬프트 엔지니어링으로 변경 사항에 유연하게 대처할 수 있습니다. 특히 상식 기반 판단(예: 부적절한 용기)에 대한 검수는 GPT가 예상외로 잘 수행할 수 있으리라 기대했습니다.

프롬프트 엔지니어링: GPT를 업무 환경에 맞추는 과정

프롬프트란 단순한 단어나 명령어가 아닌, 사람의 언어와 LLM이 만나는 핵심 매개체입니다. 인공지능과 자연어로 소통할 수 있게 되면서, 프롬프트는 단순한 명령을 넘어 인간과 인공지능 간의 의사소통과 맥락적 이해를 가능하게 하는 중요한 도구가 되었습니다.

프롬프트 엔지니어링은 다양한 인문학적 지식을 기반으로 인공지능과의 상호작용을 향상시키는 융합 분야입니다. 아래 몇 가지 전략 사례들을 통해서 프롬프트 엔지니어링의 과정을 설명해보겠습니다.

전략 1️⃣: 구체성과 일반성의 균형

구체적인 프롬프트 작성

’첨부한 문서를 요약해주세요.’보다 ’첨부한 회의록을 3가지 핵심 사항으로 요약하고 마크다운 형식으로 정리해주세요.’처럼 상황과 형식을 명확히 제시하면 LLM은 고품질 응답을 제공합니다.

이미지 반려 기준도 마찬가지입니다. 예를 들어, 저화질 이미지를 판단할 때 단순히 ‘저화질인지 판단하세요.’라고 하면 모델이 기준을 제대로 이해하지 못할 수 있습니다. 대신 ‘이미지 내부의 주요한 객체가 선명하지 않거나 화질이 깨져있는지 판단하세요.’처럼 구체적으로 전달하면 모델이 더욱 정확한 응답을 반환하게 됩니다.

prompt: "이미지 내부의 주요한 객체가 선명하지 않거나, 픽셀 단위로 보일만큼 화질이 깨져있는지 판단하세요."
prompt: "주요한 객체에 초점이 맞지 않고 주변 객체나 배경에만 초점이 맞는지 판단하세요."

프롬프트 일반화

너무 구체화하면 예외 케이스를 놓칠 수 있습니다. 예를 들어 “워터마크처럼 합성된 글씨가 있는지 판단하세요.“는 워터마크는 잘 잡지만, 다른 합성 텍스트는 놓칠 수 있습니다.

prompt: "워터마크와 같이 인위적으로 합성된 글씨가 있는지 판단하세요."

프롬프트를 구체적으로 작성하는 것도 중요하지만, 너무 좁은 범위로 한정하면 다른 목표에 대한 성능이 저하되는 트레이드오프(trade-off)가 발생할 수 있습니다. 따라서 현재 이루고자 하는 목표가 무엇인지 명확하게 정의하고, 수정된 프롬프트가 다른 목표 달성에 영향을 미치지 않는지 지속적인 평가가 필요합니다.

프롬프트 성능 평가

또한, 실제로 정책을 담당하는 부서와 이미지 반려 기준을 논의하며 프롬프트 엔지니어링의 효과를 측정할 방법이 필요했습니다. 그래서 구글 스프레드시트로 대시보드를 만들어 활용했습니다. 프롬프트 변경 사항을 기록하고, 각 정책별로 오검수(문제가 있는데 없다고 판단하거나, 문제가 없는데 있다고 판단한 경우) 항목의 비중을 확인할 수 있도록 구성하여 프롬프트 엔지니어링이 각 정책에 어떤 영향을 미치는지 파악했습니다.

전략 2️⃣: 응답(Completion) 최적화

GPT를 안정적으로 서비스에 활용하기 위해서는 응답 형식을 최적화하는 전략이 필요했는데요. GPT는 자연어로 된 긴 문장을 생성하기 때문에, 서비스에서 이를 직접 파싱하거나 처리하기가 쉽지 않았습니다. 예를 들어, 여러 검수 항목을 줄글로 나열하면 사장님들께 어떤 방식으로 안내해야 할지 고민이 되었죠. 단순히 응답을 반환하도록 하면 정책 번호 대신 불필요한 숫자들이 포함되어 파싱 과정에서 오류가 발생할 위험도 있었습니다.

prompt: "이미지 속 음식이 즉시 섭취할 수 있는 상태인지 판단하세요."

구조화된 응답 유도

이를 해결하기 위해 응답을 JSON 형식으로 포맷팅하도록 프롬프트를 작성했습니다. 각 반려 항목을 정책 번호로 구분하고, 선택한 이유를 함께 반환하도록 프롬프트를 설계했는데요. 이렇게 하면 서비스 측에서 응답을 손쉽게 파싱하여 필요한 정보만 추출할 수 있었습니다.

# output_json_format: { "judgementNum": "해당하는 정책을 모두 선택하세요. 결과를 int type 리스트로 반환합니다.", "judgementDesc": "judgementNum에서 정책 번호를 선택한 이유에 대해 한 문장으로 설명합니다. 선택한 정책이 없으면 NULL을 반환합니다." }

응답 결과를 JSON 형식으로 포맷팅하도록 적용한 결과

Generated Knowledge Prompting

하지만 문제는 여기서 끝나지 않았습니다. GPT의 응답이 일관되게 응답하지 않는 경우가 빈번했는데요. 동일한 요청에도 응답 형식이나 내용이 달라지는 경우가 많았습니다. 이를 개선하기 위해 Generated Knowledge Prompting 기법을 활용했습니다. 이는 Chain of Thought(CoT)와 유사한 방식으로, GPT가 이미지 내부의 모습 설명을 먼저 생성하고, 이 설명을 바탕으로 최종 응답을 도출하도록 하는 방법입니다.


예를 들어, 이미지를 입력하면 GPT가 먼저 이미지 내부의 내용을 스스로 설명합니다. 그런 다음 이 설명과 함께 검수 기준을 적용하여 최종 응답을 생성하는 것이죠. 이 방식을 사용해 응답의 일관성이 약 40% 향상되는 결과를 얻을 수 있었습니다.

Latency 최적화

응답 지연(latency)을 최소화하는 것도 중요한 과제였습니다. 사장님들이 검수 결과를 빠르게 받아볼 수 있어야 수정이 필요한 부분을 즉시 개선하고 다시 업로드할 수 있기 때문입니다. 불필요한 응답을 줄이고자 작성된 프롬프트의 내용을 줄이고, 응답 사유를 한 문장으로만 반환하는 등의 프롬프트 최적화를 적용했습니다.

전략 3️⃣: 프롬프트 구조와 형식 개선

프롬프트의 구조와 형식을 개선하는 것은 GPT의 이해도를 높이고 응답 품질을 향상시키는 데 매우 중요합니다. 이는 사람이 문단 구조를 나누어 글을 작성하는 것과 마찬가지로, 프롬프트 내에서 지침, 정책, 응답 예시 등을 명확하게 구분하여 언어 모델이 보다 정확하게 내용을 파악할 수 있게 해줍니다.

이미지와 텍스트의 순서 조정

이미지와 텍스트를 함께 사용할 때는 이미지를 텍스트 프롬프트보다 먼저 배치하는 것이 도움이 되었습니다. 동일한 프롬프트를 적용하더라도 이미지를 먼저 제공하면 GPT의 응답 정확도가 향상되었는데요. 이는 모델이 시각적 정보를 먼저 처리하여 이후의 텍스트 입력과 결합해 더 정확한 응답을 생성하기 때문입니다. 이미지 분석이나 설명에 집중해야 할 때 이러한 방식이 특히 유용했습니다.

"role": "user", "content": [ {"type": "image_url", "image_url": {"url": image_url}}, { "type": "text", "text": "{prompt}" } ]

마크다운과 코드 스타일 활용

텍스트 프롬프트를 구조화하기 위해 마크다운 형식을 적극적으로 활용했습니다. 중요한 내용을 강조하기 위해 헤더(#)를 사용하여 섹션을 구분하고, 여러 정보나 정책 항목을 나열할 때는 목록 형태로 표시했습니다. 또한, 프롬프트의 전체적인 구조를 코드 스타일로 정리했습니다. 마치 파이썬의 딕셔너리나 데이터 구조로 프롬프트를 재현했습니다.

# instructions = '이미지를 정책(policies)에 따라 분석하고 지정된 JSON 형식으로 결과를 반환하세요.' # policies = { 1: '주요한 음식에 초점이 맞지 않습니다.', 2: '해상도가 낮아서 픽셀단위로 질감이 보입니다.' # (생략) } # output_json_format = { 'judgementNum': '해당하는 정책을 모두 선택하세요. 결과를 int type 리스트로 반환합니다.', 'judgementImage': 'judgementNum에서 정책 번호를 선택한 이유에 대해 한 문장으로 설명합니다. 선택한 정책이 없으면 NULL을 반환합니다.' }

이렇게 구조화된 프롬프트는 GPT가 지침과 정보를 더 명확하게 이해하는 데 도움이 되었습니다. 그 결과, 프롬프트를 보낸 후 첫 응답 시간(First Response Time)이 감소했고, 응답의 일관성과 정확성도 향상되었습니다. 추가로, 프롬프트가 체계적으로 작성되어 팀원들이나 다른 이해관계자들이 내용을 쉽게 파악하고 수정할 수 있는 장점도 있었습니다.

📌 위에서 소개해드린 내용 이외에 더 자세한 프롬프트 엔지니어링 과정이 궁금한 분들은 WOOWACON 2024 발표 영상 "Fine-tuning 없이, 프롬프트 엔지니어링으로 메뉴 이미지 검수하기"를 참고해주세요.

GPT 한계 극복: 하이브리드 접근의 필요성

프롬프트 엔지니어링으로 많은 검수 항목을 자동화할 수 있었지만, 모든 문제를 GPT로 해결하기는 어려웠습니다. 특히 ‘과도한 확대’ 정책과 ‘저작권/상표권/초상권’ 정책에서는 한계가 명확했습니다.

Object Detection의 한계

‘과도한 확대’ 정책은 이미지의 중앙 정사각 영역 안에 주요한 음식이나 음료 객체가 올바르게 포함되어야 하는 기준을 의미합니다. GPT-4V가 처음 등장했을 때, 이미지 속 객체를 분리하고 Object Detection을 어느 정도 수행할 수 있다는 연구 결과가 있었습니다. 그러나 실제 테스트 결과, GPT-4V는 내부 정책에서 요구하는 만큼 정확한 좌표를 반환하지 못했습니다.


참고자료: Z Yang 외,The Dawn of LMMs: Preliminary Explorations with GPT-4V(ision), 2023

이를 해결하기 위해 팀 내 데이터 사이언티스트(DS) 전문가들과 협업했습니다. 그동안 쌓인 내부 데이터를 기반으로 Object Detection 모델을 새롭게 파인튜닝하여 적용했습니다. 자체 학습 모델을 사용해 주요한 음식이 올바르게 정사각 영역 내부에 포함되어 있는지 정확하게 검수할 수 있게 되었습니다.

아직 사람의 손길이 필요한 영역

‘저작권/상표권/초상권’ 정책은 이미지 속에 포함된 캐릭터나 로고의 저작권 문제가 없는지를 검수하는 항목입니다. 그러나 GPT는 특정 시점까지의 데이터만 학습한 모델이기 때문에, 최근에 나온 캐릭터(예: 하츄핑 등)에 대한 정보를 알지 못합니다.


이러한 한계를 극복하기 위해, 사람이 한 번 더 확인해야 하는 정책들은 운영자 검수로 전환할 수 있도록 프로세스를 분기했습니다. 자동화된 검수 단계에서 GPT로 처리하기 어려운 항목들은 별도로 분류하여 운영자가 직접 검수하도록 함으로써, 전체적인 검수 프로세스의 효율성과 정확성을 높였습니다.

세상에 등장한 ‘AI 이미지 검수’

여러 프롬프트 엔지니어링 기법과 추가적인 고도화를 활용해서, GPT를 활용한 AI 이미지 검수 기능을 오픈하게 되었는데요. 이를 통해 다음과 같은 효과를 얻을 수 있었습니다.

이미지 검수 시간을 기존 대비 99.98% 단축

기존에는 메뉴 이미지 등록과 검수에 오랜 시간이 소요되었지만, AI 이미지 검수를 도입함으로써 사장님들이 빠르게 메뉴 이미지를 등록할 수 있게 되었습니다. 반려되는 이미지들도 즉각적인 피드백을 받다 보니, 사장님들이 이미지를 다시 등록하기도 훨씬 편리해졌습니다.

상세한 반려 사유 제공

이전에는 반려된 사유를 운영자들이 작성한 간단한 텍스트로만 제공했지만, 이제는 반려 예시와 함께 보다 구체적인 사유를 제공할 수 있게 되었습니다. 사장님들은 어떤 부분을 수정해야 하는지 명확하게 알 수 있어 이미지 품질 개선에 큰 도움이 되었습니다.

기대보다 높은 사용률

기능 오픈 당시 약 38%의 사용률을 기대했으나, 실제로는 이를 약 2.3배 뛰어넘는 89%의 높은 사용률을 보이고 있습니다. 빠르게 피드백을 받을 수 있다는 장점 때문에 사장님들이 적극적으로 기능을 활용하는 것으로 보입니다.


이 과정에서 얻은 교훈은 단순합니다. GPT는 강력한 범용성을 지닌 모델이지만, 업무 상황별로 요구하는 조건은 제각각입니다. 단순 PoC를 넘어 실서비스 영역에서 GPT 성능을 극대화하기 위해서는 기존 ML 모델, 데이터 사이언스 전문성, 운영자 검수 등이 결합된 하이브리드 접근이 필요하다는 점을 재차 확인했습니다.

앞으로도 배달의민족은 사장님들이 보다 손쉽게 품질 높은 이미지를 등록할 수 있도록 다양한 시도를 이어갈 예정입니다. 생성형 AI를 활용해 선보일 더 나은 고객 경험과 서비스 혁신을 기대해 주세요!

Read Entire Article