Claude에게 구구절절 설명하는 것을 멈추세요
요약
Claude와 대화할 때 불필요한 맥락과 사회적 노이즈를 제거하여 토큰을 절약하는 '델타 원칙'을 소개합니다. 프레임워크 설명이나 인사말 대신 핵심적인 문제(Delta)만 전달함으로써 비용을 줄이고 효율을 높일 수 있습니다.
핵심 포인트
- 델타 원칙: Claude가 이미 아는 정보 대신 새로운 정보(Delta)만 전달할 것
- 불필요한 맥락 제거: 프레임워크 이름, 개념 설명, 기술 스택 소개 생략 가능
- 사회적 노이즈 제거: 인사말, 완곡한 표현, 추임새 등은 토큰 낭비
- 핵심 정보 유지: 실제 에러, 변수명, 코드 블록 등은 반드시 포함
- 복리 효과: 프롬프트 최적화는 대화 세션 전체에서 큰 비용 절감으로 이어짐
당신은 토큰을 낭비하고 있습니다. 조금이 아니라 아주 많이요.
제가 끊임없이 목격하는 프롬프트는 다음과 같습니다:
"저는 React 앱을 가지고 있고 useState 훅을 사용하고 있습니다. Props가 변경되지 않았음에도 불구하고 부모 컴포넌트가 렌더링될 때마다 제 컴포넌트가 리렌더링됩니다. 왜 이런 일이 발생하나요?"
Claude는 그런 설정이 전혀 필요하지 않습니다. Claude는 이미 React를 알고 있습니다. useState가 무엇인지도 이미 알고 있습니다. Claude에게 필요한 것은 오직 이것뿐이었습니다:
"부모 렌더링 시 컴포넌트 리렌더링 발생. Props 변경 없음. 이유가 무엇인가."
결과는 동일한 답변이었습니다. 토큰은 64%나 절약되었습니다.
델타 원칙 (The delta principle)
대부분의 프롬프트는 인간을 위해 작성됩니다. 우리는 질문을 하기 전에 맥락을 설명하고, 프레임워크의 이름을 말하며, 사물이 어떻게 작동하는지 묘사합니다. 그것이 우리가 서로 소통하는 방식입니다.
하지만 Claude는 이미 맥락을 알고 있습니다. Claude에게 필요한 유일한 것은 델타 (delta) — 즉, 새로운 정보, 구체적인 문제, 알 수 없는 부분입니다.
그 외의 모든 것은 노이즈(noise)입니다.
안전하게 제거할 수 있는 것들
Claude는 이미 다음 사항들을 알고 있습니다 — 다시 설명하지 마세요:
- 맥락으로 사용되는 프레임워크 이름 ("React 앱을 사용 중입니다", "Python을 사용하고 있습니다")
- 개념 설명 ("훅은 React의 기능으로...", "클로저란 ...할 때...")
- 스택 소개 ("제 앱은 Node, Express, MongoDB를 사용합니다")
신호(signal)를 전혀 더해주지 않는 사회적 노이즈:
- 인사말: "안녕", "도와주길 바랍니다", "미리 감사합니다"
- 허락 요청: "부탁드려도 될까요", "궁금해서 그런데"
- 완곡한 표현: "제 생각에는", "확실하지는 않지만", "아마도", "어쩌면"
- 추임새: "기본적으로", "본질적으로", "그냥", "단순히", "사실"
절대로 제거해서는 안 되는 것:
- 실제 에러, 버그 또는 문제
- 숫자, 임계값, 측정값
- 변수 이름, 함수 이름, 파일 이름
- 코드 블록 및 URL
- Claude가 듣지 않고서는 알 수 없는 모든 것
전과 후
디버깅 (Debugging):
전 (41 tokens):
"Node.js Express API를 작업 중인데 엔드포인트를 호출하려고 할 때 401 unauthorized
에러가 발생합니다. JWT 토큰을 ...
코드 리뷰 (Code review):
이전 (29 tokens):
"Could you please review this Python function and tell me if there are any issues or improvements I could make?"
...
설명 (Explanation):
이전 (19 tokens):
"I was wondering if you could explain how database connection pooling works in simple terms?"
...
복리 효과 (The compound effect)
단일 프롬프트(prompt)에서 절약되는 양은 작아 보입니다. 하지만 실제 세션 전체에 걸쳐 보면, 이는 복리로 쌓입니다.
여러 번의 대화를 주고받으며 무언가를 디버깅(debugging)하는 실제 개발 세션 20턴을 시뮬레이션한 결과는 다음과 같습니다:
| 턴 (Turn) | 장황한 표현 (tokens) | 차이 (Delta, tokens) | 절약됨 (Saved) |
|---|---|---|---|
| 1 | 48 | 18 | 30 |
| ... | |||
| 단일 세션에서 531 tokens 절약. 70% 감소. |
Sonnet 가격 기준 Claude API를 사용할 때, 이는 달러로 환산하면 작은 금액입니다. 하지만 API를 기반으로 서비스를 구축하고 하루에 수백 개의 세션을 실행한다면, 이는 빠르게 누적됩니다. 또한 claude.ai를 사용할 때도 입력 토큰(input tokens)이 적다는 것은 컨텍스트 노이즈(context noise)가 줄어든다는 것을 의미합니다. 즉, Claude가 더 깨끗한 신호(signal)를 처리하여 더 정확하게 응답할 수 있습니다.
세 가지 강도 레벨 (Three intensity levels)
모든 프롬프트에 초압축이 필요한 것은 아닙니다. 저는 상황에 따라 세 가지 모드를 사용합니다:
lite — 인사말만 제거하고 컨텍스트(context)는 유지 (~20% 감소)
사용 시점: 새로운 주제를 시작할 때, 세션의 첫 메시지
full — Claude가 이미 알고 있는 모든 것을 제거하고 차이점(delta)만 유지 (~60% 감소)
사용 시점: 세션 중간의 디버깅, 코드 반복 작업, 빠른 질문
ultra — 최소한의 신호(signal)로 압축 (~70% 이상 감소)
사용 시점: 원하는 바를 정확히 알고 있으며 다듬어진 표현은 상관없을 때
스킬 파일 (The skill file)
저는 이것을 Claude 스킬로 만들었습니다. 이는 Claude에게 활성화/비활성화 명령과 강도 전환 기능을 사용하여 델타 압축(delta compression)을 자동으로 적용하도록 지시하는 마크다운(markdown) 파일입니다.
README에는 전체 규칙 세트, 강도별 예시, 그리고 이를 귀하의 Claude 설정에 추가하는 방법이 안내되어 있습니다.
생각해 볼 만한 한 가지
이것은 작은 최적화입니다. 하지만 그 이면에 깔린 원리는 더 거대합니다:
우리는 인간을 위해 프롬프트를 작성해 왔습니다. 우리는 설명하고, 완곡하게 표현하며, 맥락을 제공합니다. 왜냐하면 그것이 다른 사람들로부터 이해를 얻어내는 방식이기 때문입니다. 하지만 LLM (Large Language Models)에게 이러한 오버헤드 (Overhead)는 낭비일 뿐입니다. 모델은 당신이 무엇을 말하고 있는지 알고 있다는 사실을 설득당할 필요가 없습니다. 모델에게는 사회적 비계 (Social scaffolding)가 필요하지 않습니다.
그저 차이점 (Delta)만 보내세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기