PEH IP BOOKS F&A SUPPORT GUESTBOOK 회원가입
CHAPTER 1.2 · OPEN EDITION

1.2 토큰의 물리학: AI의 원자와 경제학 (Token Physics)

"우리는 문장을 단어로 이해하지만, AI는 세상을 '토큰'이라는 데이터 조각으로 받아들인다. 아키텍트는 이 미세한 입자의 흐름을 제어하는 물리학자가 되어야 한다."

1장 1개요에서는 우리가 왜 서로 다른 언어를 하는지, 그 이중 번역의 늪에 대해 다뤘습니다. 이제 그 늪의 바닥에 가라앉아 있는 가장 원초적인 입자를 마주할 시간입니다. 인공지능에게 텍스트는 오직 수치화된 데이터의 덩어리, 즉 '토큰(Token)'의 나열일 뿐입니다.

프롬프트 아키텍트가 토큰을 이해하는 것은 건축가가 벽돌의 강도와 무게를 이해하는 것과 같습니다. 아무리 화려한 집(프롬프트)을 설계해도, 입자인 토큰의 물리적 한계를 무시하면 순식간에 무너져 내리고 맙니다. 1.2절에서는 프롬프트 설계의 가장 기초적인 물리 법칙인 '토큰의 경제학'과 '효율적인 배치'에 대해 심도 있게 다룹니다.


[EPISODE] 사라지는 단어들, 남겨지는 에너지

어느 초보 프롬프트 디자이너의 이야기입니다. 그는 밤새도록 정성스럽게 수식어를 채워 넣은 10페이지짜리 기획안을 AI에게 건넸습니다. "이 아름다운 문장들을 읽고 완벽한 결과를 내줘!"

하지만 그가 간과한 사실이 하나 있었습니다. 지능의 엔진은 그의 '아름다운 수식어'를 단어 그대로 읽지 않는다는 점이었죠. 엔진에 들어가는 순간, 화려한 문장들은 잘게 쪼개진 '토큰'이라는 입자로 분해되었고, 그 과정에서 수많은 에너지가 낭비되었습니다. 정작 중요한 지시 사항은 토큰의 바닷속에 파묻혀 힘을 잃고 말았습니다.

이튿날, 베테랑 아키텍트가 그의 프롬프트를 보더니 딱 절반을 덜어냈습니다. "이보게, 단어를 넣지 말고 '에너지'를 설계하게. AI의 눈에는 단어가 아니라 토큰의 질량만 보인다네."

그제야 초보 디자이너는 깨달았습니다. 프롬프트는 문학 작품이 아니라, 가장 효율적인 입자들로 쌓아 올린 '지능의 건축물'이어야 한다는 사실을 말이죠.


1.2.1 [ARCHITECT INSIGHT] 벚꽃잎이 숫자로 변하는 순간

어느 봄날의 풍경을 시로 표현해 달라는 요청을 시나리오로 상상해 보십시오. 사용자의 머릿속에는 흩날리는 분홍빛 꽃잎과 봄바람의 온기, 그리고 아련함이 가득할 것입니다. 하지만 그 문장이 지능의 엔진 속으로 들어오는 순간, AI에게는 '벚꽃'도 '온기'도 보이지 않습니다. 오직 차가운 숫자들의 나열만이 나타날 뿐입니다.

[38291, 192, 4820, 293, 102]

사용자의 '감성'은 AI에게 '연산'이 됩니다. 문장은 수십 개의 토큰으로 쪼개지고, 엔진은 그 숫자를 확률적으로 조합하여 다음 단어를 찾기 시작합니다. 우리가 마주하는 아름다운 시 구절들은 사실 이 차가운 숫자들의 물리적 충돌과 결합이 만들어낸 결과물입니다.

우리가 AI를 쓰며 느끼는 신비로움의 이면에는, 모든 감성을 숫자로 치환하는 명확한 '물리학'이 존재합니다. 이제 그 숫자의 정체인 토큰에 대해 더 깊이 들어가 봅시다.


1.2.2 AI의 원자: 토큰(Token)이란 무엇인가

인공지능(대규모 언어 모델)은 텍스트를 인지할 때 단어나 문장 단위로 저장하지 않습니다. 대신 효율적인 처리를 위해 텍스트를 더 작은 단위로 쪼개는데, 이것을 토큰화(Tokenization)라고 합니다.

프롬프트 아키텍트가 기억해야 할 토큰의 3대 물리적 속성은 다음과 같습니다:

  1. 정보의 최소 입자: AI가 지능을 발휘하기 위해 데이터를 인식하는 기본 단위입니다.
  2. 지능의 연료: 모델이 답변을 생성할 때마다 소모하는 에너지입니다. (대부분의 API가 토큰 단위로 과금되는 이유입니다.)
  3. 주의력(Attention)의 그릇: AI가 한 번에 처리할 수 있는 데이터의 한계, 즉 컨텍스트 윈도우(Context Window)를 결정하는 기준입니다.
03
토큰의 언어별 물성 차이: 레고 vs 모래알
- **영어 (English)**: 비교적 큰 '레고 블록'처럼 단어 단위로 깔끔하게 쪼개어져 토큰 효율이 매우 높습니다. 한 단어가 평균 0.7~1토큰을 소모합니다. - **한국어 (Korean)**: 조사나 어미까지 아주 고운 '모래알'처럼 잘게 부서져 토큰을 형성합니다. 한 단어가 평균 2~3토큰 이상을 소모하기도 합니다.

한국어가 영어보다 AI에게 더 '무거운' 언어인 이유는 바로 이 토큰의 물리적 특성 때문입니다. 동일한 정보를 전달하더라도 한국어는 영어보다 훨씬 더 많은 '연산 자원'을 사용합니다. 이것을 이해하지 못하면 당신의 프롬프트는 시작도 하기 전에 AI의 기억 용량을 초과해버리거나, 지능의 한계에 부딪혀 엉뚱한 대답을 내놓게 됩니다.

1.2.3 왜 나의 프롬프트는 '비싼'가: 토큰 소모의 경제학

많은 초보 설계자들이 범하는 가장 큰 실수는 "상세하게 설명할수록 결과가 좋아질 것"이라고 믿으며 장황한 설명을 늘어놓는 것입니다. 하지만 무작정 긴 프롬프트는 다음과 같은 심각한 '물리적 장애'를 유발합니다.

  1. 시그널 대 노이즈(Signal-to-Noise Ratio)의 악화:
    중요한 지시 사항(시그널)이 불필요한 미사여구(노이즈)에 묻혀버립니다. 토큰이 많아질수록 AI는 당신이 정말로 원하는 핵심을 놓칠 확률이 기하급수적으로 높아집니다.
  2. 할루시네이션(환각) 가속화:
    불필요한 배경 정보가 너무 많으면 AI는 그 단어들 사이의 '통계적 연관성'을 억지로 찾으려다 없는 사실을 지어내는 환각 증세를 보입니다.
  3. 컨텍스트 윈도우의 증발:
    모든 모델은 대화의 총량을 기억하는 데 한계가 있습니다. 초반에 불필요한 토큰을 낭비하면, 실제 작업을 처리해야 할 시점에는 앞선 중요한 설정들을 잊어버리게 됩니다.

프롬프트 설계의 제1법칙은 '최소 토큰으로 최대 의미 전달하기'입니다.


[CONCEPT] 토큰의 생애: 입력에서 생성까지의 경로

우리가 프롬프트를 입력하면 AI 내부에서는 어떤 일이 벌어질까요 이 과정을 이해하면 어디서 토큰을 아껴야 할지 보입니다.

  1. 입력 토큰(Prompt Tokens): 당신이 쓴 글이 숫자로 변환되어 들어오는 단계입니다. 이 단계의 효율이 전체 지능의 '해상도' 결정합니다.
  2. 추론 단계(Inference): 입력된 토큰들을 바탕으로 다음 토큰을 확률적으로 계산합니다. 이때 토큰 간의 거리가 멀거나 관계가 모호하면 지능이 급격히 저하됩니다.
  3. 출력 토큰(Completion Tokens): AI가 실제로 내어놓는 결과물입니다. 불필요한 출력을 제한하는 것 또한 중요한 설계의 일부입니다.

프롬프트 아키텍트는 이 세 단계를 모두 통제해야 합니다. 특히 출력 토큰의 길이를 명확히 지정해 주지 않으면 AI는 말을 길게 늘어뜨리며 소중한 토큰 자원을 낭비하게 됩니다.


1.2.4 [DEEP DIVE] BPE 알고리즘과 한국어의 수난사

토큰화의 이면에는 BPE(Byte Pair Encoding)라는 알고리즘이 숨어 있습니다. 가장 빈번하게 함께 등장하는 문자 쌍을 하나의 토큰으로 묶는 방식이죠.

영어에서는 "the", "ing", "tion" 같은 패턴들이 명확하게 하나의 토큰으로 묶입니다. 하지만 한국어는 다릅니다. "가고 싶다", "가고 싶니", "가고 싶었어" 등 어미의 변화가 너무나 무쌍합니다. BPE 알고리즘 입장에서는 이 모든 변화를 각각 다른 패턴으로 인식하거나, 최악의 경우 글자 하나하나를 쪼개어 버립니다.

이것이 시사하는 아키텍쳐적 통찰은 다음과 같습니다:
- 명사형 종결어미의 활용: "~하는 것을 추천합니다"라고 길게 쓰는 것보다 "추천함" 혹은 "권장 리스트:"처럼 명사 위주로 문장을 끊어주는 것이 한국어 토큰 효율을 비약적으로 높입니다.
- 외래어의 처리: AI 모델에 따라 한국어 외래어(예: '아키텍처')보다 영어 원어('Architecture')가 토큰을 적게 소모할 때가 많습니다. 기술적인 프롬프트라면 적절한 영문 혼용이 유리할 수 있습니다.

1.2.5 [CASE STUDY] 대규모 문서 요약에서의 토큰 병목 현상

한 아키텍트가 50페이지 분량의 PDF 문서를 요약하는 프로젝트를 맡았습니다. 그는 모든 텍스트를 한 번에 프롬프트에 넣고 "요약해 줘"라고 명령했지만, AI는 문서의 앞부분 10페이지 내용만 반복해서 말할 뿐 뒷부분은 완전히 무시해 버렸습니다.

왜 그랬을까요
바로 '토큰 임계치(Token Limit)'에 도달했기 때문입니다. 프롬프트 자체가 이미 모델이 감당할 수 있는 주의력(Attention)의 범위를 넘어섰고, AI는 연산 부하를 줄이기 위해 뒷부분의 토큰들을 쓰레기통으로 던져버린 것입니다.

아키텍트의 해결책:
1. 슬라이딩 window(Sliding Window): 문서를 5페이지 단위로 쪼개어 각각 요약합니다.
2. 재귀적 요약(Recursive Summarization): 쪼개진 요약본들을 다시 합쳐서 최종 요약본을 만듭니다.
3. 메타 토큰 설계: 각 섹션의 핵심 키워드를 미리 추출하여 AI에게 지도를 먼저 제공합니다.


1.2.6 [ADVANCED] 커스텀 토크나이저와 모델별 지형도

모든 AI 모델이 같은 토큰 기준을 가지는 것은 아닙니다. 아키텍트는 자신이 사용할 '엔진'의 특성을 미리 파악해야 합니다. 어떤 엔진은 장거리에 강하고, 어떤 엔진은 정밀한 소량 연산에 강합니다.

  • OpenAI (GPT-4o): tiktoken이라는 정교한 라이브러리를 사용하며 한국어 효율이 점차 개선되고 있습니다.
  • Anthropic (Claude 3.5): 자체적인 토크나이저를 쓰며, 특히 XML 태그 처리 능력이 탁월합니다.
  • Google (Gemini 1.5 Pro): 엄청난 컨텍스트 윈도우를 자랑하지만, 토큰이 많아질수록 답변의 정별도가 떨어지는 'Lost in the Middle' 현상이 존재합니다.

1.2.7 [TECHNICAL] 토큰-벡터(Token-to-Vector)와 의미의 거리

우리는 텍스트를 입력하지만 AI 내부에서는 이 토큰들이 수백 혹은 수천 차원의 공간 위의 좌표(Vector)로 변환됩니다. 이것을 임베딩(Embedding)이라고 합니다.

아키텍트가 알아야 할 것은 이 좌표들 사이의 '거리'입니다.
- "사과"라는 토큰과 "아이폰"이라는 토큰은 기술 맥락에서는 가깝지만, 과일 맥락에서는 멀어집니다.
- 당신이 프롬프트에 준 '맥락 토큰'들이 서로 너무 먼 곳을 가리키고 있다면, AI의 연산 엔진은 혼란에 빠집니다. 이것이 바로 '지시의 일관성이 깨지는 시점'입니다.


[PRACTICE] 토큰 다이어트: 300자를 50자로 줄이기

이제 직접 실습해 봅시다. 아래는 흔히 볼 수 있는 '나쁜' 프롬프트입니다.

[Before: 낭비벽이 심한 프롬프트]
"안녕하세요 AI 님. 저는 오늘 블로그 글을 하나 쓰려고 하는데요. 주제는 비타민의 중요성이에요. 혹시 비타민 C가 우리 몸에 왜 좋은지 아주 자세하고 친절하게 설명해 주실 수 있나요 되도록이면 이해하기 쉽게 초등학생 수준으로 알려주시면 정말 감사하겠습니다."

이것을 아키텍트의 관점에서 '토큰 다이어트'를 하면 어떻게 될까요

[After: 정교하게 설계된 프롬프트]
[ROLE] 건강 칼럼니스트
[TOPIC] 비타민 C의 효능
[AUDIENCE] 초등학생
[TASK] 핵심 3가지 이유를 일상의 비유로 설명하라.


1.2.8 [ADVANCED] 토큰 연쇄 반응: 하나의 단어가 답변을 바꾼다

프롬프트 아키텍처에서 가장 신비로운 현상 중 하나는, 단 하나의 토큰이 수백 개의 다음 토큰 생성 경로를 완전히 바꿔버린다는 것입니다. 이것을 우리는 '시점의 물리(Temporal Physics)'라고 부릅니다.

예를 들어, 프롬프트의 맨 마지막에 "생각해 보자:" 또는 "Step-by-Step으로:"라는 짧은 토큰을 추가하는 것만으로도 AI의 지능 지수(IQ)는 비약적으로 상승합니다. 이는 AI가 다음 토큰을 생성할 때 '결론'이 아닌 '과정'의 확률적 경로로 강제 진입하기 때문입니다.

반대로, 문장의 시작에 "간단히 말해서"라는 토큰을 넣으면 AI는 복잡한 추론 과정을 생략하고 가장 확률이 높은(하지만 정보량은 적은) 답변으로 수렴해 버립니다. 아키텍트는 이 '트리거 토큰' 하나하나가 AI의 신경망 내부에서 어떤 폭발적인 연쇄 반응을 일으키는지 예측하고 설계해야 합니다.

1.2.9 [CASE STUDY 2] 다국어 혼합 프롬프트의 간섭 현상

한 개발자가 한국어 지시 사항과 영어 코드 예시를 혼합하여 프롬프트를 작성했습니다. 결과물은 한글과 영어가 기괴하게 섞인 '보노보노 찬양' 같은 답변이었습니다.

왜 이런 일이 벌어졌을까요
AI의 토큰 공간에서 한국어 벡터와 영어 벡터가 서로 다른 '인력'을 발휘하며 충돌했기 때문입니다. 특히 기술 용어의 경우, 한국어로 설명하면 토큰이 잘게 쪼개져 의미가 흐릿해지는 반면, 영어는 단단한 토큰으로 유지되어 AI가 영어 맥락으로 쏠리게 만듭니다.

아키텍트의 해결책:
1. 언어적 경계 확정: [LANGUAGE: KOREAN]과 같은 태그를 사용하여 AI의 내부 번역 엔진 방향을 고정합니다.
2. 용어의 통일: 기술 용어는 괄호 안에 영문을 병기하여(예: '객체 지향(Object-Oriented)') AI가 정확한 벡터를 찾도록 이정표를 세웁니다.
3. 예시 데이터의 전처리: 영어 예시 데이터를 넣을 때는 "이 예시는 오직 '형식'만 참고하라"는 명확한 제역 조건을 걸어 언어적 간섭을 차단합니다.


1.2.10 [ARCHITECT'S TOOLKIT] 나만의 토큰 카운터 구축하기

아키텍트는 감에 의존하지 않습니다. 그는 정밀한 계측기를 가집니다. 프로젝트 시작 전, 당신만의 토큰 카운터 파이프라인을 구축하세요.

  • 오픈 소스 도구: GPT 모델을 쓴다면 Tiktoken을, 클로드를 쓴다면 Anthropic의 전용 토크나이저를 활용하세요.
  • 실시간 모니터링: 프롬프트를 수정할 때마다 토큰 수가 어떻게 변하는지(특히 한국어의 경우)를 실시간으로 확인하는 습관이 필요합니다.
  • 임계치 알람: 컨텍스트 윈도우의 80%를 초과하는 순간 설계 오류로 간주하고, 즉시 '압축(Compression) 아키텍처'를 적용해야 합니다.

토큰은 돈이고, 시간이며, 곧 지능의 품질입니다. 이것을 숫자로 측정할 수 없는 사람은 결코 마스터가 될 수 없습니다.


1.2.11 토큰 압축의 예술: 요약(Summarization)과 벡터화

우리는 때로 수백만 토큰의 방대한 데이터를 다뤄야 합니다. 이때 아키텍트가 사용하는 필살기가 바로 '토큰 압축(Token Compression)'입니다.

  1. 시맨틱 압축: 의미를 보존하면서 불필요한 수식어를 70% 이상 걷어냅니다.
  2. 임베딩 벡터화: 텍스트 형태의 토큰이 아니라, 수치화된 벡터 데이터롬 보존하여 검색 효율을 극대화합니다. (이것이 바로 RAG 시스템의 핵심입니다.)
  3. 지능적 마스킹: 핵심 정보가 아닌 부분은 '...' 이나 '중략'으로 처리하여 AI의 어텐션 자원을 아낍니다.

1.2.12 [THEORY] 정보 엔트로피와 토큰 밀도

모든 프롬프트는 정보 엔트로피(Information Entropy)라는 물리 법칙의 지배를 받습니다. 엔트로피란 쉽게 말해 '불확실성의 정도'입니다.

  • 낮은 밀도의 프롬프트: "이것 좀 잘 부탁해요." 이 문장은 AI에게 수만 가지의 선택지를 줍니다. 엔트로피가 극도로 높은 상태죠. AI는 갈 길을 잃고 아무 곳이나(평균으로) 헤맵니다.
  • 높은 밀도의 프롬프트: "A 데이터를 B 라이브러리를 써서 C 결과로 출력해." 이 문장은 AI의 선택지를 최소화합니다. 엔트로피가 낮고 밀도가 높습니다.

마스터는 문장의 길이를 줄이는 것이 아니라, '불확실성을 줄이는 설계'에 집중합니다. 당신이 쓴 문장이 AI에게 단 하나의 경로만 허용한다면, 당신은 토큰의 물리학을 완전히 정복한 것입니다.

1.2.13 [CASE STUDY 3] 전문 분야에서의 토큰 정밀 설계

법률 아키텍트는 판례를 요약할 때 핵심 법조문이나 조항(예: '제32조 1항')을 토큰화의 핵심 기둥으로 삼습니다.

이때 아키텍트가 사용하는 기술은 '토큰 하이라이팅(Token Highlighting)'입니다.
- 중요한 용어 앞뒤에 특수 기호(예: ***핵심***)를 배치하여 어텐션 엔진이 해당 토큰들을 '무거운 질량'으로 인식하게 만듭니다.
- 이는 수많은 데이터 중에서도 특정 입자들이 중력장처럼 작용하여 주변의 지능을 끌어당기게 하는 고도의 물리 설계입니다.


1.2.14 [DEEP DIVE] 다국어 모델의 토큰 경제학: 한국어 비용 효율 극대화 전략

대부분의 거대 언어 모델(LLM)은 영어 데이터를 중심으로 학습되었습니다. 이로 인해 한국어는 영어에 비해 토큰 소모량이 2~3배 많고, 이는 곧 추론 비용의 상승컨텍스트 윈도우의 증발이라는 이중고를 낳습니다. 숙련된 아키텍트는 이를 극복하기 위해 '의미적 밀집화(Semantic Densitization)' 기술을 사용합니다.

1. 한자어(Sino-Korean)의 마법:
한국어에서 고유어보다 한자 기반의 명사형 단어가 토큰 효율이 높을 때가 많습니다. 예를 들어, "글을 짧게 줄여서 요약해 주세요"라고 쓰는 것보다 "핵심 요약(Focus: Summary)"이라고 명사 위주로 배치하는 것이 AI의 어텐션 스코어를 높이면서도 토큰은 절반 이하로 아끼는 길입니다.

2. 영어 키워드 하이브리드 전략:
의미적 무게가 큰 전문 용어는 (Term: Architecture)와 같이 영어 원어를 병기하거나 아예 영어로 대체하여 주입하세요. 영어 토큰은 '레고 블록'처럼 단단하게 뭉쳐 있어 AI가 문맥을 파악하는 데 훨씬 적은 에너지를 소모합니다.

3. 토큰 파편화(Fragmentation) 방지:
조사와 어미가 복잡한 한국어 문장은 AI의 뇌 속에서 수많은 파편으로 쪼개집니다. 이를 방지하기 위해 [지시: 맹목적 준수]와 같이 대괄호나 문장 부호를 활용하여 의미 단위를 강제로 묶어주세요. 흩어진 모래알 같은 토큰들을 하나의 벽돌로 만들어주는 아키텍처적 장치가 필요합니다.


1.2.15 [EPILOGUE] 숫자의 한계를 넘어 지능의 예술로

이제 당신은 문장을 쓰는 작가가 아닙니다. 당신은 토큰이라는 미세 입자를 다루는 물리학자입니다. 당신의 손끝에서 튀어나가는 토큰 하나하나가 AI의 신경망 속에서 어떤 파장을 일으키고, 어떤 결과물을 빚어내는지 이제는 보이기 시작했을 것입니다.

토큰의 경제학을 따지고, 입자의 효율을 극대화하며, 전자기적인 의망의 힘으로 벡터를 정렬시키는 과정. 이것이 바로 우리가 그토록 갈망하던 '내 말을 알아듣는 프롬프트'의 진짜 정체입니다.

자, 이제 기초 공사는 끝났습니다. 이제 이 입자들을 어떻게 쌓아 올리고, 어디에 빛(Attention)을 비출지 결정하러 떠나봅시다.


[WORKBOOK] 아키텍트의 토큰 다이어트 챌린지

Q1. [압축 훈련] 다음 문장에서 의미 손실 없이 토큰을 50% 이상 줄여보세요.

"사용자님, 제가 지금부터 아주 맛있는 김치찌개 레시피를 순서대로 하나씩 친절하게 알려드릴 테니 잘 확인해 보세요."

Q2. [한자어 변환] 다음 구어체 문장을 토큰 효율이 높은 '명사 중심' 문장으로 변환하세요.

"이 보고서의 핵심적인 내용들을 위주로 해서 아주 짧고 간결하게 요약을 해 주시면 감사하겠습니다."

Q3. [언어서 선택] 다음 상황에서 한국어보다 영어를 쓰는 것이 유리한 단어 3개를 찾아 영문으로 교체하세요. (예: 인공지능 -> AI)

"객체 지향 프로그래밍 아키텍처를 설계할 때 가장 중요한 요소는 무엇인가요"

Q4. [구분자 설계] 텍스트 덩어리인 아래 데이터를 AI가 한눈에 파악하도록 XML 태그를 활용해 구조화하세요.

고객이름 김철수, 상담내용 배송지연, 주문번호 2024-001, 요청사항 즉시환불

Q5. [트리거 삽입] AI의 추론 지능을 높이기 위해 문장 끝에 넣을 수 있는 가장 강력한 '트리거 토큰' 2가지를 적어보세요.


[1.2절 완결: 아키텍트의 최종 체크리스트]

  • [ ] 내 프롬프트에서 불필요한 미사여구와 인삿말을 완전히 제거했는가
  • [ ] 조사와 어미를 최소화하고 명사/동사 위주의 강력한 지시어를 사용했는가
  • [ ] XML 태그나 브라켓([])을 사용하여 정보의 경계를 물리적으로 구분했는가
  • [ ] 대용량 데이터를 다룰 때 슬라이딩 window나 재귀적 방식을 고려했는가
  • [ ] 한국어와 영어의 토큰 효율 차이를 이용한 적절한 단어 선택을 했는가
  • [ ] 벡터 공간에서 충돌하는 형용사(예: 친절하면서 냉정하게)를 사용하지 않았는가
  • [ ] 모델별 토크나이저의 특성에 맞는 최적의 입력 방식을 선택했는가
  • [ ] 트리거 토큰(예: Step-by-Step)을 적재적소에 배치했는가
  • [ ] 정보 엔트로피를 낮추기 위한 구체적인 제약 조건을 명시했는가