
AI에게 "간결하게 말해줘"라고 하면 더 많은 토큰을 생성할 수 있습니다: 5개 모델 벤치마크 결과
요약
프롬프트에 '간결하게 말해줘'라는 지시를 추가하는 것이 오히려 출력 토큰을 늘려 비용을 증가시킬 수 있다는 벤치마크 결과를 공유합니다. 이를 해결하기 위해 답변의 구조와 규칙을 직접 정의하는 NoYap 기술을 제안합니다.
핵심 포인트
- '간결하게 말해줘' 지시는 모델에 따라 메타 서문을 유발해 토큰 비용을 높일 수 있음
- Claude 모델의 출력 토큰 비용은 입력 토큰보다 5배 더 비싸므로 주의가 필요함
- 단순 문체 변경보다 답변에 포함될 내용의 규칙을 정의하는 것이 효과적임
- NoYap은 첫 줄에 결과 제시 및 불필요한 섹션 삭제를 통해 토큰을 절약함
한동안 저는 프롬프트에 "간결하게 말해줘(be concise)"라는 문구를 붙여두고, 이것이 비용을 아껴줄 것이라고 가정해 왔습니다. 그러다 답변을 눈대중으로 보는 대신 실제로 출력량을 측정해 보았습니다.
테스트한 5개 모델 중 2개에서는 "간결하게 말해줘"라는 명령이 아무런 말이 없을 때보다 모델이 더 많은 토큰을 생성하게 만들었습니다.
실험 (The experiment)
동일한 5가지 작업에 대해 두 가지 버전을 준비했습니다:
- 시스템 프롬프트(system prompt)가 없는 버전.
Be concise. Keep your answer short.(간결하게 하세요. 답변을 짧게 유지하세요.)라고 문자 그대로 적힌 시스템 프롬프트가 있는 버전.
저는 답변이 얼마나 짧아 보이는지가 아니라, 제공업체 출력 토큰(provider output tokens)(모델이 실제로 생성하며, 비용을 5배 더 지불하게 되는 부분)을 측정했습니다. CLI를 통해 실행된 5개의 현재 Claude 모델을 대상으로 했습니다.
| 모델 | 프롬프트 없음 | "Be concise." | 변화 |
|---|---|---|---|
| Haiku 4.5 | 3288 | 2666 | −19% (감소) |
| ... |
따라서 "간결하게 말해줘"가 항상 역효과를 내는 것은 아닙니다. 문제는 그것이 신뢰할 수 없다는 점입니다. 때로는 내용을 줄이기도 하고, 때로는 내용을 늘리기도 하며, 어떤 결과가 나올지는 모델에 따라 다릅니다.
이유에 대한 제 추측은 이렇습니다. 일부 모델에서는 "짧게 유지하라"는 지시가 약간의 메타 서문("간결한 요약은 다음과 같습니다:")이나 질문의 재진술을 유발하며, 이미 짧았던 작업의 경우 이러한 오버헤드(overhead) 비용이 지시사항으로 절약한 비용보다 더 커지게 됩니다.
이것이 중요한 이유: 출력 토큰은 비용이 많이 드는 부분입니다. 현재 모든 Claude 모델에서 출력 비용은 입력 토큰보다 5배 더 비쌉니다. 만약 당신의 "비용을 줄여보자"는 프롬프트가 당신이 사용하는 바로 그 모델에서 몰래 출력을 추가하고 있다면, 당신은 효율적이라고 느끼는 대가로 더 많은 비용을 지불하고 있는 셈입니다.
실제로 출력을 줄인 방법
출력 토큰을 확실하게 줄이고 싶다면, 문체를 바꾸는 것만으로는 부족합니다. 답변에 들어가는 내용 자체를 바꿔야 합니다.
그것이 제가 결국 만들게 된 NoYap이라는 작은 기술의 핵심 아이디어입니다. "더 짧게 말해" 대신, 답변에 무엇이 포함되어야 하는지에 대한 일련의 규칙을 적용하는 것입니다.
- 답변을 먼저 제시하세요. 첫 줄에 결과를 적으세요.
- 자리를 차지하지 못하는 전체 섹션(요약, 서술, 일반적인 '엣지 케이스가 있을 수 있다'와 같은 주의사항)은 문구를 간결하게 다듬기 전에 삭제하세요.
- 실제로 실행된 경우에만 무언가를 검증했다고 주장하세요.
- 구체적이고 실제적인 위험이 있는 경우에만 상태를 밝히세요.
- 막혔을 때 질문 하나만 하고 멈추세요.
다섯 가지 동일한 과제, 동일한 측정 기준. 저는 평범한 베이스라인과 두 개의 기존 간결화 도구(Caveman는 산문을 간결한 페르소나로 압축하고, Ponytail은 모델이 코드를 덜 작성하도록 만듭니다)를 참조점으로 삼아 테스트했습니다.
| Skill | Haiku 4.5 | Sonnet 5 | Opus 4.8 | Fable 5 | Opus 5 |
|---|---|---|---|---|---|
| Baseline (no prompt) | 4732 | 1134 | 1334 | 2933 | 1078 |
| ... | |||||
![]() |
NoYap은 다섯 가지 모델 모두에서 베이스라인보다 낮은 수치를 기록했습니다. (참고: 이 베이스라인은 위에 있는 '간결하게 작성하라' 표와는 별도의 더 긴 실행을 통해 얻은 것이므로, 두 표를 열별로 나란히 비교하지 마세요. 서로 다른 실험입니다.)
실제 예시
마이그레이션 과제: 마이그레이션 과정에서 레거시 컬럼이 삭제되었고, 코드가 변경되었으며, 테스트가 실행되지 않았지만, 오래된 v1 API 클라이언트들은 여전히 그 컬럼을 읽는 상황입니다.
평범한 에이전트, 158 토큰:
마이그레이션이 완료되지 않았으며 v1 API 클라이언트들을 중단(break)시킬 것입니다.
차단 요소 (Blockers):
- 테스트가 실행되지 않음 — 코드 변경 사항이 작동하는지 검증하지 않았습니다.
- v1 API 호환성 — 클라이언트들이 여전히 삭제된
status컬럼을 읽고 있습니다. 이들은 null 또는 에러 응답을 받게 될 것입니다.다음 단계 (Next steps):
- 만약 이것이 통제된 폐기(deprecation)라면: 폐기 유예 기간(deprecation window)을 추가하고, 한 번의 릴리스 동안 컬럼에 데이터를 유지하며, 클라이언트들에게 알리십시오.
- 만약 v1 호환성을 유지해야 한다면: 컬럼을 복구하거나 호환성 심(compatibility shim)을 추가하십시오.
- 어떤 방식이든: 먼저 테스트를 실행하십시오.
어떤 접근 방식이 귀하의 릴리스 전략에 적합합니까?
NoYap, 35 토큰:
마이그레이션 시 레거시
status컬럼을 삭제합니다. 코드는 업데이트되었으나 실행되지 않았습니다.리스크: v1 API 클라이언트들이 여전히
status를 읽고 있으며, 업그레이드될 때까지 작동이 중단됩니다.
동일한 사실입니다. 발생한 일을 기술하고, 메커니즘의 실제 리스크(누가 왜 중단되는지)를 표시하며, 아무것도 검증되지 않았음을 인정합니다. 제가 요청하지 않은 두 가지 해결 계획을 지어내지 않습니다.
직접 시도해보기
실행기(runner), 원본 결과, 그리고 기술은 여기에 있습니다: https://github.com/pedrosantospt/noyap
Claude Code에서는 두 줄이면 됩니다:
/plugin marketplace add pedrosantospt/noyap
/plugin install noyap@noyap
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기