본문으로 건너뛰기
Caesiumy's BLOG
뒤로 가기

출력 토큰이 5배 비싸서 직접 압축 어댑터를 만들었다

방문자 수
출력 토큰이 5배 비싸서 직접 압축 어댑터를 만들었다 썸네일

목차

목차 보기

출력 토큰이 5배 더 비싸다

Anthropic 가격 페이지를 보면 숫자가 단번에 눈에 들어온다. Claude Sonnet 4.5 기준으로 입력 토큰은 백만 토큰당 $3이고, 출력 토큰은 $15다. 5배 차이다.

많은 사람들이 LLM 비용을 줄이려 할 때 프롬프트 압축에 집중한다. 시스템 프롬프트를 줄이고, 컨텍스트 창을 덜 채우려 한다. 물론 맞는 방향이다. 하지만 문제는 반쪽짜리 접근이라는 점이다.

실제 비용 구조를 보면 대화가 길어질수록 출력 비용이 폭증한다. Claude Code가 코드를 생성하고, 분석 결과를 서술하고, 계획을 작성할 때 — 이 모든 응답이 출력 토큰이다. 입력 프롬프트를 절반으로 줄여도, 출력이 길면 청구서는 줄지 않는다.

그렇다면 자연스럽게 이 질문이 나온다.

출력을 줄이면? 정확성은 유지하면서?

입력은 줄였는데, 출력은?

입력 측 최적화 도구는 이미 많다. 프롬프트 압축 도구, 토큰 카운팅 라이브러리, 컨텍스트 윈도우 관리 전략. 이 분야는 꽤 성숙했다.

LLM에게 “더 짧게 말해”라고 할 수 있지만, 매번 요청하기엔 번거롭다.

LLM이 더 짧게 응답하도록 규칙을 주면, 정확성을 크게 잃지 않으면서도 비용이 크게 줄 것이다.

나는 무려 MAX 200 플랜을 구독하면서도(가끔 바쁠 땐 2개…) 주간 할당량을 다 써가며 Claude Code를 쓰고 있었다. 토큰을 태우면서 드는 생각이 있었다. “에이전트가 이렇게 길게 말할 필요가 있나?” 분석 결과도, 계획도, 설명도 — 불필요하게 장황한 부분이 눈에 걸렸다. 그래서 이 가설을 들고 직접 검증해보기로 했다.

AWSKRUG에서 마이크를 잡았다

최근 AWSKRUG 모임에 참석했다. AI 관련 발표가 이어지다가 토큰 비용 절감 쪽으로 대화가 흘렀다.

마이크를 들고 잠깐 이야기할 기회를 얻기 위해 나는 손을 들었다.

발표하면서 두 가지 축을 제안했다.

첫 번째 축은 Rocky 말투다.

앤디 위어의 소설 프로젝트 헤일메리에 Rocky라는 외계인 캐릭터가 나온다. 이 캐릭터의 대사는 극단적으로 짧고 단편적이다. 불필요한 수식어가 없다. “질문 있다. 이것 무엇?” 같은 식이다. 핵심만 남긴 압축 언어다.

이 말투를 LLM에 모델로 주입하면 어떻게 될까. LLM은 캐릭터 모방에 강하다. Rocky처럼 말하도록 역할을 설정하면 자연스럽게 응답이 압축된다. 규칙으로 강제하는 것이 아니라, 캐릭터의 특성으로 유도하는 방식이다.

두 번째 축은 유비쿼터스 랭귀지다.

Matt Pocock의 레포 mattpocock/skills에서 영감을 받았다. Matt가 짚은 문제는 명확하다. AI가 너무 많은 단어로 소통하려 한다는 것 — 마치 사용자와 AI가 서로 다른 언어로 대화하는 듯한 인상을 준다. 이건 도메인 전문가와 개발자 사이에서 흔히 발생하는 언어 간극과 닮아있다.

해결책으로 그가 제시한 건 도메인 주도 설계(DDD)의 보편 언어(Ubiquitous Language) 개념이다. 개발자 간 대화, 코드 표현, 도메인 전문가와의 대화 — 이 모든 것이 같은 도메인 모델에서 파생된 어휘를 쓴다는 원칙이다. 이걸 LLM 작업에 가져오면 사용자와 AI가 공유하는 용어 목록이 된다. 코드 작성도, 코드에 대한 대화도, AI와의 대화도 모두 같은 단어로 진행된다.

그 레포의 한 스킬은 이 원칙을 자동화한다. 코드베이스의 용어를 스캔해서 보편 언어 마크다운 파일을 생성하고, AI는 이 파일을 참조하면서 더 간결하게 사고하고 사용자의 계획을 더 정확히 따라간다. 응답이 쓰는 어휘 집합 자체가 제한되니 자연스럽게 토큰도 줄어든다.

Rocky-Skills는 이 계보의 한국어·멀티 어댑터 버전이라 볼 수 있다.

발표 후 청중 반응이 두 가지로 기억에 남는다.

“아웃풋 토큰이 더 비싸니 줄이는 것이 맞다.”

즉각적인 동의였다. 그리고 또 한 분이 덧붙였다.

“지금은 거의 토큰 보조금 시대다. 곧 가격이 오를 테니 대비해야 한다.”

이 두 반응이 확신을 줬다. 모임이 끝나고 나서 곧바로 만들기 시작했다.

벤치마크: $10 충전했는데 $1도 안 썼다

이 숫자, 마케팅 자료가 아니다. Claude API에 직접 충전해서 8개 프롬프트를 직접 돌렸다.

여담으로, 토큰 비싸다는 글을 쓰겠다고 큰돈이 들 줄 알고 $10을 충전했는데 정작 $1도 안 썼다. 출력 토큰 가격을 가장 진지하게 의심한 사람이 측정에서는 가장 적게 태운 셈이다 — 측정 자체가 이만큼 저렴하다는 점이 별도의 발견이었다. 누구나 같은 비용으로 자기 환경에서 검증해볼 수 있다.

프롬프트는 5개 카테고리에 8개를 분산시켰다 — Debugging, Planning, Support, How-to, 그리고 짧은 Q&A 같은 저압축 기준선이다. 결과는 benchmarks/results.json에 원본 그대로 있다.

카테고리토큰 감소율
Debugging61.2%
Planning58.7%
Support72.4%
How-to49.3%
저압축 기준선 (짧은 Q&A)31.8%
평균54.3%

Support 카테고리에서 최대 72.4%가 나왔다. 안내 응답은 본래 수식어와 공감 표현이 많아서 압축 여지가 크다. 반대로 짧은 Q&A는 이미 응답이 간결해서 감소폭이 작다.

같은 질문에 대한 응답 차이를 직접 보면 더 명확하다.

Q: 이 함수에서 에러가 나는 이유가 뭔가요?

기본 응답:

안녕하세요! 해당 함수를 살펴보겠습니다. 코드를 분석한 결과, 문제는
null 체크가 누락된 부분에 있는 것으로 보입니다. 구체적으로 설명드리면,
`user` 객체가 undefined일 때 `.id`에 접근하면 TypeError가 발생합니다.
이를 해결하기 위해서는 optional chaining을 사용하거나 사전 null 체크를
추가하시는 것을 권장드립니다.

Rocky 적용 응답:

원인: user가 null일 때 .id 접근.
수정: user?.id 또는 if (!user) return 추가.

내용은 동일하다. 두 응답 모두 원인과 해결책을 담고 있다. Rocky 버전이 63% 적은 토큰을 썼다.

단, 보존 영역은 명확히 정해뒀다. 코드 블록, 커밋 메시지, 법률 문서는 압축 대상에서 제외한다. 코드에서 변수명을 축약하거나, 커밋 메시지 형식을 바꾸거나, 법률 문서의 어휘를 임의로 단순화하면 정확성 손실이 발생한다. 이 영역은 원문 그대로를 최우선으로 한다.

비유하자면 이렇다. 압축은 격식 차린 발표가 아니라 친구끼리 나누는 대화에 가깝다. 발표에서는 배경부터 마무리 인사까지 갖춰야 하지만, 친구 사이에서는 이미 맥락을 공유하기 때문에 핵심만 던진다. Rocky-Skills는 LLM의 응답을 발표 모드에서 친구 대화 모드로 바꾸는 것이다.

어댑터 매트릭스 + 설치

Rocky-Skills는 도구별 어댑터를 모두 제공한다.

도구어댑터설치 위치
Claude Code.claude/ 규칙 파일프로젝트 또는 전역
Cursor.cursorrules프로젝트 루트
Windsurf.windsurfrules프로젝트 루트
Cline.clinerules프로젝트 루트
Gemini CLIGEMINI.md프로젝트 루트

청중 중 한 분이 말했다. “지금은 거의 토큰 보조금 시대다.” 그게 맞다면, 보조금이 끝나기 전에 출력 압축을 루틴으로 만들어두는 것이 낫다.

토큰 보조금 시대가 끝나기 전에 써볼 의향이 있다면, Rocky-Skills 레포에서 한 줄 설치 명령어로 시작하면 된다.

마무리

출력 토큰이 5배 비싸다는 사실에서 시작해, 가설을 세우고, AWSKRUG에서 검증받고, 벤치마크로 수치를 확인하고, 어댑터로 만들어봤다.

입력 최적화만큼 출력 최적화도 관심을 받아야 한다고 생각한다. LLM이 더 짧게 말하도록 유도하는 것이 생각보다 훨씬 쉽고, 효과도 크다.

다음에는 작업 유형 자동 감지 기능과 언어별 압축 임계치 조정을 실험해볼 예정이다. 써보고 피드백이 있다면 GitHub 이슈나 댓글로 남기면 좋겠다.

참고 자료


공유하기
복사됨!

이전 글
이력서 한 줄을 포트폴리오 섹션으로 풀어내는 4-Phase 하네스 설계하기
다음 글
[번역] 장기 실행 애플리케이션 개발을 위한 하네스 설계