AICX: AI로 5초 만에 항공권 환불 수수료 계산하기
동기에서 비동기, 그리고 다시 동기
동기에서 비동기, 그리고 다시 동기
안녕하세요. AICX 프로덕트팀의 Product Engineer 이종준입니다.
AICX는 인공지능(AI)를 통해 기업 운영의 반복 업무를 자동화하고 고객 경험(CX)을 혁신하는 미션을 가진 마이리얼트립의 자회사입니다.
[AICX 바로가기]
이번 글에서는 제가 항공권 환불 수수료 계산을 AI로 자동화하는 과정에서 겪었던 시행착오와 얻은 인사이트를 공유하고자 합니다.
마이리얼트립의 항공 버티컬에는 매일 수백 건의 고객 문의가 들어옵니다. 이 중 약 20%는 환불 수수료 관련 문의입니다.
항공권 환불 규정은 항공사, 노선, 발권 시점, 출발지, 탑승객 유형 등에 따라 제각각입니다. 이 규정은 별도의 형식 없이 자연어로 작성되어 있고, 수수료 계산에는 출발일 기준 날짜 비교, 운임 규정별 조건문, 복수 수수료 합산 등 복잡한 과정이 포함됩니다. 여행자는 수수료를 직접 계산하기 어려웠고, 상담사 역시 매번 규정을 검토해야만 했습니다.
이 반복적인 응대를 보며 우리는 질문했습니다.
“이 계산을 사람이 매번 하지 않아도 된다면?”
“AI가 규정을 읽고 자동으로 환불 수수료를 계산해 줄 수는 없을까?”
이 질문에서 AI 환불 수수료 계산 API 프로젝트가 시작되었습니다.
이 프로젝트의 목표는 단순히 상담 인력을 줄이는 것이 아니라, 고객이 환불을 요청했을 때 “확인 후 다시 안내드리겠습니다”라는 말을 듣지 않아도 되는 경험을 만드는 것이었습니다. AI가 반복적이고 계산 중심적인 업무를 맡고, 사람이 더 복잡한 케이스에 집중할 수 있는 구조를 만들고자 하였습니다.
모든 걸 AI에게 맡기다
처음에는 단순하게 접근했습니다. 항공사 환불 규정 전문과 예약 정보를 그대로 LLM에 전달하면 알아서 계산해줄 것이라 기대했습니다.
입력은 다음과 같았습니다.
- 규정 전문: 자연어 형태의 항공사 환불 규정 전체
- 예약 정보: 예약 상세 JSON 전체
LLM이 이를 해석해 수수료를 계산한 뒤, 정형화된 API 응답(JSON)을 반환하도록 설계했습니다.
하지만 결과는 기대에 미치지 못했습니다. 평균 처리 시간은 25초정도였고, 날짜 계산과 수수료 합산 과정에서 오류가 빈번했습니다. LLM은 문맥 이해에는 강했지만, 수학적 연산과 날짜 비교에는 약했습니다.
또한 모든 데이터를 한꺼번에 입력하다 보니 토큰 사용량과 비용 측면에서도 비효율적이었습니다.
역할을 나누다
우리는 AI가 잘하는 일과 전통적인 코드가 잘하는 일을 명확히 분리하기로 했습니다.
- LLM → 환불 규정 파싱 및 수수료 관련 데이터 추출 및 구조화된 형태로 반환
- Python 서버(FastAPI) → 날짜 계산, 수수료 산출, 최종 응답 포맷 생성
이렇게 역할을 나누자 평균 응답 시간이 25초에서 12초로 약 52% 단축되었으며, 정확도 또한 눈에 띄게 개선되었습니다.
이제 LLM은 단순한 ‘계산기’가 아닌, ‘계산기가 무엇을 계산해야 하는지를 알려주는 조력자’로서의 역할이 명확해졌습니다.
그러나 12초는 여전히 긴 시간이었습니다. 일반적인 API 환경에서는 응답이 10초 이상 지연될 경우 클라이언트 타임아웃 오류가 발생할 수 있었습니다.
이에 우리는 비동기 구조로의 전환을 고민하게 되었습니다.
비동기 구조로의 전환
우리가 선택한 Redis와 Celery기반의 비동기 구조는 다음과 같습니다.
요청이 들어오면 Redis 큐에 Job을 등록하고, 즉시 job_id를 반환합니다. 실제 계산 작업은 Celery 워커에서 백그라운드로 처리되고, 클라이언트는 이후 별도의 엔드포인트를 통해 결과를 조회합니다.
이는 기술적으로 안정적이었습니다. 서버 리소스 효율이 좋아졌고, 클라이언트의 timeout 문제도 사라졌습니다.
하지만 실제 고객 경험 측면에서는 다른 문제가 드러났습니다.
고객 경험의 단절
챗봇과 콜봇 환경에서 비동기 응답은 어색하게 느껴졌습니다.
예를 들어, 챗봇에서 계산 중이라는 메시지가 나간 후 10초 이상이 지나 계산된 수수료 정보가 전송되면, 대부분의 고객은 이미 대화를 종료했거나 다른 주제로 넘어가 있었습니다. 콜봇에서도 동일한 문제가 반복되었습니다.
결과를 알림톡과 같은 다른 채널로 전달하는 방향도 고려하였지만, 이는 채널 이동으로 인해 대화의 맥락이 끊어지게 만들어 고객 경험이 저하되는 요인이 되었습니다.
기술적으로는 올바른 선택이었지만, 경험적으로는 잘못된 방향이었습니다.
다시 동기로
우리는 다시 동기 구조로 돌아왔습니다. 하지만 단순히 이전의 방식으로 회귀한 것이 아니라, 입력 최적화와 처리 구조 재설계를 통해 효율을 극대화하고자 하였습니다.
- 입력 데이터 최소화
자연어 규정 전문은 그대로 전달하되, 예약 정보는 계산에 반드시 필요한 필드만 선별했습니다.
LLM이 처리해야 할 데이터 양이 절반으로 줄었습니다. - 모델 및 하이퍼파라미터 조합 실험
여러 모델과 하이퍼파라미터(reasoning) 조합을 테스트하며 정확도·속도·비용의 균형점을 찾았습니다.
결과적으로 정확도를 유지한 채로 평균 응답 시간을 5초 이내로 단축할 수 있었으며, 이는 첫 시도 대비 약 80%의 개선에 해당합니다.
5초 이내의 응답은 챗봇이나 콜봇 환경에서도 충분히 실시간으로 자연스럽게 느껴졌습니다. 결과적으로 사용자 경험 측면에서 가장 안정적인 구조로 정착했습니다.
AI 환불 수수료 계산 API 도입 전에는 상담사가 규정을 직접 확인하고 수수료를 산출하는 데 평균 약 2분이 소요되었습니다. 하지만 AI 기반 자동화 시스템 도입 후에는 동일한 작업이 평균 5초 이내로 처리되며, 약 95% 이상의 시간 절감 효과를 얻을 수 있었습니다.
고객은 기다림 없이 결과를 확인할 수 있었고, 상담사는 동일한 API를 통해 빠르고 정확한 정보를 전달할 수 있게 되었습니다.
앞으로의 방향
이번 프로젝트를 통해 확인한 가장 큰 인사이트는 다음과 같습니다.
“AI는 모든 일을 잘하지 않는다. 대신 AI와 코드가 각각 잘하는 일을 구분해 결합할 때, 시스템 전체의 효율이 극대화된다.”
이 깨달음을 바탕으로 우리는 다음 단계로의 확장을 준비하고 있습니다.
- 캐싱 최적화
동일 항공사·운임 조합 요청을 캐싱해 응답 속도 추가 단축 - 규정 파싱 자동화
항공사별 규정 형식이 달라도 스스로 구조를 인식하도록 개선 - 적용 범위 확장
외항사, 귀국편 환불 등 다양한 케이스로 확대
마무리하며
이 프로젝트는 단순한 기술적 전환이 아니라, AI를 실제 고객 경험 속에 자연스럽게 녹여내기 위한 실험이었습니다.
많은 사람들이 “AI는 아직 실무에 적용하기엔 부족하다”라며 도입을 망설이거나 포기하곤 합니다. 하지만 이번 경험을 통해, AI가 모든 것을 완벽하게 처리하지 못하더라도, 어떻게 활용하고 어떤 역할을 맡길지에 따라 결과는 완전히 달라질 수 있다는 점을 직접 확인할 수 있었습니다.
AICX는 앞으로도 기술 혁신이 곧 고객 경험의 혁신으로 이어질 수 있도록 끊임없이 도전하고 실험하겠습니다.
감사합니다.