[개발바보]챗봇 프로젝트를 하면서 알게 된 사실들
프로젝트에 치여 오랜만에 글을 올립니다. 원본글은 다음에 있습니다.
최근 급하게 프로젝트에 두달간 투입이 되면서 블로그 포스팅을 할 여유가 전혀 없었다.
좀 반성하는 차에 진행한 프로젝트에서 얻은 인사이트를 공유하고자 한다.
1. 챗봇을 위한 디자인 원칙들이 속속 나오고 있다.
어떤 절대적인 가이드라인은 사실 없기 때문에 마음대로 만들 수는 있고 마음대로 기획할 수는 있지만 많은 경우에 지금 활용할 수 있는 가이드라인들은 존재한다. 이른바 먼저 가본 사람들이 적어 놓은 가이드 라인들이 있다.
여기 가장 유명한 두개의 가이드라인만 소개를 할까 한다.
- 궁극가이드 - 9가지 원칙이라고 국내에는 알려져 있는…
- 사용자에게 거짓말하지 않는다 (봇이라고 알려라!)
- 대화를 유도하라
- 사용자의 감성을 고려해 디자인한다
- 대화에 제한을 두지 않는다(지속적으로 개선하라!)
- 경계를 만든다 (사람들이 몰입할 수 있는 경계를 쳐 주라)
- 사람들을 실망시킬 때는 조심하라
- 모든 인터랙션은 의미가 있다.(사용자가 이탈하는 부분을 정확히 트래킹하라)
- 사용자를 잘 도와줘야 시스템이 도움을 받는다.
- 사용자의 감정을 확인하고 감정을 목표점으로 한다.
- 디자인 8원칙
- 인간인 척 하지 말기
- 단순함을 극도로 유지하기
- 채팅이라는 표현수단 이해하기
- 최종 사용자에게 맞추기
- 간단하게 응답하기
- 봇으로 안될 경우를 대비할 것
- 가능하면 구조적인 입력을 만들것
- 모두가 같은 것을 볼 것 (응답이 제각각이지 않을 것)
이 중에서 가장 첫번째 원칙인 인간인척 하지 않는 것(봇이라고 알려라). -사용자에게 사람인척 하지 않는 것- 이 다른 무엇보다 중요하다.
사용자는 챗봇이라고 생각할 때와 사람이라고 생각할 때에 다르게 행동(입력)하고 기대하는 바도 매우 다르기 때문이다.
그래서 사람이 아닌 챗봇이라고 생각하는 사용자를 위해서 버튼을 입력 도구로 활용한다 거나 또 다른 유용한 인터페이스를 활용한 소프트웨어 디자인을 하는 것은 무척이나 중요하다.
2. 인공지능에 대한 이해 보다 중요한 게 있다.
앞서 기술한 디자인 원칙에서 보았듯이 가장 중요한 원칙은 사람에 대한 이해다.
사용자가 어떻게 챗봇을 이해하는 지와 사용할 지를 이해하지 못하면 서비스의 방향을 못찾고 방황하기 마련이다. 그런 의미에서 아직까지 나온 챗봇 서비스들의 인공지능과 사람간의 인터페이스는 투박하게만 보인다.
사용자가 어떻게 챗봇을 쓸 것인지를 정의하려면 내가 만들고 있는 제품이 어떤 것인지를 명확하게 정의해야 하는 것이 첫번째고 어떤 pain point가 있어서 구체적으로 어떤 기능을 챗봇으로 대체 하려는 지를 기획자 혹은 개발자 스스로가 알고 있어야 한다.
기존의 어떤 무언가를 대체하지 않고 새로운 시장을 창조하려는 경우도 그게 왜 필요하고 사용자에게 어떻게 전달되어 질 지를 모르면 제대로 된 제품을 만들 수는 없을 것은 자명한 일이다.
3. 챗봇에 대한 기대는 굉장히 천차 만별이다.
사용자들과 인터뷰를 진행 하다보면 정작 사용자들은 챗봇에게 큰 기대를 하지 않는다. 마치 우리가 시리와 빅스비에게 심드렁한 것 처럼. 하지만 기획단계에서의 기획자와 발안자들은 굉장히 많은 기대를 가지고 프로젝트에 접근한다.( 이런 간극은 어떻게 존재하는 걸까. )
심지어 챗봇을 위한 디자인 원칙들을 읽어 보지도 않고 말이다. 챗봇들이 무엇인가 세상을 바꿀 것 처럼 굉장히 멋진 장표들과 아키텍처들을 보고 있지만 정작 이것이 어떤 문제를 해결할 지 알고 있는 사람은 없다.
개발을 진행하면서 챗봇 프로젝트들을 바라보든 사람들의 시각과 시장의 수요는 굉장히 많은 분야의 광범위한 인력 감축을 전제로 하기도 하고 챗봇이 모든 것을 해결해 줄 것 같은 분위기와 어쩌면 그런 미래가 바로 우리 앞에 닥쳐 있다는 사실을 부정할 수는 없다. 하지만 장표에 그려진 무지개 빛 청사진 또한 기술적으로 동의할 수는 없어 보인다. 그래서 항당 무게한 요구사항들을 사용자 인터뷰와 가이드라인을 기준으로 다 잘라내고 있는 것이 현실이다. 하지만 잘라도 잘라도 프로젝트는 가벼워지지 않고 프로젝트의 미래를 좌우하는 의사 결정자들 마저도 이상한 기대감을 가지고 있다는 사실은 어떻게 보면 슬픈 일이다.
페이스북과 같이 작업을 했던 스카이 스캐너 분야의 챗봇 담당자는 이렇게 이야기 한다
아무도 챗봇으로 티켓을 사려고 하지는 않아요.
4. 개발의 대부분은 인공지능과 관련이 없다.
우리는 구글이 아니다.
이걸 인정하면 마음은 굉장히 편해지지만 대부분의 어른들(?)은 그걸 인정하기가 아들 딸 성적표를 받아들이기 보다 어려운 모양이다.
하지만 어쩌면 우리에게도 희망은 있다. 챗봇의 아키텍처에서 인공지능이 차지하는 부분은 우리가 기대하는 부분보다 굉장히 작다. 오히려 룰을 어떻게 만들고 어떻게 처리할 것인가 하는 부분이 훨씬 중요한 문제로 다가오게 된다.
5. 개발자는 그래서 또 너무나 중요하다.
위의 주제의 연속이다. 챗봇의 대부분은 소프트웨어 엔지니어의 영역이다. 그래서 챗봇 엔진을 잘 만들기 위해서는 좋은 엔지니어와 좋은 아키텍트가 당연히 필요하다. 물론 NLU라던지 딥러닝을 잘 하면 할 수록 더욱 좋다. 하지만 좋은 개발만큼 중요한 부분은 없다.
좋은 개발자는 여러가지 복잡하게 얽혀있는 챗봇의 어려움들을 풀어줄 시작과 마지막이다. 점점 인공지능의 세상이 오면 올 수록 사용자의 입장에서 이해하는 개발자가 더 중요해 질 것이다. 능숙하고 영민한 개발자를 잘 찾아서 서비스의 전방에 배치하는 것이 인공지능 전문가를 구하는 것보다 ROI가 훨씬 높다.
6. 우리는 기존의 레거시를 대체해야 한다.
언제나 챗봇이 있는 곳에는 상담이라던지, 견적같은 - 모든 챗봇이 풀고자 하는 문제들- 에는 기존의 시스템이 유령처럼 자리잡고 있다. 그럼 이 레거시들을 어떻게 유기적으로 풀고 어떻게 서비스를 대체할 수 있을까? 마이크로 서비스 아키텍처는 그 중의 좋은 대답이 될 수 있다. 하지만 이것이 만병통치약은 아니다. 가장 중요한 것은 기존 레거시 함수를 묶어주는 표준을 만들어 주는 것이고 그 레거시를 어떻게 접근할지에 대한 해답은 챗봇이 가지고 있어야 한다. 이런 부분에서는 기존 레거시를 잘 알고 있는 개발자는 도움이 된다.
그렇다면 사용자의 자연어와 레거시간의 연계는 어떻게 이루어 질 것인가. 여기에 기존에 없던 인공지능 분야의 기술이 필요하다.
7. 하지만 과소 평가해서도 곤란하다.
이 쪽은 지속적으로 계속 발전할 것이다. 그렇다는 것은 지금 발을 들이기에 무척이나 좋은 시기라는 것이다.
아무래도 발전에 대한 틀은 대부분이 갖춰지는 것 같다.
누군가가 기가막힌 사용자 인터페이스를 제시할 것이고 그 때 쯤이면 아직까지는 기대할 것 없는 챗봇 분야의 인공지능도 수준이 많이 올라갈 것이다.
언제나 관심을 기울이고 있어야 한다는 이야기다.
마지막으로 그렇다면, 어떻게 준비할 것인가
일단 개발자들은 하던 일들을 열심히 하면서 인공지능에 대한 트렌드는 지속적으로 팔로우업 해야한다.
어렵지만 생존을 위한 일이라면 해볼 만한 일이다. 그리고 생각보다 재미 있는 분야다.
구글이 모바일 퍼스트에서 드디어 AI퍼스트를 선언한 지금 우리가 맞이할 미래는 모바일이 인터페이스였던 시대를 인공지능이 대체할 것이고 이 인터페이스는 IoT와 맞물려 우리 주위 어디에서든지 우리에게 시도 때도 없이 간섭을 시작할 것이다.
가장 처음 이야기 했던 사람의 이해 - 사람을 이해하는 것은 다시 한번 개발자들에게는 중요한 화두로 던져질 것이라는 데 나의 향후 행보를 던져본다.