#0 개발 배경

    LLM 관련 기술에 흥미가 있다보니 조금씩 기술에 대해서 찾아보고 있는데, LLM을 활용한 친구나 비서 등 굉장히 많은 서비스가 이미 나오고 있었다.

    예전부터 AI를 사용한 서비스를 구현해보고 싶었기 때문에 이번 SSAFY 팀 프로젝트에서 아래의 주제를 기획하게 되었다.

     

    주제: '사회적 추론 게임(마피아 게임) 시스템을 접목한, LLM 평가 데이터 셋 수집 플랫폼'

     

    아래와 같은 개요로 현재 결정한 아이디어의 피드백을 받기 위해 교수님들에게 메일을 보냈었다.

    ***
    해당 프로젝트의 아이디어 발단은 다음과 같습니다. (참고 논문: https://arxiv.org/abs/2403.04132)
    현재 LLM은 기존에 명확한 정답을 출력했던 모델들과 달리 생성형으로 사용되기 때문에 평가 방식에 어려움이 있습니다. 그래서 사람이 만드는 벤치마크와 같은 데이터로 LLM을 평가하고, 이러한 벤치마크는 정답이 있는 정량적인 평가가 주를 이루어 왔습니다.
     
    위 논문은 정량적인 평가 외에, 인간 선호도 평가를 통한 정성적인 평가의 필요성을 설명하고, 이러한 근거를 기반으로 두가지 AI를 블라인드에서 비교하는 웹 사이트를 운영한 결과에 대해 설명하고 있습니다.
     
    저희는 이러한 기존의 이론에서 착안하여, LLM을 평가할 때 많은 노력이 들어가는 인간 선호(정성적)
    평가에 게이미피케이션을 적용하여 많은 사람들로부터 흥미를 이끌어내고자 합니다. 사용자들은 게임을 즐기고, 서비스 제공자인 저희는 사용자들이 생성한 '평가 데이터'를 확보하는 것을 1차적인 목표로 하고 있습니다.
     
    게임 규칙은 간단하게 요약하자면 다음과 같습니다. 사용자 6명과 서로 다른 LLM 모델 2개가 모여, 표면적으로 8명 플레이어가 실시간 채팅을 하며 그들 사이에서 LLM을 찾아내는 게임입니다. 한 턴에 한 번 LLM으로 의심되는 플레이어를 투표할 수 있으며, 추론에 도움을 주기 위해 토론 전에 플레이어들에게 공통적인 질문을 한가지 제시하고, 각자 답변을 작성할 시간을 주게 됩니다. (이외에 게임 시스템이 존재하나 생략하겠습니다.)
     
    결과적으로 현재 게임에서 수집하고자 하는 평가 데이터는 크게 두 가지입니다.
     
    1. 게임이 시작될 때 다양한 LLM 모델 중, 무작위 두 가지 LLM 모델을 선택하고, 더 오래 살아남은(인간에게 위화감을 주지 않은) LLM 모델이 이러한 능력에 있어서 비교 우위에 있음을 데이터로 수집한다.
     
    2. 낮 시간에 플레이어들에게 주어지는 공통적인 '질문 - 답변' 시간에 주어지는 공통 질문을 벤치마크 질문을 참고하여 제시한다. 결과적으로 벤치마크의 질문에 대한 인간의 답변과 LLM의 답변을 수집하여 비교할 수 있는 데이터 셋을 생성한다.

    ***

     

    #1 기능 설정

    1. 사용자

    목표: 사용자의 입장에서 개발하기 << 혼자 사용할 것이라고 생각해서 편한 길로 개발하는 것 보다는, 사용자의 편의성을 위해 내가 어떤 방식의 개발까지 해보았는지에 대한 경험이 있으면 좋겠다고 생각했다.

     

    1) 회원가입

    2) 로그인

    3) 토큰 방식 인증

    4) 세션 관리

     

    2. 게임 생성 / 관리

    다음 장에서 이전에 개발했던 텍스트 어드벤처 플랫폼과 다른 웹 서비스들을 보고 상세히 결정해야겠다.

     

    3. 스토리 진행 방식 - RAG

    SSAFY 관통 때, 완벽하게 구현해보지 못했던 RAG를 사용해서 마피아 게임 챗봇 기능을 올리고 싶은데 가능할지

     

    4. 토큰 결제

    paddle을 사용해서 게임 관련 상품을 구매하는 기능을 넣어보고 싶다.

     

    5. 데이터 시각화

    개인적으로 대시보드 페이지를 만들고 싶은데 유의미한 서비스 품질 상승으로 이어질지 잘 감이 오지 않는다.

    #2 기술 스택 선택

    1. 도커 사용

    이번 개발은 개인 사정과 모델 학습으로 인해 다양한 노트북 및 컴퓨터에서 진행될 것 같다.

    따라서 개발 환경 설정을 간소화해주는 도커를 사용하고자 한다.

    초기 학습 시간이 필요하며, 여러명과 협업하는 것이 아니니 효율이 뛰어나다고 할 수는 없으나,

    다음 협업 개발에서 사용하기 위한 학습이며 동시에, 혹시? 나중에 프로젝트가 잘되면 배포 후 쿠버네티스도 써볼 수 있는 기회가 되지 않을까 싶다.

     

    2. 백엔드 - Java Spring, FastAPI

    RAG를 사용한다면 hugginface를 사용한 토크나이저, pandas를 이용한 데이터 분석, langchain 활용 등을 위해서 python 서버가 필요하다. 허나 6인 팀으로 진행되는 지금 팀원들이 백엔드를 Spring으로 학습하고자 하기 때문에 둘을 동시에 운영하는 방법을 찾고자 한다.

    python 서버에 요청이 몰린다면  Nginx등을 사용해서 트래픽 분리를 해보는 것을 목표로 한다. (잘모름)

     

    3. 프론트엔드 - Typescript, Vite, React, Tailwind css

    먼저 React + Tailwind css의 경우 경험상 GPT로 스켈레톤 코드를 만드는 것이 편하고, 퀄리티가 높으며, 디테일을 수정하기에 용이했다. 개인 프로젝트이기 때문에 프론트엔드는 GPT를 최대한 효율적으로 사용하는 방향으로 가고자 한다.

     

    또한 Tailwind css 는 부트스트랩 같은 것들과 비교해서 훨씬 자유도 높은 디자인을 가능하게 해준다고 생각했다.

     

    vue가 아닌 React를 사용한 이유는, 개인적으로 최근 프로젝트에서 사용한게 vue여서 그쪽이 더 편하겠으나,

    단순히 웹 서비스가 아닌, 웹으로 구현되는 게임 시스템을 만들고자 하기 때문에 프로젝트 개발시 유연성이 더 필요할 것이라고 생각했다

     

    4. DB - mysql, psql (?)

    싸피 과정중에서 배웠던 RAG를 구현할 때, pgvector를 사용하는 방법을 복습하고자 한다.

    아니면 vector db를 사용해야 하는데, 좀 더 알아봐야겠다.

    이는 psql과 결국 연동이 되므로 이를 사용하고자 한다.

     

    5. 그 외 - github, GCP or AWS, paddle

    GCP의 배포 경험이 있으며, 무료 할당량이 있으니 GCP에서 배포한다.

    일단 팀원 중 배포 담당 팀원은 AWS 경험이 있어서 AWS로 개발하려고 하니 그 쪽 방향이 될 것 같다.

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기