WhatsApp이나 Discord 같은 그룹 채팅을 상상해 보세요. 다만 인간은 메시지를 보낼 수 없고, AI 모델들만 할 수 있습니다. 이들은 서로에게 말을 걸고, 괴롭히고(bully), 놀리고(roast), 상대방의 메시지에 반응합니다.
이것이 제 아이디어였고, 정말 재미있게 구현되었습니다.
어떻게 만들었는지, 그리고 이것을 훨씬 더 재미있게 만든 한 가지 트릭까지 공개하겠습니다. 바로 모든 모델에게 고유한 목소리를 부여한 것입니다.
📦 소스 코드: github.com/0shuvo0/AI-Group-Chat
아이디어
여러 AI 모델을 공유 채팅방에 추가할 수 있는 맞춤형 앱입니다. 모델들이 들어오면, 다른 모델들이 작성한 내용을 읽고 스스로 응답합니다. 저는 그저 앉아서 지켜보기만 하면 됩니다.
가장 먼저 해결해야 할 문제는 어떻게 이 모델들을 앱에 넣느냐는 것입니다.
문제 1: 너무 많은 API
chatgpt.com에 접속해서 메시지를 수동으로 붙여넣고 싶지 않습니다. 제 앱이 모델에게 질문을 보내면, 프로그램적으로 답변을 받아오게 하고 싶습니다. 이것이 바로 API의 용도입니다. Gemini, Claude, Grok, 그리고 ChatGPT 모두 자신들만의 API를 가지고 있습니다.
문제는 이렇습니다. 저는 많은 수의 모델을 원했고, API 접근은 유료입니다. 다섯 개의 모델을 사용하려면 다음과 같은 것이 필요했습니다:
- 다섯 개의 개별 계정,
- 다섯 개의 개별 결제 설정,
- 관리해야 할 다섯 개의 API 키,
- 비록 토큰을 거의 사용하지 않더라도 각각 최소 충전 금액.
이것은 복잡하고 비용 효율적이지 않습니다.
해결책: OpenRouter
OpenRouter는 단일 API를 통해 방대한 모델 카탈로그에 접근할 수 있게 해줍니다. 한 계정에 크레딧을 추가하면, 원하는 어떤 모델이든 사용할 수 있고, 사용한 모델별로 청구됩니다.
그 결과는 하나의 서비스, 하나의 API 키, 하나의 잔액입니다. 모델을 교체하거나 추가하는 것은 단순히 모델 이름만 변경하면 됩니다.
문제 2: 실제로 대화하게 만들기
방치된 상태로는 모델들이 자신이 원하는 것에 대해 신나게 잡담할 뿐이며, 이는 거의 재미있지 않습니다. 그래서 저는 테마를 추가했습니다. 앱을 열 때 채팅에 주제를 부여할 수 있고, 모델들은 그 주제를 중심으로 이야기를 나눕니다.
각 모델에게 다음과 같은 프롬프트가 주어집니다:
const prompt = You are ${ai} ai, chatting in a group chat with these AIs ${others.join(', ')}. Talk the way people do in a casual group chat. ...
몇 가지 세부 사항이 이것을 잘 작동하게 만듭니다:
- 역할 명확화 (Role clarity). 각 모델에게 그룹 채팅에 참여하고 있으며 누가 다른 참가자인지 알려줍니다.
- 엄격한 형식 규칙 (Strict format rules). 짧은 메시지, 마크다운 금지, 이름 라벨 금지. 이것들이 없으면 모델들은 에세이를 쓰거나 다른 참가자들을 위한 대본을 작성합니다.
- 공유 기록 (Shared history). 이전 메시지는
<chat> 블록에 전달되어 답글이 실제로 무슨 말을 했는지에 응답하게 합니다.
- 탈출구 (An escape hatch). 모델들은 추가할 것이 없을 경우
<SKIP>에 답변할 수 있으며, 이는 대화가 억지스럽게 느껴지는 것을 방지합니다.
- 개성 (Personality). 캐주얼하고 이모지 친화적인 어조 지침이 채팅의 분위기를 만듭니다.
앱 자체는 구축하기가 간단했습니다. 저는 Claude에게 제가 원하는 바를 설명했고, 몇 가지 프롬프트만 거치자 작동하는 버전을 갖게 되었습니다.
문제 3: 읽기에는 너무 빠르다 (It's too fast to read)
앱은 작동했고 보기 좋았지만, 기대했던 만큼 재미있지는 않았습니다. 메시지가 너무 빨리 도착해서 모두 읽는 것이 숙제처럼 느껴집니다.
그래서 저는 모델들에게 목소리를 입혔습니다.
해결책: Kokoro.js
텍스트-음성 변환(Text-to-speech)을 위해 8,200만 개의 매개변수만을 가진 오픈 모델인 **Kokoro**를 사용했습니다. 크기는 약 300MB입니다. 이 정도면 브라우저에서 직접 실행하기에 충분히 작아서, 추가 서버 호출이나 문자당 비용이 들지 않고 빠릅니다.
저는 그 자바스크립트 라이브러리인 kokoro-js를 사용했고, 이를 웹 앱에 연결했습니다. 들어오는 모든 AI 메시지는 로컬에서 오디오로 변환되어 재생됩니다. 이제 모델들은 단순히 타이핑만 하는 것이 아니라, 말합니다.
최종 결과
몇 안 되는 AI들이 큰 소리로 다투고, 농담하고, 서로를 놀리는 것을 지켜보는 것은 이상하게 재미있습니다.
Chat demo
기술 스택 요약
여러 AI 모델을 하나의 API로 사용하기는 OpenRouter를 이용하세요.
직접 시도해보기
전체 코드는 GitHub에 있습니다: 0shuvo0/AI-Group-Chat. 클론하고, OpenRouter 키를 추가한 다음, 테마를 선택하여 모델들을 마음껏 작동시켜 보세요.
git 사용에 어려움을 겪으시나요?
GitMission.com에서 게임을 하고 미션을 해결하며 git을 배워보세요.
GitMission Preview