AI

중앙 교환기를 세워라 — 당근이 AI 난립을 하나의 플랫폼으로 정돈한 전략

'AI 활용에 가장 앞선 당근' 비전 아래 여러 제품 팀이 AI를 더 잘 활용할 수 있도록 구축한 GenAI 플랫폼.

10 min read
당근GenAILLM GatewayPrompt StudioAI 플랫폼
중앙 교환기를 세워라 — 당근이 AI 난립을 하나의 플랫폼으로 정돈한 전략

팀 A는 OpenAI API 키를 발급받고, 팀 B는 Anthropic 계정을 만들고, 팀 C는 Google 모델을 쓴다. 계정과 키가 사방에 흩어지고, 누가 얼마나 쓰는지 파악이 안 되고, 프롬프트는 각 팀의 코드 저장소 어딘가에 묻혀 있다. 조직에서 AI를 도입할 때 가장 먼저 마주치는 풍경이다. 각 부서가 독립적으로 전화 회선을 개통해서 쓰는 상황 — 당근은 이 혼란을 중앙 교환기 하나로 정리했다.

당근의 GenAI 플랫폼은 LLM Router, Prompt Studio, KarrotChat이라는 세 축으로 구성된다. "어떤 모델을 쓸지", "프롬프트를 어떻게 관리할지", "만든 AI를 어떻게 쓸지" — 각각의 질문에 대한 구조적 답이다.


LLM Router — AI 호출의 단일 관문

모든 AI API 호출을 하나의 관문으로 통과시키는 것. 이것이 LLM Router의 전부다. 각 팀이 OpenAI, Anthropic, Google의 API를 직접 호출하는 대신, Router를 경유한다.

llm-router-flow.txt
[제품 팀 A] ──┐
[제품 팀 B] ──┼── LLM Router ──┬── OpenAI
[제품 팀 C] ──┘                ├── Anthropic
                               └── Google

회사의 내선 전화 교환기와 동일한 구조다. 외부 통신사(LLM 제공사)가 바뀌어도 내선 번호(API 인터페이스)는 유지된다. 제품 팀은 어떤 모델 제공사를 쓰는지 신경 쓸 필요 없이 Router에 요청만 보내면 된다.

문제Router 없이Router 있을 때
계정 관리팀마다 별도 계정/키중앙 집중 관리
비용 추적파악 불가팀/기능별 사용량 모니터링
모델 전환각 팀이 코드 수정Router 설정만 변경
장애 대응각자 해결Router에서 폴백 처리

[💡 잠깐! 이 용어는?] LLM Gateway(Router): 여러 LLM 제공사의 API를 통합 인터페이스 뒤에 추상화하는 프록시 서버. 라우팅, 인증, 사용량 추적, 폴백 등을 중앙에서 관리한다.


Prompt Studio — 프롬프트에 버전 관리를 입히다

Prompt Studio는 AI 기능과 Agent를 만드는 작업대다. 프롬프트를 코드 저장소에 묻어두지 않고, 독립적인 생명주기로 관리하는 것이 핵심 가치다.

하나의 프로젝트 안에서 여러 버전을 동시에 관리할 수 있다. 프롬프트나 모델을 바꿀 때 각 변경 사항을 나란히 비교하며 전환이 가능하다. 배포도 UI에서 클릭 한 번이면 끝난다.

prompt-studio-versions.yml
project: "상품 설명 생성"
versions:
  - v1:
      model: "gpt-4o"
      prompt: "상품명과 카테고리를 기반으로..."
      status: "archived"
  - v2:
      model: "claude-3.5-sonnet"
      prompt: "중고거래 맥락에서 상품명과..."
      status: "production"
  - v3:
      model: "claude-3.5-sonnet"
      prompt: "구매자 관점에서 궁금해할 정보를..."
      status: "staging"

프롬프트 변경이 코드 배포 사이클에 묶이지 않는다는 건, PM이나 기획자도 직접 프롬프트를 실험할 수 있다는 뜻이다. 엔지니어의 도움 없이도 누구나 AI 기능을 지속적으로 개선할 수 있는 구조가 만들어진 것이다.

Agent 실행 과정은 Trace로 기록된다. 문제가 생겼을 때 단계별로 확인하며 디버깅할 수 있다. 택배 송장 번호로 배송 경로를 추적하듯, AI 응답의 생성 과정을 처음부터 끝까지 투명하게 들여다볼 수 있다.

[💡 잠깐! 이 용어는?] Trace(트레이스): AI Agent의 실행 과정을 단계별로 기록한 로그. 어떤 프롬프트가 전달되었고, 어떤 도구가 호출되었고, 최종 응답이 어떻게 생성되었는지를 시간 순서대로 추적할 수 있다.


KarrotChat — 만든 Agent가 일하는 현장

KarrotChat은 Prompt Studio에서 만든 Agent를 실제로 사용하는 채팅 인터페이스다. 사내용 ChatGPT라고 보면 된다. 다양한 Agent를 탐색하고 바로 대화를 시작할 수 있다.

플랫폼역할주요 사용자
LLM Router모든 AI API 호출의 관문엔지니어 (인프라 수준)
Prompt StudioAI 기능/Agent를 만들고 관리엔지니어 + PM + 기획자
KarrotChat만들어진 Agent를 사용모든 구성원

세 플랫폼이 형성하는 흐름이 깔끔하다. LLM Router가 인프라에서 모델 접근을 통합하고, Prompt Studio가 그 위에서 AI 기능을 조립하고, KarrotChat이 최종 사용자에게 전달한다. 인프라 → 개발 → 사용이라는 계층이 명확하게 분리되어 있다.


GenAI Labs — 실험과 평가가 순환하는 곳

AI 기능의 품질을 높이려면 실험과 평가의 반복이 필수다. GenAI Labs는 프롬프트 작성 → 테스트 실행 → 성능 평가 → 결과 분석까지 전 과정을 하나의 워크플로우로 묶는다.

genai-labs-loop.txt
[프롬프트 버전 작성]

[테스트 데이터셋 실행]

[자동 평가 (LLM-as-Judge)]

[결과 비교 대시보드]

[승인 → Production 배포]  or  [수정 → 재실험]

여기서 LLM-as-Judge 방식을 활용한다. LLM이 다른 LLM의 출력을 평가하는 구조인데, 수백 개 테스트 케이스에 대한 품질 평가를 사람이 일일이 수행하지 않아도 된다.

[💡 잠깐! 이 용어는?] LLM-as-Judge: LLM 출력의 품질을 평가할 때 사람 대신 다른 LLM을 평가자로 활용하는 방법. 대규모 평가를 자동화할 수 있지만, 평가 기준을 정밀하게 정의하는 것이 전제 조건이다.


직군의 벽을 허문 진짜 변화

당근 GenAI 플랫폼이 만든 가장 큰 변화는 기술이 아니라 조직 문화다. AI 실험이 더 이상 엔지니어만의 영역이 아니게 되었다.

기존GenAI 플랫폼 도입 후
PM이 AI 기능 요청 → 엔지니어가 구현PM이 직접 Prompt Studio에서 프로토타입
프롬프트 변경 = 코드 배포프롬프트 변경 = UI에서 버전 전환
모델 변경 = API 코드 수정모델 변경 = LLM Router 설정 변경
AI 실험 결과 = 엔지니어가 수동 확인AI 실험 결과 = GenAI Labs 대시보드

비개발자 구성원들도 AI Show & Tell 해커톤에 참여해 직접 AI 도구를 만들어보는 문화가 정착됐다. 직군이라는 경계 없이 각자의 문제를 정의하고, 스스로 해결책을 실험하며, 실제 변화를 만들어내고 있다.


마무리

당근의 GenAI 플랫폼은 "AI를 잘 쓰는 몇 명의 엔지니어"가 아니라 **"모든 구성원이 AI를 활용할 수 있는 구조"**를 세우는 데 초점을 맞추고 있다. LLM Router로 인프라를 정리하고, Prompt Studio로 개발을 민주화하고, KarrotChat으로 사용을 일상화하는 3단계 전략이다. AI 기능 도입을 고려하는 조직이라면, 개별 기능을 하나씩 붙이기 전에 이런 플랫폼 레이어를 먼저 고민할 필요가 있다.