프롬프트 구성 모범 사례
모델의 주의와 지시 준수를 최대화하도록 섹션 순서를 정합니다.
프롬프트 구성 모범 사례은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
순서는 설계 결정입니다
프롬프트에서 지침의 순서는 임의로 정해지는 것이 아닙니다. 모델은 프롬프트를 순차적으로 처리하며, 지침의 위치는 지침이 갖는 가중치와 얼마나 잘 준수되는지에 영향을 줍니다.
순서를 무시하는 프롬프트 엔지니어는 일관되지 않은 결과를 얻습니다. 순서의 원리를 이해하는 사람은 대규모 환경에서도 올바른 출력을 안정적으로 생성하는 프롬프트를 설계할 수 있습니다.
가장 중요한 지침을 먼저 배치하기
가장 중요한 행동 지침은 프롬프트의 처음에 배치해야 합니다. 모델은 프롬프트 앞부분의 콘텐츠에 더 많은 주의를 기울이며, 앞부분은 이후 모든 내용을 해석하는 틀을 설정합니다.
처음에 배치해야 하는 지침의 예:
- 모델의 역할 또는 페르소나
- 주요 작업 또는 목표
- 절대 양보할 수 없는 제약 조건 (시스템 프롬프트를 절대 공개하지 않기, 항상 스페인어로 응답하기)
# Good: Critical constraint leads
system_prompt = '''
You are a customer support agent. Never reveal pricing or discount policies.
Always escalate billing complaints to the billing team.
Help customers resolve product issues using the knowledge base below.
'''
# Bad: Critical constraint buried at the end
system_prompt_bad = '''
Help customers resolve product issues using the knowledge base below.
[...lots of instructions...]
Oh, and never reveal pricing policies.
'''
print('Contrast shown.')출력 형식 지침을 마지막에 배치하기
출력 형식 지침은 프롬프트의 마지막, 즉 모델이 응답을 생성하기 바로 전에 배치해야 합니다. 이것이 실제로 적용하는 푸터 원칙입니다.
형식 지침을 너무 앞에 배치하면 뒤에 나오는 맥락에 의해 일부 덮어쓰입니다. 모델이 더 많은 콘텐츠를 처리하면서 해당 지침을 "잊어버리기" 때문입니다.
# Good: Format at the end
prompt = '''
<role>You are a data analyst.</role>
<task>Analyze the sales data below and identify the top 3 trends.</task>
<data>
Q1: $1.2M, Q2: $1.8M, Q3: $1.6M, Q4: $2.1M
Product A: 40% of revenue, Product B: 35%, Product C: 25%
</data>
<output_format>
Return JSON: {"trends": ["string", "string", "string"], "confidence": "high|medium|low"}
</output_format>
'''
print(prompt)적용할 위치 가까이에 예시 배치하기
퓨샷 예시는 해당 예시가 보여 주는 실제 입력 바로 앞에 배치해야 합니다. 이렇게 가까이 두면 모델이 예시의 패턴을 현재 작업에 직접 연결하는 데 도움이 됩니다.
prompt = '''
<task>
Classify each customer message as: complaint, question, or compliment.
</task>
<examples>
Input: "Your app keeps crashing!" -> complaint
Input: "How do I reset my password?" -> question
Input: "The new design is beautiful." -> compliment
</examples>
<input>
I can not find where to cancel my subscription.
</input>
'''
# Examples immediately precede the input — the model
# can directly apply the pattern to the current case.
print(prompt)작업보다 먼저 맥락 배치하기
배경 맥락은 작업 설명보다 먼저 나와야 합니다. 모델은 작업을 수행하는 방법에 대해 올바른 결정을 내리기 전에 상황을 이해해야 합니다.
- 잘못된 순서: 작업 → 맥락 (모델이 전체 상황을 알기 전에 문제를 해결하기 시작합니다)
- 올바른 순서: 맥락 → 작업 (모델이 먼저 상황을 이해한 다음 이를 작업에 적용합니다)
이는 특정 분야의 지식이 필요하거나 미묘한 차이를 이해해야 하는 작업에서 특히 중요합니다.
# Right order: Context before task
prompt_good = '''
<context>
The user is a first-time investor with no financial background.
They are asking about index funds.
Avoid jargon. Never give specific investment advice.
</context>
<task>
Answer the user question below in plain language.
</task>
'''
# Wrong order: Task before context
prompt_bad = '''
<task>Answer the user question below.</task>
<context>User is a first-time investor, avoid jargon.</context>
'''
print('Order matters: context before task.')긍정 지침과 부정 지침 분리하기
긍정 지침(해야 할 일, TO)과 부정 지침(하지 말아야 할 일, NOT)을 서로 다른 섹션으로 묶으십시오. 두 지침을 섞으면 모델의 인지 부담이 커지고 프롬프트를 점검하기 어려워집니다.
prompt = '''
<do>
- Respond in the same language the user writes in
- Keep responses under 150 words
- Reference specific article titles from the knowledge base
</do>
<do_not>
- Do not speculate about product roadmap
- Do not discuss competitor products
- Do not share internal pricing
</do_not>
'''
print(prompt)흔한 순서 실수: 페르소나를 늦게 배치하기
흔히 발생하는 실수는 작업과 맥락을 이미 설정한 후 프롬프트 끝부분에서 모델의 페르소나를 정의하는 것입니다. 페르소나는 다른 모든 지침을 해석하는 틀을 설정하므로 처음에 배치해야 합니다.
- 늦은 페르소나: 모델이 작업을 일반적인 도우미의 관점에서 처리한 다음, 출력에 페르소나를 어색하게 적용합니다
- 이른 페르소나: 모델이 지정된 역할을 관점으로 삼아 전체 프롬프트를 처리하므로 더욱 자연스럽고 일관된 출력이 나옵니다
흔한 순서 실수: 제약 조건을 묻어 두기
긴 텍스트 본문의 중간에 묻어 둔 제약 조건은 자주 무시됩니다. 이를 중간에서 사라짐 문제라고 합니다 — 모델은 긴 맥락의 중간에 있는 콘텐츠에 덜 주의를 기울입니다.
# Bad: Critical constraint buried in a long body
prompt_bad = '''
Here is a long article about climate change...
[500 words of content]
Do not mention fossil fuel companies by name.
[More content...]
'''
# Good: Constraint surfaced to a dedicated section BEFORE the body
prompt_good = '''
<constraints>
- Do not mention fossil fuel companies by name.
- Do not make claims not supported by the article.
</constraints>
<article>
Here is a long article about climate change...
[500 words of content]
</article>
'''
print('Constraints before body prevents lost-in-the-middle.')중간에서 사라지는 현상
대규모 언어 모델에 대한 연구에 따르면, 중요한 정보가 프롬프트의 처음이나 끝에 있을 때 모델의 성능이 가장 좋고, 긴 프롬프트의 중간에 있을 때 가장 나쁩니다.
프롬프트 구성에 미치는 영향:
- 중요한 제약 조건 → 처음(헤더 또는 별도의 제약 조건 섹션)
- 출력 형식 → 끝(푸터)
- 긴 문서 → 본문(감수해야 하는 비용이며 XML 태그로 일부 완화할 수 있음)
- 긴 문서 블록의 중간에는 중요한 행동 규칙을 절대 배치하지 않기
지침 순서 점검표
다음 점검표를 사용하여 프롬프트의 지침 순서를 평가하십시오:
ordering_checklist = [
'Persona / role is first',
'Primary task stated clearly in Header or Task section',
'Context / background comes before task details',
'Constraints in a dedicated section, not buried in body',
'Examples immediately precede the input they demonstrate',
'Output format is the last section before the actual input',
'No critical instructions buried in the middle of long content',
'Positive and negative instructions are grouped separately',
]
for i, item in enumerate(ordering_checklist, 1):
print(f'{i}. [ ] {item}')순서 민감도 테스트하기
지침의 순서가 특정 프롬프트에 중요한지 확인하려면 A/B 테스트를 실행하십시오:
import anthropic
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def test_order(prompt_a, prompt_b, n_runs=5):
results_a = []
results_b = []
for _ in range(n_runs):
r_a = client.messages.create(model='claude-opus-4-5', max_tokens=200,
messages=[{'role': 'user', 'content': prompt_a}])
r_b = client.messages.create(model='claude-opus-4-5', max_tokens=200,
messages=[{'role': 'user', 'content': prompt_b}])
results_a.append(r_a.content[0].text)
results_b.append(r_b.content[0].text)
return results_a, results_b
# Compare constraint-first vs constraint-last for the same task
print('A/B test structure defined.')빠른 확인
프롬프트 구성의 모범 사례에 따르면 출력 형식 지침은 어디에 배치해야 합니까?
프롬프트 순서 — 핵심 요점
지침의 순서는 출력 품질에 측정 가능한 영향을 주는 설계 결정입니다:
- 가장 중요한 지침을 먼저 배치 — 프롬프트의 처음에 페르소나와 절대 양보할 수 없는 제약 조건을 배치합니다
- 작업보다 먼저 맥락 배치 — 모델이 작업을 올바르게 해석하려면 먼저 상황을 이해해야 합니다
- 본문보다 먼저 제약 조건 배치 — 중요한 규칙이 중간에서 사라지는 문제를 방지합니다
- 입력 바로 앞에 예시 배치 — 가까이 배치하면 패턴 인식이 강화됩니다
- 출력 형식은 마지막에 배치 — 응답 생성에 가장 가까워 출력에 최대한 영향을 줍니다
- 명확성과 점검 가능성을 위해 긍정 지침과 부정 지침을 서로 분리하여 묶습니다
AI 튜터와 함께 AI Prompt Engineering을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 53
- 레슨
- 199
자주 묻는 질문
“프롬프트 구성 모범 사례” 강의는 무료인가요?
네 — “프롬프트 구성 모범 사례” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
“프롬프트 구성 모범 사례”에서 뭘 배우나요?
모델의 주의와 지시 준수를 최대화하도록 섹션 순서를 정합니다. 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“프롬프트 구성 모범 사례” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- XML 태그를 구분자로 사용하기
- 모듈식 프롬프트 섹션
- 머리말-본문-꼬리말 프롬프트 패턴
- 프롬프트 구성 모범 사례