AI 연작 2: 챗봇(Chatbot) 만들기

몇몇 분들은 아시겠지만, 나는 4월부터 회사에서 생성형 AI (Generative AI, 여담으로 생성형이라는 말이 착 달라붙는 건 아니다) 기반의 챗봇을 만들고 있다. 내 제품도 홍보할 겸, 근속 1주년도 된 겸, 생성형 AI가 뜨거운 화두인 겸해서 챗봇을 만들면서 느꼈던 소회를 좀 풀어보고자 한다. 그럼 바로 시작해보자.

1. 뻔하디 뻔하지만 제대로 된 생성형 AI 챗봇을 만드는건 매우 어렵다.

OpenAI의 API 덕분에 그럴듯한 챗봇을 만드는 건 매우매우 쉬워졌다. Training이나 Fine-tuning 없이도 봇은 말을 찰떡 같이 알아 듣고, 그럴싸한 답을 한다. 얼마나 그럴싸한지는 이제 말을 하지 않아도 모두가 알고, 심지어 이제는 그 놀라움에 길들여져 더 이상 신비롭지 않기까지 하다. (오히려 많은 사람들은 GPT4의 능력이 눈에 띄게 떨어졌다고 한다, 그리고 실제로 “model drift“라는 현상이 있다!)

물론 이 쉬움이 적용되는 건 딱 데모까지다. 실제로 챗봇을 만들어서, 비즈니스 고객에게 팔려고 하면, 풀어내야 할 문제가 산적해있다. 이 글에서도 잘 정리되어 있지만, 아주 간단하게나마 고민 해야 되는 것만 해도, 모델 호스팅하기 (어떤 모델을 어디에?), 모델 돌리기(인퍼런스), 임베딩 (참고 자료 1, 자료 2) 만들고 저장하기, 프롬트 엔지니어링, 채팅 인터페이스 구축하기가 있다. 모델을 고르고 호스팅 하는 건 기업 고객 입장에서 보안과 컴플라이언스와 직결되고 (모델에 인풋으로 기업 고객의 데이터가 들어 가야하므로), 프롬트 엔지니어링은 성능과, 채팅 인터페이스는 사용자의 경험에 지대한 영향을 미친다. 또한 프라이버시는 어떤가? 채팅은 가장 사적인 영역이니 최고의 수준으로 제공되어야 한다.

위 조건을 다 충족하면서, 질문에 사람같은 대답을 내놓고, Typing indicator와 같이 답을 치고 있다는 타이핑 표시처럼 최적화된 기능을 제공한다고 해도, 어느 기업이 챗봇이 아무 말이나 하길 바라겠는가? 결국 기업이 원하는 답을 해야하는 문제에 직면하게 된다. 이 얘기는 아래에서 조금 더 해보자.

출처: Mozilla의 Stephen Hood“So you want to build your own open source ChatGPT-style chatbot…”

애석하지만 제대로 된 제품이 나오기 위해서는 위에서 잠깐 나열한 문제들이 모두 명쾌하게 해결되어야 한다. 하지만 어렵기 때문에 바로 기회가 있을 수 있다.

2. “생성형”은 언제 작동해야 하는가?

챗봇 자체는 튜링 테스트부터 이어지는 고고한 역사를 가지고 있다. 현재도 많은 고객 지원 회사가 챗봇을 핵심 상품으로 갖추고 있다. 한국에서는 채널톡, 해피톡, 해외에서는 Intercom, Yellow.AI, Gupshup, 그리고 우리가 익히 Google과 Amazon도 챗봇 상품(Dialogflow, Lex)이 있다. 기존에 챗봇들은 대부분 Rule-based workflow라고 해서 고객이 특정 질문에 대한 정확한 답변의 순서와 흐름을 정의하는 것을 주요 기능으로 삼았다. 그렇기 때문에 챗봇을 만든다는 건 사용자의 여정을 굉장히 섬세하게 (나쁘게 말하면 일일이) 정의한다는 것과 일맥상통했다. 여기서 특정 여정을 촉발 시킬 수 있는 질문을 훨씬 더 능동적으로 인식하기 위해, NLP 기술이 들어가곤 했었다. 질문과 답변을 지정해야 한다는건 결국 고객이 많은 시간을 써서 챗봇을 본인에 맞게 제작해야 된다는 뜻이다.

ChatGPT가 처음 나왔을 땐, 우리는 이 규칙 기반의 고객 여정을 송두리째 갈아치울 수 있을거라고 생각했다.

LLM 기반으로 챗봇을 만들면, 우리는 이 제작 시간과 과정이 없어도, 적절한 문맥을 제공하면, 챗봇이 “알잘딱갈센”으로 의도를 이해하고, 고객이 원하는 답변을 줄 수 있을 줄 알았다. ChatGPT의 놀라운 능력이 모든걸 해결할 수 있다는 1차원적인 생각이었던 것이다. 그러나 고객이 원하는 정보를 기반으로, 원하는 말투로 고객의 디자인에 맞는 UI를 그리면서, 동시에 원하는 답변을 GPT는 알아서 할 수 없다. 대다수의 경우에 괜찮은 답변이 나온다고 해도, 그런 답변이 비즈니스의 의도대로 항상 나오는게 아니면 무의미하다 (실제로 Temperature: 0을 지정한다고 해서, GPT는 똑같은 질문과 컨텍스트에 항상 똑같은 답변을 주지 않는다). 그래서 실제로 예비 고객과 얘기를 할 때면, 생성형 AI 기반으로 챗봇을 만드는게 맞는가? 라는 의구심이 최초에는 자주 고개를 들기도 했었다. 심지어 근사한 해결책을 먼저 고르고, 역으로 문제를 찾는게 아닌가 싶을 때도 있었다.

그래서 우리는 기본으로 돌아가서 생성형 AI의 장점을 이해하고 몸소 느끼려고 많이 노력했었다. 그 결과 우리는 생성형 AI 기반 챗봇은 데이터를 이해하고, 답을 생성하고, 고객의 언어의 의도를 이해하는 능력이 분명히 월등하다는 점을 적어도 가슴으로는 느낄 수 있었다 (때론 머리는 이게 되네?! How?!이기도 했지만). 반대로 단점은 훨씬 더 명료하게 이해할 수 있었다 (한 번만 잘못되더라도 단점으로 인식하기엔 충분하니까). 랜덤함이 시스템의 기저에 깔려 있고, 비용도 만만치 않다.

LLM (Large Language Model)의 장단을 있는 그대로 파악하려고 하면서, 이때부터 우리는 LLM이 목적이 아니라 수단이 되어야 함을 깨달았다. 결국 생성형 AI도 고객이 원하는 것을 더 잘 이룰 수 있을 때 의미가 있는 것이다. 다시 말해서 생성형 AI을 이용해서 아무때서나, 아무렇게나 답을 뚝딱 생산해서는 안된다.

그래서 5월에 제품을 최초로 내보낸 이후에는 우리는 새로운 질문들을 던졌던 것 같다. 어떻게 하면 LLM이라는 새로운 무기의 장점을 살리고, 단점을 보완해서, 기본 챗봇보다 10배, 100배 나은 챗봇을 만들 수 있을까? 어떻게 기존의 챗봇이 가지고 있던 “Deterministic”한 행동과 LLM의 이해력을 합칠 수 있을까? 기존 챗봇 스택의 레거시가 없다면, LLM-first 디자인 챗봇은 어떤 방식으로 고객의 기존 니즈들을 충족시킬 수 있을까? 이런 조금 더 현실적인 가설들을 가지고 제품을 접근하기 시작했다.

(나는 이 시점에 이런 고민을 할 수 있다는 건 굉장한 축복이라고 생각하고, 곧 제품의 경쟁력으로 드러날 것이라고 생각하고 있다. 챗봇의 미래를 고민하는 분들이 있다면 자유롭게 연락주시면 좋을 것 같다)

3. 정보도 많이 없고, “정석”이라는게 (아직까지) 없다

당연한 얘기지만 ChatGPT가 나온지 불과 1년이 채 되지 않았기 때문에, 정보가 절대적으로 부족하다. 정보가 부족하니 정석도 없고, 물어본다고 답을 주는 사람도 없다. 아이러니하지만 생성형 AI가 가장 그럴듯한 답변을 줄 수 있다. 단적이 예를 들어 보자면, Amazon이 Early access로 출시한 Titan이라는 생성형 AI 모델은 성능에 대한 벤치마크가 존재하지 않는다. 처음에는 띠용 😳 이게 없다고? 였지만 점차 오죽 했을까라는 생각이 더 많이 들었다. Claude 2도 한국어를 굉장히 잘한다는 소문이 장안에 파다했는데, 실제로 찾아 보니 내가 찾을 수 있는 수준에서는 아무도 얼마나 잘하는지 측정해서 공유한 게 없었다. 그래서 내가 만들어 봐야 했다!

여기서 내가 말하고 싶은 건 내가 이런 벤치마크를 테스트 해볼 수 있다는게 아니라 (사실 누구의 감수를 받은 것도 아니고, 전문 지식도 부족하니, 내가 맞게 했는지도 확인할 수 없었다), 비전문가가 나서서 해야 할 정도로 초기 단계라는 점이다. (비전문가기 때문에 스스로 이게 최선인가? 라는 질문을 많이 해야 했고, 지금도 크게 다르진 않은 것 같다)

긍정적으로 보자면 지금 생성형 AI라는 우물을 열심히 팍 내려갈 수 있다면, 공부하고, 제품화 할 수 있다면, 짧은 시간 안에 전문가가 될 수 있다는 뜻일 것이다. 우물은 깊지만, 사다리가 없으니, 뛰어내려야 하고, 그렇게 되면 우물의 깊은 곳에 있는 사람들과 빠르게 조우할 수 있다. (하지만 역시 뛰어내리는 건 무섭다)

Cutting edge라는 말이 있다. 최첨단이라는 말인데 (동일한 말로 나에겐 다가오는데 두 단어가 독립적으로 파생된 말이라면 꽤나 신기한 현상이다), 최첨단이라는 건 말 그대로, 끝이라는 뜻이다. 그 날카로운 끝 너머에는 아무것도 없고, 또 그렇게 생각하면, 이 모든 것들을 스스로 물어물어 해보면서 터득하는 것에 대해서 마음이 한결 가벼워지는 것도 사실이다.

끝으로, 첫 부분에 언급했던 Mozila의 Stephen Hood의 글 “While these (ChatGPT’s) interfaces may look simple on the surface, that’s more a tribute to good design than evidence of a simple problem space. “라는 말이 있다.

ChatGPT의 단순한 인터페이스는 단순한 제품이기 때문에 간결한 것이 아니라, 사용자가 혼란스럽지 않고 이해하기 쉽게 바로 쓸 수 있는 좋은 디자인을 치열하게 고민했기 때문일 것이라는 말이다. 나도 더 없이 동의하고, 결국 LLM 기반에 한 차원 더 수준 높은 챗봇도 수 많은 고민을 거쳐 정말 단순하고 간결한 형태로 구현되지 않을까 한다. 그리고 당연하게도 그런 제품을 내가 만들 수 있기를 바란다.




Leave a comment