
참여 범위 : 해커톤 팀 참여
- 디자인전담
- AI 설계참여
- 프론트엔드전담
- 백앤드참여
사용 도구 / 프레임워크



프로젝트 배경
2023 한국 관광 Gen AI 해커톤에 참가했다. (456명 참여, 107개 팀 결성)
당시 AI 모델:
- ChatGPT 무료 버전은 GPT-3.5, ChatGPT Plus에서는 GPT-4를 사용할 수 있었다.
- 경쟁 제품으로는 Google Bard, Microsoft Bing Chat가 있었다.
당시 AI 웹 검색 기능:
- ChatGPT에서는 Browse with Bing이 있었지만 8월에는 중단 상태
- Bard (PaLM 2)는 Google Search 기반 AI 검색 결과 제공
- Bing Chat는 Bing 검색과 결합되어 웹 검색 가능
그러나 환각이 매우 많았으며(‘음식점 찾아줘’를 요청하면 존재하지 않는 음식점 목록을 생성하는 환각 증상 심각)
고품질의 정보를 얻기 힘들었다(한국 특화 플랫폼 접근 한계)
프로젝트 동기
엔데믹 이후 방한 외래 관광객 시장 회복기 진입
- 오징어 게임 등 K-Culture의 확산
- 그러나 외국인 관광객에게는 주요 관광지를 제외하면 관광 정보가 제한적
- 한국에서의 교통 정보를 얻기 힒듬. (구글 지도 대신 한국 전용 지도 플랫폼이 활성화됨)
- 한국 관광지에 대한 로컬 후기는 한국어이며, 한국 특화 플랫폼에 존재 (네이버 플레이스 등)
한국의 관광 정보를 현지인 수준으로 찾아 볼 수 있게 해 주는 플랫폼을 개발하기로 함
그래서 언어의 장벽을 없애 모국어로 질문을 입력하면 광범위한 한국 관광 정보를 AI가 찾아 제공
결과
107개 팀 중 최종 결선 8팀 입선, 최종 2위 수상 (2023 한국 관광 Gen AI 해커톤 최우수상)
https://www.yna.co.kr/view/AKR20230830148800003
AI 설계
아키텍쳐 설계에 중심적인 역할을 수행했다.
설계도 안에 데이터 기반, Task 기반, AI 모듈 기반의 흐름을 모두 정의해 전체 시스템이 어떻게 동작하는지를 나타냈다.


아이디어
당시 모델 성능의 한계로 인해 사용자 입력 텍스트의 상태에 따라 최종 생성 답변의 편차가 컸다. (사용자가 애매하고 짧은 텍스트를 입력하면 최종 생성 답변도 불완전했다.)
따라서, 중간 단계에 ‘Restriction 생성’이라는 과정을 제안했다.
- Restriction은 관리자(페르소나)가 직원(답변 생성 담당)에게 전달하는 상세한 업무 지시 메시지이다.
- 직원은 사용자 입력을 알 수 없고 관리자의 지시 메시지만을 보고 답변을 생성한다고 가정한다.
- 따라서 관리자는 중간에서 사용자의 의도를 이해하고, 직원에게 무엇에 대한, 어떤 답변을 어떻게 작성해야 하는지 구체적으로 설명할 책임이 생긴다.
- 따라서 Restriction에는
- 어떤 정보를 제공해야 하는지
- 답변을 어떤 형식으로 작성해야 하는지
- 답변 작성 시 무엇에 주의해야 하는지
가 모두 담겨 있게 된다.
- Restriction 생성 과정에서 실수가 발생해 정보 손실이 생길 수도 있기 때문에, 실제 아키텍쳐에서는 최종 답변 생성 ai에게 원본 입력과 restriction을 같이 제공한다.
- Restriction속에 사용자의 의도를 해석하여 답변을 생성할 때 주의할 점과 예시 답변 형식 등이 상세히 담겨 있기 때문에 답변의 수준은 restriction 과정이 없을 때와 비교해 더 안정적이고 일목요연한 답변이 나왔다.
- 즉, 전체적으로 보았을 때 Restriction 생성 과정은 Chain-of-thought를 한 단계 실시하도록 프로세스를 만든 것과 비슷하다.

서버 설계
복잡한 전체 프로세스를 추상화 하여 Flow 시스템을 구현했다.
- 모든 작업 단위를 ’Task’로 추상화했다.
Task 하위에 SingleTask, MultipleTask가 존재하고,
MultipleTask 하위에는 SequentialRunner, ParallelRunner가 존재한다. MultipleTask는 child로 {SingleTask, MultipleTask}의 목록을 가진다. - 세션에서 모든 Task가 공유하는 Key-value 기반 data store이 존재하여, task간 data 교환을 자유롭게 했다.
- SingleTask, SequentialRunner, ParallelRunner를 조합하여 어떤 복잡한 프로세스도 빠르게 구축할 수 있도록 했다.
개발자는 퍼즐을 조합하듯 복잡한 직렬/병렬 작업 흐름을 정의할 수 있다.

개발 결과
당시 Bing Chat과 비교해, 더 구조화되고 사용자의 요구에 맞는 답변을 생성했다.

프론트엔드 구현 영상
프론트엔드 녹화를 위해 가상의 검색 결과로 시연된 자료입니다.


