Character.ai는 ChatGPT다음으로 유명한 AI 서비스에요. 내가 좋아하는 캐릭터와 대화할 수 있는 서비스죠. Character.ai는 120명정도의 큰 조직으로 이루어졌어요. 하지만 오늘날에는 기술의 발전으로 소수의 인원으로도 비슷하게 따라할 수 있게 되었어요.
오늘은 제가 작업한 결과물을 바탕으로 어떻게 Character.ai를 클론했는지 공유드릴게요.
AI 서비스 만들기 문의 👉🏻 ryu071511@gmail.com
🔥 이런 분들이 읽으시면 좋아요!
노코드로 어느정도 서비스를 만들 수 있을지 궁금하신분
노코드 도입을 고민하는 개발자
낮은 비용으로 AI 서비스를 만들고 싶은 창업자
🖊️ 요약
Character.ai: AI 서비스중 활성유저가 많은 서비스
Prompthon 소개: prompt + hackathon
기술스택 공개: Flutterflow, ChatGPT, Python FastAPI, Fly
개발 회고
Thanks to 사라님: 디자이너
비즈니스 문의
Character.ai: 4백만 MAU AI 서비스
Character.ai는 가상의 캐릭터 챗봇을 만들 수 있는 서비스에요. 인물, 만화, 애니메이션 등 다양한 영역의 도메인의 캐릭터를 만들고 대화할 수 있어요. Character.ai는 ChatGPT 다음으로 큰 AI 서비스에요. 무려 4백만 MAU를 기록하고 있어요.
위의 그래프는 월별 방문횟수를 보여주고 있어요. Character.ai가 ChatGPT보다 MAU는 낮지만 방문횟수는 높은 모습을 보여주고 있어요. 그만큼 활발하게 이용되는 서비스로 볼 수 있어요.
Character.ai는 Noam Shazeer와 Daniel De Freitas가 공동 설립했으며, 두 사람 모두 Google의 전직 엔지니어들이에요. 2021년 11월에 설립된 이 회사는 사용자들이 실제 및 가상 캐릭터와 상호작용할 수 있는 고급 챗봇 기술을 개발하는 데 중점을 두고 있어요. CEO인 Shazeer는 Transformer 아키텍처 개발에 중요한 기여를 한 것으로 알려져 있으며, 이는 OpenAI의 ChatGPT를 포함한 많은 현대 AI 시스템의 기본 기술이에요.
하지만, Noam Shazeer와 Daniel De Freitas, Character.AI의 공동 설립자들이 Google로 돌아가 DeepMind 연구팀에 합류해요. Google로 돌아가기로 한 결정은 많은 사전 학습된 모델들이 이제 사용 가능해짐에 따라 Character.AI가 자사의 모델과 함께 타사 모델을 활용할 수 있게 된 AI 환경의 변화에 영향을 받았다고 해요.
프롬프톤: 프롬프트 + 해커톤
프롬프톤은 베리챗이라는 채팅플랫폼에서 사용할만한 챗봇을 만드는 프롬프트 엔지니어링 대회에요. Character.ai처럼 여러가지 캐릭터를 만들어서 유저가 재밌있게 사용할 수 있는 챗봇을 만드는 것이 목표에요.
프롬프톤을 만들기 위해서 Character.ai의 많은 부분을 차용했어요. Character.ai와 유사한 UX로 즐길 수 있는 프롬프톤을 만들었어요.
기술스택 공개
프롬프톤은 디자인을 제외하고는 저 혼자서 개발했어요. 프론트엔드부터 백엔드 그리고 데이터베이스 스키마 등 여러가지 작업을 해야했어요. 이런 모든 작업을 정해진 기간내에 끝내기 위해서 밑바닥부터 작업하는 방법대신에 거인의 어깨위에 올라타는 방법을 선택했어요.
[ChatGPT-4o-mini]
ChatGPT-4o-mini 모델을 사용했어요. 이 모델은 Openai에서 공급하는 모델로 저렴한 비용으로 다른 모델에 비해서 가격경쟁력이 있는 모델이에요. ChatGPT-4o에 비하면 성능이 떨어지지만 가격이 약 30배이상 저렴해요. AI 서비스를 할때 중요한 고려사항중 하나가 비용인데 저비용으로 고성능의 AI를 사용할 수 있게된 것이에요.
[Assistant API]
Assistant API는 Openai에서 제공하는 기능이에요. 채팅 서비스를 개발하기 위해서는 대화 히스토리를 관리하는 기능을 개발해야해요. ChatGPT를 생각해볼게요.
유저가 "오늘 어땠어?"라는 프롬프트에 ChatGPT는 "How was your today?"라고 답했어요. 이는 ChatGPT가 "이제부터 나의 말을 번역해줘"라는 히스토리를 알고 있기 때문이에요.
이를 개발하기 위해서는 대화내용을 저장할 데이터베이스, 서버의 로직 등 여러가지 작업들이 필요해요. 하지만 Assistant API를 활용하면 이를 자동으로 처리해줘서 개발과정을 단축할 수 있어요.
[Flutterflow]
그리고 프론트엔드의 경우 시간 단축을 위해서 Flutterflow(노코드)를 사용했어요. 제한된 시간에 빠르게 프론트엔드 작업을 마칠 수 있었어요. 그리고 Fltterflow의 경우에는 개발자친화적인 도구이기 때문에 상당히 세세한 조정도 가능했어요. Flutterflow는 GUI를 통해서 블록코딩하듯이 앱/웹을 만들수 있어요. 그리고 이것이 코드로 변경돼요.
Flutterflow로 다양한 것을 구현할 수 있었어요. 특히 아래 이미지와 같이 채팅창을 구현하는데 노코드라서 불편한 점은 크게 없었어요.
Flutterflow로 개발하면서 이런 점은 좋았어요.
1. GUI에 화면이 시각화되서 디자인을 빠르게 구현할 수 있었어요.
2. API 연동을 지원해서 유연하게 적용할 수 있었어요.
3. 미리 개발된 디자인 위젯을 활용하기 편했어요.
(개발자로서) Flutterflow로 개발하면서 이런점은 아쉬웠어요.
1. Background Action을 제공하지 않아요. Background Action은 사용자의 요청이 없더라도 자동으로 동작하는 Action이에요.
2. 디버깅할 때 로그를 직접 볼 수 없어서 불편했어요.
개발 회고
엔지니어링 조직은 좋은 도구로 대체될 수 있다.
Character.ai는 약 120명정도 규모의 조직이에요. 이번 프로젝트가 Character.ai 만큼의 완성도는 아니지만 개발자 한명이서 꽤 비슷한 UX로 만들 수 있었어요. 앞으로는 개발자 한명의 역할이 점점 커질 것 같다고 느꼈어요.
항상 하는 말이지만 기술이 빠르게 발전하고 있어요. 예전에는 비용때문에 불가능했던 것이 점점 가능해지고 있어요. 불과 몇년 전만 하더라도 ChatGPT 수준의 챗봇을 만드는 것은 정말 힘든일이었지만 이제는 누구나 GPTs로 10분만에 만들 수 있게되었어요.
더 깊게 가기 위해서는 엔지니어링 조직은 여전히 필요하다.
완성도를 점점 높여갈수록 엔지니어링 요구사항은 복잡해져요. 그리고 이것들은 다른 도구들을 사용하는 것들을 넘어서 더 깊은 레벨의 분석과 고민이 필요해요. Character.ai를 클론했다고 했지만 혼자서 Character.ai만큼의 완성도를 만드는 것은 불가능할 것이라고 생각해요.
노코드는 좋은 선택일 수 있다.
서비스를 개발할때 노코드 도입은 좋은 선택일 수 있어요. 비교적 복잡하지 않은 요구사항, 전형적인 틀을 가지고 있는 서비스들은 노코드는 좋은 선택일 수 있어요. 하지만, 엔지니어링 요구사항이 일반적이지 않고 복잡한 로직이 많을 수록 노코드보다는 코드가 좋은 선택일 것 같아요.
노코드는 고도화하기 힘들다.
노코드는 많이 사용되는 패턴을 쉽게 만들 수 있도록 만든 도구라고 볼 수 있어요. 일반적인 사항은 빨리 만들 수 있지만 고도화 요구사항에 대해서는 충분하지 않을 수 있어요. 이런 경우에는 노코드에서 코드로 전환하는 결단이 필요할 것 같아요.
Thanks to 사라님
서비스를 만들때 중요한 지점 중 하나는 디자인이에요. Character.AI 디자인을 참고했지만 프롬프톤에 맞는 디자인 작업이 필요했어요. 이 부분은 베리챗의 디자이너 사라님께서 수고해주셨어요.
프론트엔드 전문이 아니라서 여러가지 부족한 점이 있었는데 그때마다 좋은 QA 피드백을 주셔서 지금의 프로젝트 모습을 갖출 수 있었어요. 피드백은 항상 중요한 것 같아요.
다음 프로젝트는...
이번 프로젝트를 통해서 노코드로 서비스를 만들 수 있다고 보여드리고 싶었어요.
하지만 다음 프로젝트는 Flutter로 직접 코딩하고 있어요. Flutter로 코딩하는 이유는 노코드 경험과 코드 경험을 골고루 갖추기 위해서에요. 이 프로젝트도 완성되면 공유드릴게요!
비즈니스 문의
비즈니스 문의는 아래 이메일로 주세요.
AI 서비스 만들기 문의 👉🏻 ryu071511@gmail.com
댓글
의견을 남겨주세요