
여러 브라우저 탭을 오가며 AI 모델을 비교하는 것에 지쳐서 AutarkChat을 만들었습니다
요약
여러 AI 모델을 동시에 비교하고 테스트할 수 있는 개발자용 워크스페이스 AutarkChat을 소개합니다. 단일 프롬프트를 여러 모델에 동시에 전송하여 응답 품질, 속도, 비용 등을 한눈에 비교할 수 있습니다.
핵심 포인트
- 여러 모델의 응답을 한 화면에서 나란히 비교 가능
- 모델별 스트리밍 속도 및 지연 시간(Latency) 확인 용이
- 프롬프트 복사-붙여넣기 번거로움을 해결한 워크플로우 개선
- 개발자 중심의 모델 평가 및 테스트 환경 제공
대부분의 AI 채팅 앱은 대화를 위해 만들어졌습니다.
실험을 위해 만들어진 앱을 원했습니다.
모델을 비교하고 싶을 때마다 저의 작업 흐름은 대략 다음과 같았습니다:
- ChatGPT 열기.
- Gemini 열기.
- DeepSeek를 위한 또 다른 탭 열기.
- 아마도 OpenRouter를 위한 또 다른 탭 열기.
- 각 탭에 동일한 프롬프트 (Prompt) 복사하기.
- 기다리기.
- 응답을 수동으로 비교하기.
- 어떤 모델이 토큰 (Tokens)을 적게 사용했는지, 혹은 더 빠르게 응답했는지 잊어버리기.
이 과정을 충분히 반복한 후, 문제는 모델이 아니라 작업 흐름 (Workflow)이라는 것이 분명해졌습니다.
그래서 저는 AutarkChat을 만들었습니다.

문제점
지난 1년 동안 AI 생태계는 폭발적으로 성장했습니다.
이제 우리는 수십 개의 제공업체를 통해 수백 개의 모델을 사용할 수 있습니다.
OpenAI.
Anthropic.
DeepSeek.
Gemini.
Mistral.
Groq.
OpenRouter.
Together AI.
Tencent.
각 모델은 서로 다른 강점, 비용, 지연 시간 (Latency), 그리고 출력 품질을 가지고 있습니다.
하지만 대부분의 채팅 애플리케이션은 여전히 사용자가 한 번에 하나의 모델하고만 대화할 것이라고 가정합니다.
개발자로서, 제가 원하는 것은 그런 경우가 거의 없습니다.
때때로 저는 다음과 같은 것들을 알고 싶습니다:
- 어떤 모델이 내 지시 사항을 가장 잘 따르는가?
- 어떤 모델이 가장 빠른가?
- 어떤 모델이 가장 저렴한가?
- 어떤 모델이 더 깔끔한 코드를 생성하는가?
- 어떤 모델이 토큰 (Tokens)을 가장 적게 낭비하는가?
이 질문들에 답하기 위해 6개의 브라우저 탭이 필요해서는 안 됩니다.
AutarkChat 만들기
AutarkChat은 단순한 또 다른 AI 래퍼 (Wrapper)가 아닙니다.
이것은 언어 모델 (Language Models)을 비교, 테스트 및 평가하는 데 중점을 둔 **개발자 워크스페이스 (Developer workspace)**입니다.
아이디어는 간단합니다:
"이 모델이 뭐라고 말했는가?"라고 묻는 대신, "이 모델들이 서로 비교했을 때 어떤 성능을 보였는가?"라고 묻는 것입니다.
이 작은 관점의 변화가 인터페이스 설계 방식을 완전히 바꿉니다.
나란히 비교하기 (Side-by-Side Comparison)
핵심 기능은 비교 워크스페이스입니다.
대화 사이를 전환하는 대신, 여러 모델을 선택하고 단일 프롬프트 (prompt)를 전송합니다.
각 모델은 독립적으로 스트리밍 (streaming)을 시작합니다.
어떤 모델도 다른 모델을 기다리지 않습니다.
특정 제공업체 (provider)가 더 느리더라도, 다른 모델들은 정상적으로 스트리밍을 계속합니다.
이 기능은 제가 예상했던 것보다 훨씬 더 유용했습니다.

탭을 끊임없이 전환하지 않고도 다음과 같은 차이점들을 즉시 알아차릴 수 있습니다:
- 추론 스타일 (reasoning style)
- 장황함 (verbosity)
- 포맷팅 (formatting)
- 환각 (hallucinations)
- 지시 이행 (instruction following)
- 응답 속도 (response speed)
스트리밍은 취약해서는 안 됩니다
다양한 제공업체 (providers)를 실험하며 깨달은 한 가지는, 스트리밍 (streaming) 실패가 예상보다 더 자주 발생한다는 점입니다.
때때로 다음과 같은 상황이 발생합니다:
- 제공업체 (provider)의 타임아웃 (timeout)
- 네트워크 연결 끊김
- 요청 (request) 취소
- 한 제공업체는 실패하지만 다른 제공업체는 성공함
많은 채팅 애플리케이션은 이러한 상황을 "모두 실패함"으로 처리합니다.
저는 그것을 원하지 않았습니다.
대신, AutarkChat은 모든 모델을 독립적으로 취급합니다.
두 모델은 성공적으로 완료되었는데 하나가 충돌(crash)하더라도,
성공한 응답들은 이미 저장되어 있습니다.
어떠한 데이터도 손실되지 않습니다.
만약 요청 (request)이 실패하면,
프롬프트 (prompt)가 자동으로 복구되어,
다시 작성할 필요가 없습니다.
사소한 디테일처럼 들릴 수도 있지만,
몇 주 동안 사용해 본 결과,
이제 이전 방식으로는 돌아갈 수 없을 것 같습니다.
여러 제공업체 지원
또 다른 목표는 유연성이었습니다.
애플리케이션이 단일 벤더 (vendor)에 종속되는 것을 원하지 않았습니다.

AutarkChat은 사용자 정의 OpenAI 호환 엔드포인트 (custom OpenAI-compatible endpoints) 설정을 지원하여, 다음과 같은 서비스들을 연결할 수 있습니다:
- OpenAI
- OpenRouter
- DeepSeek
- Mistral
- Together AI
- Groq
- Tencent
- 그리고 기타 호환 가능한 API들
제공자(provider)를 바꾼다고 해서 애플리케이션까지 바꿀 필요는 없습니다.
응답 그 이상의 지표 측정하기
프롬프트 (prompt)를 실험할 때, 품질은 전체 그림의 일부일 뿐입니다.
비용도 중요합니다.
지연 시간 (latency)도 중요합니다.
토큰 (token) 사용량도 중요합니다.
그렇기 때문에 모든 응답에는 인터페이스 내에 토큰 정보가 직접 포함되어 있습니다.
나중에 대시보드를 열어보는 대신, 다음과 같은 항목들을 즉시 비교할 수 있습니다:
- 프롬프트 토큰 (Prompt tokens)
- 완료 토큰 (Completion tokens)
- 총 토큰 (Total tokens)

이를 통해 모델 간의 트레이드오프 (trade-offs)를 훨씬 더 쉽게 이해할 수 있습니다.
개인화 (Personalization)
대부분의 사람들은 새로운 대화에서 동일한 컨텍스트 (context)를 반복해서 입력합니다.
예를 들어:
- 자신이 누구인지
- 어떤 일을 하는지
- 선호하는 프로그래밍 언어
- 글쓰기 스타일
AutarkChat을 사용하면 재사용 가능한 프로필과 전역 지침 (global instructions)을 생성할 수 있습니다.
모든 대화에는 해당 컨텍스트가 자동으로 포함되어, 반복적인 프롬프트 설정 과정을 없애줍니다.
기술 스택 (Tech Stack)
AutarkChat은 다음과 사용하여 구축되었습니다:
- Next.js 15
- TypeScript
- MongoDB
- Tailwind CSS
- Framer Motion
목표는 여러 개의 동시 스트림 (concurrent streams)이 진행되는 동안에도 인터페이스의 반응성을 유지하면서 기술 스택을 현대적으로 유지하는 것이었습니다.
개발 과정에서의 도전 과제들
UI를 구축하는 것이 실제로 가장 어려운 부분은 아니었습니다.
흥미로운 엔지니어링 문제들은 다음과 같은 것들이었습니다:
- 여러 개의 스트리밍 응답 (streaming responses) 동기화
- 완료된 생성물 (generations)의 안전한 영속화 (persisting)
- 하나의 제공자 (provider) 오류가 다른 제공자에게 영향을 미치지 않도록 방지
- 중단된 요청 (requests) 복구
- 하나의 일관된 인터페이스 뒤에서 서로 다른 제공자의 기능 관리
이러한 세부 사항들은 즉시 눈에 보이지 않지만, 애플리케이션이 신뢰할 수 있게 느껴지도록 만드는 요소들입니다.
향후 계획
이것은 시작일 뿐입니다.
제가 탐색 중인 몇 가지 아이디어는 다음과 같습니다:
- 대화 분기 (conversation branching)
- 더 나은 프롬프트 히스토리 (prompt history)
- 벤치마크 워크플로우 (benchmark workflows)
- 재사용 가능한 프롬프트 컬렉션 (reusable prompt collections)
- 모델 능력 탐지 (model capability detection)
- 더 풍부한 분석 (richer analytics)
- 추가적인 제공자 통합 (additional provider integrations)
목표는 또 다른 챗봇 (chatbot)이 되는 것이 아닙니다.
목표는 개발자들이 여러 LLM (Large Language Models)을 다룰 때 실제로 사용하기 즐거운 워크스페이스 (workspace)를 구축하는 것입니다.
직접 체험해 보세요
만약 당신이 정기적으로 AI 모델을 비교하는 사람이라면, 당신의 의견을 듣고 싶습니다.
⭐ GitHub:
https://github.com/unreadlogs/AutarkChat
피드백, 이슈 (issues), 기능 요청 (feature requests), 그리고 기여 (contributions)는 언제나 환영합니다.
읽어주셔서 감사합니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기