brunch

You can make anything
by writing

C.S.Lewis

by egg fly Jul 14. 2024

할 일이 필요한 주니어를 위한 AI 서비스

LaaS를 활용한 <원티드 X 네이버 클라우드> 프롬프톤 참여기


01. 프롬프톤 개요


지난 7월 1일부터 시작된 현직자 대상의 <원티드 X 네이버클라우드 프롬프톤> 참여하게 되었습니다. 프롬프톤의 참여자로 확정이 되며 기획자로 근무한 지난 2년 동안의 회사 생활을 되돌아보았는데요. 과연 그때의 나에게 뭐가 필요했을까? 회사 생활을 하며 힘들었던 순간이나 불편했던 경험을 생각해 보니 '아 맞다!'하고 떠오른 게 있었습니다. 


글 제목에 나와 있듯이 저는 회사에서 할 일 없이 시간을 보낼 때마다 곤욕이라고 생각했습니다. 제가 경험해 본 기획 직무 특성상, 바쁠 땐 엄청 바쁘고 한가할 때는 정말 한가했습니다. 물론 시간이 날 때마다 '나는 절대 월급루팡이 되지 말아야지!' 하며 할 일을 찾아 하곤 했습니다. 데이터 분석, 업계 동향 파악, 서비스 제안, 문서 정리처럼 말이죠.

하지만 할 일이 없을 때마다 이런 일들을 루틴하게 진행하다 보니 결국 한계가 있었습니다. 또, 목적 없이 시간을 때우기 위해 하는 일도 있었고요. 이럴 때마다 '내가 이러려고 회사 다니나...' 싶은 생각도 종종 들었습니다. 상급자에게 매번 할 일을 묻기도 쉽지 않죠.


그래서 저처럼 근무시간에 할 일이 필요한 IT 직군의 주니어 직장인들을 위해 맞춤형 업무 과제를 추천해 주는 AI 서비스, '일하는 고구마'를 제작하게 되었습니다. 참고로, '일하는 고구마' 타이틀은 '말하는 감자' 밈에서 한 단계 더 발전하자는 의미로 네이밍을 하였습니다.



02. 프롬프톤 진행 과정

직접 개발한 웹·앱 서비스를 같이 제출할 수 있는 프롬프톤인 만큼 실제로 API 연동까지 진행해 보고자 아이데이션부터 웹서비스 제작까지 진행했습니다. '프롬프트 고도화 - 배포 - 테스트'는 마감일까지 계속 진행해야 할 것 같아서 실제로는 테스트 중간에 웹서비스를 제작하며 일정을 유연하게 관리했습니다. 프롬프톤의 전체 진행 과정을 다루기에는 분량이 너무 많아지니 프롬프톤을 진행하면서 발생했던 이슈와 그 대응 방법, 그리고 간략하게 웹 제작 후기까지의 내용을 다루겠습니다. 



03. 프롬프톤 이슈와 대응


프롬프톤을 진행하면서 크게 세 가지의 이슈가 있었습니다. 이를 어떻게 대응했는지 원티드 LaaS의 요소 중 '시스템 메시지, 사용자 인풋, RAG, 어시스턴트 답변'을 중점적으로 구성하여 정리했습니다. 아래는 제작한 서비스의 이해를 돕기 위한 최종 서비스의 프로세스입니다.

 

(1) 회사에 대한 잘못된 답변 생성

< 기대 > 사용자가 회사명을 직접 입력하면, 경쟁사나 관련 산업에 대한 구체적인 과제 제안이 가능할 것이라고 기대했습니다. 예를 들면, '중앙일보'라는 회사명을 입력했을 때, '동아일보'나 '조선일보'를 경쟁사로 놓고 '경쟁사 분석'을 주제로 맞춤형 과제를 제안하는 것처럼 말이죠. 

< 문제 > 기대한 것처럼 일부 답변을 생성하기는 했지만 문제는 회사에 대해 그럴듯한 잘못된 답변을 가끔 생성했다는 것입니다. 넷플릭스와 왓챠를 구독형 웹툰 플랫폼이라고 하거나 잘 알려지지 않은 회사는 회사명으로 서비스를 잘못 유추하는 것처럼 말이죠.

< 대응 방법 >

❶ RAG 활용 (X) - 국내외 회사명과 그 산업 분류의 데이터를 지식베이스로 활용하고자 했으나 무료로 저작권 제한 없이 이용할 수 있는 공공 데이터 파일은 찾을 수 없었기에 부적합으로 판단했습니다.

❷ 사용자 입력 추가 (X) - 사용자가 직접 회사 정보를 상세히 입력하는 방법도 생각했으나 타 회사 정보를 입력하지 않았을 때 동일한 문제가 발생할 수 있고 매번 입력해줘야 하므로 부적합으로 판단했습니다.

❸ 시스템 제약 추가 (O) - 알 수 없는 회사는 임의로 답을 생성하지 말고 사용자가 관련 산업을 입력하도록 유도하거나 답을 하지 말라는 지시를 했습니다. 하지만, 계속 임의로 답을 생성하는 문제가 있었고, 회사에 대한 부정확한 정보를 제공하느니 다소 포괄적으로라도 관련 산업에 대한 답변을 제공하는 게 나을 것 같다고 생각했습니다. 따라서 직접적인 회사명을 언급하지 말고 산업을 기준으로 답을 하도록 지시했습니다.

❹ 사용자 입력 변경 (O) - 가변 항목을 {회사명}에서 {회사 정보}로 수정하였습니다. 예를 들면, 사용자가 '원티드랩' 대신에 '채용 플랫폼 회사'라는 값을 입력받도록 정의하여, 산업의 파악과 할루시네이션의 발생을 최소화했습니다.


(2) 조건에 적합하지 않은 답변 생성

< 기대 > 초기 프리셋에는 {회사명}, {직업}, {희망 업무 능력}, {경력연수}, {과제 수행 시간}을 사용자가 입력하도록 하여, 전 직군의 직장인을 위해 남은 업무 시간까지 고려한 맞춤형 과제 추천을 기대했습니다.

< 문제 > 시간 내에 절대 완수할 수 없는 과제나 경력을 고려하지 않은 범위의 과제, 직업에 맞지 않는 범위의 과제 등을 추천하는 문제가 있었습니다. 예를 들면, ‘1시간 안에 설문조사의 기획과 실제 진행까지 하는 과제’를 추천하거나 ‘기획자에게 오픈소스 프레임워크로 1시간 안에 웹 서비스를 만드는 과제’를 추천했습니다.

< 대응 방법 > 

❶ 시스템 제약 추가 (X) - 가변 항목이 많다 보니 그만큼 지켜야 하는 제약 사항도 많았는데요. 복잡한 제약 사항을 추가할수록 삐뚤어지는 결과를 초래하여 오히려 낄 때 빠지고 빠질 때 끼는 역효과가 났습니다. 

❷ 시스템 제약 정리 (O) - 맥락이 비슷한 중복 제약을 제거하고, 명확하게 지시하였습니다. 또한, 타겟·목적·범위 등으로 항목을 세분화하고 구조화하여 용이한 관리가 가능하도록 정리하였습니다. 그럼에도 잘 안 지켜지는 사항에 대해서는 사용자 인풋에 기재하여 답변을 요청했습니다.

 RAG 추가 (O) - NCS에서 제공하는 직무와 능력, 수준 등의 데이터를 활용해서 지식 베이스를 구축하였습니다. 데이터 양이 방대하였기 때문에 정보기술 직무에 특화된 서비스로 범위를 좁혔습니다.

 사용자 입력 변경 (O) - 수행 시간에 따라 과제 범위를 적절히 조절하지 못하고, 'NCS의 수준' 데이터를 잘 활용하지 못해서 {과제 수행 시간}과 {경력연수}를 제거하고 {과제 난이도}를 추가하였습니다. 최종적으로는 주니어의 경력연수로 정의한 1~5년 차의 능력 차이를 고려해서 맞춤형 답변을 제공하기 위해 {경력연수}를 다시 추가하고 대신 RAG 프롬프트에 '수준, 난이도, 경력연수'에 대해 명확하게 정의했습니다. 

❺ 명확한 예시 제공 (O) - 시스템 메시지에 간단하게 작성했던 예시를 RAG의 데이터를 기반으로 한 근거 있는 예시로 수정했습니다. 또한, RAG에서 어떤 근거로 과제를 추천했는지에 대한 '추천 근거' 예시를 함께 제공하고 유사한 포맷으로 답변을 지시하여 근거에 따라 답변을 하도록 정확도를 개선했습니다.

❻ 테스트 진행 (O) - 특정 가변 항목의 값만 바꾸고 나머지 항목의 값은 동일하게 테스트를 진행하여, 각 가변 요소에 대해 적절한 답변을 제공할 수 있도록 프롬프트를 보강했습니다.


(3) 데이터 확보의 어려움

< 기대 > 업무 과제 추천에 적합한 데이터를 다양하게 가져와서 약간의 전처리 과정만 거치면 AI가 알아서 검색하고 가장 적합한 추천을 해줄 것이라고 기대했습니다.

< 문제 > 서비스에 딱 들어맞는 데이터 파일을 확보하는 것부터 문제였지만, 감안하고 NCS에서 가장 적절한 파일을 찾아 일부 열을 제거하는 간단한 전처리를 진행했습니다. 이후 전체 직무 데이터를 csv 파일로 전환하니 파일 크기가 500MB가 넘었고, 검색 최적화 및 토큰 확보를 위해 타이트한 전처리가 필요했습니다.

대응방법

❶ IT 직군 특화 (O) - 업무량 변동이 큰 IT 직군에 특화될 수 있도록 정보기술 직무 데이터로 한정했습니다. 활용된 데이터에는 모든 IT 직군에 대한 정보가 없기 때문에 유사한 성격의 직업에 대해서는 유연한 답변을 할 수 있도록 지시했습니다.

❷ 중복 데이터 제거 (O) - IT 직군의 데이터만 해도 10만 행이 넘는 데이터가 있었기 때문에 핵심 열만 선별하고 중복 데이터는 그룹화해서 병합하는 작업을 했습니다. 테스트와 데이터 전처리 과정을 반복하며 기존 정보기술 파일의 10만 개 행 & 19개 열 데이터를 최종적으로는 63개 행 & 3개 열로 전처리했습니다. 중복 데이터 이슈와 제 역량의 한계로 활용도 높은 데이터를 포함하지 못한 게 아쉽습니다.


(#) 여전한 이슈와 고도화

이슈에 대응을 하며 답변 퀄리티가 많이 개선되었지만, AI 서비스 특성상, 고도화와 보강은 정말 끝이 없는 작업인 듯합니다. 여전히 일부 답변에는 해결되지 않은 할루시네이션이 발생하고, 이를 개선하기 위해 대응을 하면 또 다른 이슈가 발생하는... 마치 뫼비우스의 띠 같습니다. 특히 '맞춤형 업무 과제 추천'이라는 서비스 특성상, 답변 창의성이 너무 높아도 안 되고, 한정된 검색 데이터에만 의존할 수도 없기 때문에 서비스 고도화가 더욱 어려웠던 것 같습니다. 


비슷한 맥락으로 답변 맨 처음에 나오는 어시스턴트의 인사 포맷은 '정겨우면서도 젠틀한 회장님(?)' 스타일로, 그 뒤에 이어지는 과제 내용의 포맷은 '명료하고 간결한 보고서' 스타일로, 이렇게 두 가지의 어시스턴트 포맷을 유지해야 했습니다. 이때 영역 별로 각각의 포맷의 답을 하도록 지시했기 때문에 어시스턴트에게 캐릭터는 따로 입히지 않았는데요. 그런데 결과물 평가를 위해 임시로 답변하도록 한 '추천 근거'를 제외하고 답변을 받으니 다시 정확도가 떨어지는 문제가 있었습니다. 그래서 '추천 근거'를 필수 답변에 포함시켜 정확성을 확보하고 동시에 사용자에게 도움이 되는 정보를 조금 더 재치 있게 제공할 수 있도록 '추천 근거' 영역은 젠틀한 회장님 캐릭터가 되어 답변하도록 지시했습니다. 위기를 오히려 기회로 삼아 서비스를 개선하면서 특색까지 더할 수 있었습니다.



04. API 연동 웹서비스 제작


API를 연동한 웹서비스는 이전에 잠깐 이용해 본 적 있는 bubble.io로 제작하였습니다. 자유도가 높은 툴이기에 어느 정도 작업이 필요하기는 하지만, 간단하게 API를 연동할 수 있고 테스트용으로 제작하여 공유할 수 있기 때문에 프롬프톤에 활용하기는 적합했습니다. 또, AI 서비스를 제작하는 버블 공식 영상에는 한국어 자막도 제공하고 무료로 API 연동을 할 수 있는 영상도 참고했기에 큰 어려움은 없었습니다.


비하인드로, POST 호출에 계속 오류가 나서 원래는 웹서비스 제작을 포기하고 프롬프트 고도화에 더 집중을 하려고 했습니다. 그래도 하루종일 시도한 게 아까워서 고민하다가 담당자님께 오류 관련 문의를 드렸는데요. 처음 시도해 보는 거라 멍청하게 틀린 걸까 봐 조마조마했지만, 감사하게도 팔로업하시면서 해결책을 알려주셔서 API 연동에 성공할 수 있었습니다. 막상 해결하고 보니 너무 간단하게 연동할 수 있어서 끝까지 시도하지 않았다면 정말 아쉬울 뻔했습니다. 물론 해결하고 보니 쉬워 보이는 것뿐...



05. 프롬프톤 후기


인생 첫 프롬프톤에서 LaaS로 제대로 된 서비스를 만들어볼 수 있었던 후기를 남겨보자면 힘든 만큼 재미있었습니다. AI의 도움을 받아 파이썬으로 데이터 전처리를 하고, 오류 메시지를 수십 번 보며 API 연동을 시도하고, 어떻게 하면 더 간결하고 명료하게 지시를 할까 고민을 한 경험들이 힘들기도 했지만 그만큼 더 보람차고 재미있었습니다. 웹 서비스에 API가 정상적으로 연동돼서 어시스턴트의 답변이 출력되는 거 보면서 혼자 박수치고 안도의 한숨을 내쉬기도 했습니다.


프롬프톤의 본질은 프롬프트와 RAG 등을 잘 활용해서 고품질의 답변을 내놓는 거지만 마지막 날까지 고도화를 시도할 만큼 개인적으로는 답변의 결과물에 아쉬움이 있습니다. 그래도 AI 웹서비스도 만들고 서비스 소개서도 만들면서 제 본래 직업인 기획자 관점에서 최대한 다양한 경험을 해본 것 같습니다. 10점짜리 답변의 결과물은 아니지만, 이 정도의 퀄리티를 내기까지 다양한 시도들과 고민을 했기 때문에 좋은 경험이 된 것 같습니다. 이번 경험을 통해 다음에 다시 AI 서비스를 만들게 된다면, 데이터를 보다 잘 활용하고 프롬프트도 잘 다듬어서 10점짜리 답변을 내놓고 싶네요!


#원티드LaaS #하이퍼클로바X #프롬프톤 #AI


/ 24.07.29 레이아웃을 수정했습니다.

/ 썸네일 : 미드저니

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari