← Writing

VibeBooth 기획부터 배포까지 #2 — Connecting dots

이렇게 개발자가 된다

학부 통역 수업 때 처음 접한 스티브 잡스의 그 유명한 "connect the dots" 연설: 인생을 되돌아 보면 비로소 과거의 모든 경험들이 서로 연결되어 있다는 것을 깨닫는 말이 조금이나마 공감이 간다. 한국외대에서 학부는 영문학•영어학과, 대학원은 영어학/언어학(전산언어학을 세부전공으로 BERT에 관해 논문을 쓰긴 했다)을 전공했는데 어쩌다 모바일 앱 개발까지 하게 되었는지 특이하게 생각하는 사람도 있겠고 클로드 코드 등 AI 딸깍으로 개발자 행세한다고 보는 사람도 있을 것 같다. 그런데 나 스스로 생각했을 때는 내 이력과 경력 때문에 요즘 재밌게 앱들을 만들고 있는 걸 체감하는 중이다.

코딩을 처음 배운 건

사실 코딩을 처음 배운 건 4학년 언어데이터 통계 분석 수업으로 R로 시작했다. 원래 나는 학점을 따기 쉬운 수업 보다 '뭔가 남는' 수업을 선호했기 때문에 졸업 전에 재밌는 주제의 수업을 들어보겠다고 남들은 취업 준비하는 고학년에 원어민 독일어 수업과 코딩 수업을 들은 것이다. 이때 수업을 바탕으로 에트리(한국전자통신연구원)의 언어지능연구소 인턴을 하게 되었고, 대학원에서도 딥러닝 공부 및 NIA(한국지능정보사회진흥원), 현대엔지비 등 데이터셋 관련 산학협력연구에 참여했었다.

살기 위해 한 프로그래밍

그렇게 입사한 스타트업. 원래 담당하는 역할은 머신러닝 기반 챗봇 / LLM 학습 데이터셋 구축이었다. 원래 중소 스타트업 특성상 영업팀은 일단 계약을 따내고자 최대한 많은 양의 산출물을 제공하겠다고 하고 계약서에 싸인하기 때문에 팀원들의 업무가 아주 버라이어티하고 과중한 편이다 (e.g. "LLM 학습 데이터 4만건!"). 그래서 최대한 업무량을 줄이고 데드라인 내로 업무량을 "쳐내려면" 자동화는 필수. 그래서 살겠다고 원래 업무가 아닌 프로그래밍을 시작했다.

예시 1: 국가보훈부 사업

보훈인물의 '디지털 페르소나'를 가진 봇 개발 사업 때 일이다. 협력사에서 기초 사료와 설문조사를 바탕으로 QnA 데이터셋을 만들면 우리 팀과 크라우드 워커들이 진의 여부를 확인하고 주제별로 분류하는 작업을 했다. 설문조사는 만여건, 기초 사료는 천여페이지. 일단 설문조사는 수작업으로 디지털화 한 후 정규표현식과 텍스트 임베딩 후 클러스터링으로 비교적 수월하게 작업량을 줄였다. 문제는 기초사료를 바탕으로 만들어진 QnA 데이터의 사실성을 확인하는 작업이었다. 일단 협력사에도 데이터의 퀄리티를 높이겠다고 매일 새로운 버전의 프롬프트로 만들어진 1차 데이터셋을 보내면서도 역사 전반을 어우르면서도 논란이 되지 않게끔 100% 사실에 부합하는 답변을 원했다. 그러면서도 어떤 사료의 몇 페이지를 바탕으로 RAG를 했는지를 공유하지 않았다. 그말은 우리 작업자들이 사료 페이지 하나하나 다 뒤져서 사실적이면서도 정확한 답변을 제공해야 한다는 뜻. 당연히 작업 속도가 너무 나지 않아 직접 파이썬, 랭체인으로 RAG 시스템을 만들었다. 신뢰할 만한 자료와 이미 검수가 된 기작업물을 바탕으로 1차 작업물을 만들어주는 자동화 툴이었다.

예시 2: 세일즈 에이전트

매 사업마다 프로그래밍으로 자동화 도구를 만들었다 보니, 어느새 회사에서 LLM의 L자가 들어가는 일은 다 나에게 맡기기 시작했다. 심지어 내 프로젝트를 하는 와중에 타팀까지 지원도 여러번 나갔다 (예시: "지금 통신사의 LLM 데이터셋 구축하고 있는데, 내일 다섯시까지 이번에 나온 'GPT 4o'로 평가해주세요"). 그러다가 시나리오 기반의 머신러닝 챗봇을 대체할 순수히 LLM 기반의 새 챗봇을 만드는 것을 목표로 하는 사내 프로젝트에 참여했고, 내 제안으로 외부 툴을 재량으로 사용하는 에이전틱 LLM 기반 챗봇을 기획•개발했다. 참고로 당시는 OpenAI가 function calling (tool use)를 막 공식으로 출시했던 시기로, Anthropic 모델에서는 툴 사용을 지원하지도 않던 때였다. 에이전트 기능이 막 나오던 찰나에, 출퇴근할 때도 랭체인의 개발 문서를 보고 랭스미스 베타 버전으로 디버깅 및 팀 동료들에게 프롬프트 강의를 하는 등 멘땅에 해딩, 자충우돌 끝에 챗지피티와 클로드 혼합으로 벡터스토어 + SQL 도구를 사용하는 에이전틱 세일즈 봇을 개발했다.

AI를 크라우드 워커처럼

회사를 다닐 때 가장 하기 싫었던 일은 바로 크라우드 워커 관리였다. 당장 내 분량을 작업하기도 벅찬데, 크라우드 워커의 작업물을 검수하고 이를 바탕으로 가이드라인을 수시로 업데이트 해야 했다. 그렇다고 가이드라인을 수정하거나 피드백을 명시적으로 주지 않으면 그만큼 검수 시 사실상 재작업에 가깝게 작업 시간이 더 걸린다는 걸 알기에 워커 작업 관리와 피드백에 특히 신경을 썼었다.