2023년 8월에 나는 A.I.로 작업해 보고 싶은 세 가지 핵심 주제를 정리했다. 멀티모달리티, 오픈소스, 생성형 에이전트였다. “이야기의 소리” 데모는 그중 한 예다. 사용자에게 맞춰 변하는, 양방향의 서사 기반 스토리텔링 경험을 이중언어로, 그것도 너무나 익숙한 인터페이스인 WhatsApp 위에서 어떻게 제공할 수 있는지 보여 주려 했다. 사용자 음성 입력을 북소리로 바꾸는 실험과 이미지 표지 생성도 해 봤지만, 아직 라이브 환경에는 올리지 않았다. 이건 Meta AI가 나오기 전 일이었다. 인터페이스가 Streamlit -> Chainlit -> WhatsApp으로 바뀐 과정을 보면, 마지막 선택은 한편으로는 사람들이 다른 선택지 앞에서 얼마나 헤매는지 본 결과였고, 다른 한편으로는 그냥 내 게으름의 산물이었다.
내가 염두에 둔 설계 제약은 이랬다.
-
이야기는 “북을 든 소년”이어야 했다. 길에서 여러 사람을 만나고, 매번 물건을 주고받으며, 전체 서사는 이 구조를 따라야 했다.
-
그러면서 시장 이름이나 주고받는 음식 같은 요소는 현지화해야 했다.
-
그리고 적절한 지점에서는 늘 사용자 입력을 끌어내며 참여를 유도해야 했다.
-
시작과 끝도 그럴듯해야 했다.
-
말도 안 되는 사용자 응답도 논리적으로 처리해야 했다. 예컨대 사용자가 Ray-ban Meta 안경을 팔자고 제안했을 때처럼.
데모: 이야기의 소리
The Performing Arts x Tech Lab은 2023년 8월에 시작했다. 초반에는 매 턴마다 알맞은 이야기 조각만 생성되게 하고, 사용자 응답을 다음 이야기 조각 생성에 반영하고, 동시에 일정한 턴 수 안에 이야기를 끝내기 위해 프롬프트 엔지니어링과 온갖 해킹을 많이 넣었다. 말도 안 되는 사용자 입력에는 꽤 약한 방식이라 최선은 아니었다. 다행히, 더 똑똑해지면 다 해결된다.
A.I.의 발전사를 한 줄로 말하면 이렇다. 모델은 더 똑똑하고, 더 싸고, 더 빨라질 테니 우리는 미래 쪽에서 출발해야 한다. 사실 이미 그렇게 됐다. 이 프로젝트에서 나는 GPT-4와 Kimi를 “해고”했고, 3월 19일 Hugh의 추천을 듣고 조금 써 본 뒤 말 그대로 Claude 3 Opus로 갈아탔다. 최종 공개 데모는 4월 5일이었다.
참고: 오디오 생성은 최적화되어 있지 않아서 데모에서 완료되고 재생되기까지 약 15초가 걸린다. 이런 지연은 아래에서 읽을 수 있는 전화 통화 버전에서는 해결했다.
이 프로젝트가 왜 중요한가?
스토리텔링 관점에서 보면 이것은 현대판 선택형 모험 이야기다. 늘 꽤 재미있는 형식이다. 여기서 얻은 배움은 롤플레잉 게임을 다시 상상하는 데도 적용할 수 있다. 이중언어라는 성격은, 사실 다국어가 되지 못할 이유도 없지만, 새로운 관객에게 닿을 수 있는 접근성과 범위를 넓힌다. The Esplanade에서 공개 발표를 했을 때 나를 헷갈리게 한 질문이 하나 있었다. 더 많은 이야기를 처리하려면 얼마나 걸리느냐는 질문이었다. 이제 와서 보니 내가 그 질문을 잘 이해하지 못했던 것 같다. 만든 사람인 나는 이걸 완전히 처음 보는 사람의 관점에서 보지 못했으니까. 짧게 답하면, 원하는 만큼 많은 이야기로 확장하는 데 몇 초면 충분하고, 어쩌면 밀리초 단위일 수도 있다. 사람들이 놓치고 있는 맥락은 이것이다. 대규모 언어 모델(LLMs)은 이미 너무 강력해져서, 사전학습 데이터로 빨아들인 만큼의 문화 지식은 적어도 내부에 품고 있다. 다시 말해, 사용자의 프로필에 맞춰 장소와 물건을 바꿀 수 있다. 데모에서 자신이 한국 출신이라고 한 사용자의 이야기 속 엄마가 동대문시장에 가는 식이다. A.I.가 당신만의 맥락이나 어휘를 이해하지 못한다는 말은 착각이다. 실제로는 할 수 있다. 보통 이 문제를 짧게 말하면, 많은 조직이 그런 데이터를 디지털화해 두지 않았거나 자기 데이터셋을 최적화할 역량이 부족하다는 쪽에 가깝다.
아키텍처 관점에서도 나는 이것을 본다. 어떤 코퍼스 안으로 범위를 제한하고, 사용자 입력을 받아, 그 입력을 바탕으로 응답을 생성한다는 이 일반적인 발상은 사실 “디자인 패턴”에 가깝다. 면접 준비 봇부터 고객 지원 에이전트까지 꽤 넓은 사용 사례에 적용할 수 있다.
라이브 데모와 전시 기간 동안 관객은 내가 마련한 전화번호(그렇다, 말 그대로 전화번호다)로 전화를 걸 수도 있었다. A.I. Kamini와 통화하면서 전화로 이야기를 들을 수 있었다. 텍스트 채팅과 비슷한 경험이지만 오직 음성의 영역 안에 있다는 점이 다르다. 그리고 최적화 덕분에 음성 출력 스트리밍은 실제로 훨씬 낫다. 시스템의 지능은 Claude 3 Opus보다 낮지만, 느낌만큼은 진짜 전화 통화에 가깝다.
다음은?
나는 중국에 나가 있는 동안 이것을 GCP에 배포했다. 대체로 의도한 일을 해낸 것 같다. 버그 수정이 필요하지는 않았고, 있던 문제나 한계는 이미 알고 있던 것들이었다. 작업하지 않은 이유는, 음, 시간? 그래서 Lab 이후 손볼 만한 지점은 몇 가지 있다. 오디오 응답 스트리밍에 WebSockets를 써서 속도를 높이는 것, 그리고 사용자 응답이 문자열 하나로만 온다고 가정하지 말고 여러 입력을 처리하는 것. 이것들은 백로그에 올려 둘 생각이다. 그와 별개로, Elevenlabs보다 나은 것을 제시할 사람이 있다면 더 나은 중국어(만다린) 음성 복제 기술을 간절히 기다리고 있다.
이제 동작하는 코드베이스가 생겼으니, 생성형 에이전트를 배포하고 서비스하고 싶다. 적절한 지점에서 LLMs를 제대로 써서 워크플로를 자동화하고 싶다. 그래서 이 파이프라인의 출력이 어떤 행동, 곧 세계의 상태 변화를 만들어 내게 하고 싶다. 내 영상에 대해 자동 전사, 번역, 자막 생성을 거쳐 업로드까지 이어지는 단순한 형태일 수도 있다. 더 정교하게는, 어떤 비정형 데이터를 던져 주면 알맞은 스키마를 판단하고 비정형 데이터에서 구조화된 데이터를 뽑아내는 에이전트일 수도 있다. 이 후자의 에이전트는 현장 녹음에서 데이터를 추출하려는 연구자, 소장품 데이터를 풍부하게 만들고 그 망할 과정을 통째로 자동화하고 싶은 GLAM 기관들, 즉 이미지에 풍부한 임베딩만 만드는 것이 아니라 영상, 편지 등에 대한 전사문, 텍스트, 관련 메타데이터까지 생성하고 싶은 기관들, 그리고 내가 작업해야 한다고 되어 있는 시험 및 면접 준비 봇에도 유용할 것 같다.
우리는 소프트웨어를 어떻게 만들 것인지, A.I. 네이티브 경험이 얼마나 강력해질 수 있는지를 다시 생각하는 일에서 아직 극도로 이른 단계에 있다. 얼마나 더 생산적일 수 있는지. 얼마나 확장 가능하고, 얼마나 겹겹이 쌓아 올릴 수 있는지. API를 통해 다른 소프트웨어와 제대로 맞물리지 않는 솔루션을 쓰는 것은 범죄여야 한다. 정말, 정말 어쩔 수 없는 경우가 아니라면.
업데이트를 기다려 달라!
원래 PubPub의 erniesg.pubpub.org/pub/xlkdc79p에 게시했다.