0Pricing
AI Prompt Engineering · 강의

구체성이 중요한 이유

모호한 프롬프트가 일반적인 출력을 만드는 방식과 정확성이 이를 개선하는 방법을 알아봅니다.

구체성이 중요한 이유은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

모호함의 문제

모호한 프롬프트를 보내면 인공지능은 빠진 세부 정보를 최선의 추측으로 채웁니다. 이러한 추측은 실제 의도가 아니라 통계적으로 가장 평균적인 해석을 바탕으로 합니다.

그 결과는 광범위한 재작성이 필요한 평범하고 기억에 남지 않는 출력입니다. 구체성은 인공지능 출력 품질을 개선하는 가장 강력한 단일 수단입니다.

모호한 프롬프트: 개에 대해 써 주세요

다음 프롬프트를 생각해 보세요. '개에 대해 무언가를 써 주세요.'

모델은 형식, 분량, 독자, 관점이 무엇인지 추측해야 합니다. 그래서 어린이용 백과사전 어디에나 들어갈 법한 안전하고 밋밋한 문단을 기본적으로 생성합니다.

이제 다음과 비교해 보세요. '골든 리트리버 강아지가 처음 해변에 간 날을 주제로 200단어 분량의 인스타그램 캡션을 작성해 주세요. 어조: 장난스럽고 감정적으로. 관련 해시태그 5개를 포함해 주세요.'

두 번째 프롬프트는 추측의 여지를 남기지 않습니다.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

vague = 'Write something about dogs.'
specific = (
    'Write a 200-word Instagram caption for a golden retriever puppy\'s '
    'first day at the beach. Tone: playful and emotional. '
    'End with 5 relevant hashtags.'
)

for label, prompt in [('VAGUE', vague), ('SPECIFIC', specific)]:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=300,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- {label} ---')
    print(response.content[0].text)
    print()

평범한 출력이 나오는 이유

모델은 수십억 개의 텍스트 예시를 바탕으로 학습되었습니다. 'X에 대해 써 주세요'라고 하면 학습 중 본 것 중 X에 관해 가장 흔한 유형의 텍스트를 생성합니다.

그 결과는 대체로 다음과 같습니다.

  • 백과사전식 어조
  • 중간 정도의 길이
  • 주요 관점을 모두 피상적으로 다룸
  • 뚜렷한 문체나 목적이 없음

구체적인 제약 조건은 이러한 기본값을 덮어쓰고 모델을 실제 필요에 맞게 이끕니다.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Default (vague) output
default_response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Write about coffee.'}]
)
print('DEFAULT OUTPUT (first 200 chars):')
print(default_response.choices[0].message.content[:200])
print()

# Constrained output
constrained_response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Write a 100-word product description for a single-origin Ethiopian pour-over coffee. '
            'Target audience: specialty coffee enthusiasts. '
            'Tone: sophisticated, sensory. Mention flavor notes: jasmine, blueberry, dark chocolate.'
        )
    }]
)
print('CONSTRAINED OUTPUT:')
print(constrained_response.choices[0].message.content)

구체성을 정하는 다섯 가지 기준

프롬프트를 작성할 때 다음 다섯 가지 기준을 구체적으로 정하세요.

  1. 형식 — 문단, 글머리 기호 목록, 표, JSON, 이메일
  2. 분량 — 단어 수, 문장 수, 항목 수
  3. 독자 — 이 출력을 읽거나 사용할 사람
  4. 어조 — 격식 있는, 편안한, 기술적인, 설득력 있는, 공감하는
  5. 목표 — 출력으로 달성하려는 것

항상 다섯 가지를 모두 지정할 필요는 없지만, 어느 하나라도 빠지면 모델이 잘못 추측할 여지가 생깁니다.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# All 5 dimensions specified
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=256,
    messages=[{
        'role': 'user',
        'content': (
            'Format: 3-bullet summary.\n'
            'Length: each bullet max 20 words.\n'
            'Audience: busy startup founders with no ML background.\n'
            'Tone: direct, no jargon.\n'
            'Goal: explain why fine-tuning an LLM is expensive.'
        )
    }]
)
print(response.content[0].text)

모호함과 구체성 비교: 이메일 요청

인공지능의 가장 흔한 작업 중 하나인 이메일 작성을 살펴보겠습니다.

모호한 요청: '고객에게 보낼 이메일을 작성해 주세요.'
모델은 고객, 주제, 관계, 목표, 어조를 알 수 없습니다.

구체적인 요청: '14일 연체된 B2B SaaS 고객(TechFlow 주식회사)을 위한 3문단 이메일을 작성해 주세요. 어조: 단호하지만 업무적으로 예의 바르게. 목표: 관계를 해치지 않으면서 결제를 촉구하는 것. 5일 기한이 포함된 구체적인 행동 요청을 넣어 주세요.'

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

specific_prompt = (
    'Write a 3-paragraph professional email to a B2B SaaS client (TechFlow Inc) '
    'who has a payment 14 days overdue. '
    'Tone: firm but courteous — preserve the business relationship. '
    'Include: acknowledgment of potential oversight, the overdue amount placeholder [AMOUNT], '
    'a payment link placeholder [LINK], and a 5-day deadline. '
    'Subject line included.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': specific_prompt}]
)
print(response.choices[0].message.content)

모호함과 구체성: 요약

단순해 보이는 요약조차도 구체성을 더하면 큰 효과를 얻습니다.

모호한 요청: '이 글을 요약해 주세요.'

구체적인 요청: '이 글을 정확히 3문장으로 요약해 주세요. 첫 번째 문장에는 주요 발견을, 두 번째 문장에는 사용된 방법론을, 세 번째 문장에는 실무자에게 가장 중요한 시사점을 담아 주세요.'

구조를 구체적으로 지정한 버전은 바로 사용할 수 있지만, 모호한 버전은 형식을 다시 지정해야 합니다.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

article = (
    'Researchers at MIT have developed a new neural network architecture that achieves '
    '94% accuracy on medical image diagnosis, outperforming human radiologists by 7%. '
    'The model was trained on 2.4 million anonymized X-ray images and uses a novel '
    'attention mechanism that highlights regions of interest for clinician review. '
    'The team expects FDA clearance by Q3 2025 for use as a diagnostic aid, not replacement.'
)

specific_prompt = (
    f'Summarize the following article in exactly 3 sentences:\n'
    f'Sentence 1: main finding.\n'
    f'Sentence 2: methodology.\n'
    f'Sentence 3: key implication for clinicians.\n\n'
    f'Article:\n{article}'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=200,
    messages=[{'role': 'user', 'content': specific_prompt}]
)
print(response.content[0].text)

모호함과 구체성: 아이디어 발상

아이디어 발상 프롬프트에서는 모호함의 대가가 가장 큽니다. 뻔하고 서로 겹치는 아이디어 목록을 받게 되기 때문입니다.

모호한 요청: '제 앱에 대한 아이디어를 주세요.'

구체적인 요청: '25~35세 도시 직장인을 대상으로 하는 B2C 명상 앱의 독창적인 수익화 전략 10가지를 제안해 주세요. 구독 모델은 이미 하나를 사용하고 있으므로 제외해 주세요. 각 아이디어는 한 문장으로 작성하고, 위험도가 높은 순서에서 낮은 순서로 정렬해 주세요.'

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

specific_brainstorm = (
    'Generate 10 unique monetization strategies for a B2C meditation app '
    'targeting 25-35 year-old urban professionals. '
    'Exclude: subscription models (already implemented). '
    'Each strategy in one sentence. '
    'Order from most to least conventional. '
    'Label each with: CONVENTIONAL / EXPERIMENTAL / BOLD.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': specific_brainstorm}]
)
print(response.choices[0].message.content)

프롬프트에 예시 사용하기

가장 강력한 구체화 기법 중 하나는 원하는 출력의 예시를 프롬프트에 직접 포함하는 것입니다. 이를 몇 가지 예시를 활용하는 프롬프트 작성, 즉 퓨샷 프롬프팅이라고 합니다.

형식을 설명하는 대신 보여 주세요. 모델은 실제 예시를 통해 구조, 분량, 어조를 즉시 이해합니다. 대개 글로 설명하는 것보다 더 명확하게 이해합니다.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

example_prompt = '''
Generate 3 product taglines in this style:

Example 1: Notion — 'The all-in-one workspace where better thinking happens.'
Example 2: Figma — 'Design together. Ship faster.'
Example 3: Linear — 'The issue tracker you'll actually enjoy using.'

Product: A CLI tool that automatically writes Git commit messages by analyzing your diff.
Taglines:
'''

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=200,
    messages=[{'role': 'user', 'content': example_prompt}]
)
print(response.content[0].text)

하지 말아야 할 것(NOT) 지정하기

부정적 제약은 긍정적 제약만큼 강력합니다. 모델에 피해야 할 것을 알려 주면 흔히 발생하는 원치 않는 패턴을 방지하는 데 도움이 됩니다.

  • '글머리 기호를 사용하지 마세요'
  • '나라는 단어로 시작하지 마세요'
  • '신용카드가 필요한 해결책은 제안하지 마세요'
  • '수동태를 사용하지 마세요'

최대한 통제하려면 긍정적인 지시와 부정적 제약을 함께 사용하세요.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {
            'role': 'system',
            'content': (
                'You are a copywriter. Rules:\n'
                '- NEVER start a sentence with "Additionally" or "Furthermore"\n'
                '- NEVER use the phrase "In conclusion"\n'
                '- NEVER use passive voice\n'
                '- NEVER use bullet points or lists'
            )
        },
        {
            'role': 'user',
            'content': 'Write a 100-word about us section for a craft bakery called Morning Light.'
        }
    ]
)
print(response.choices[0].message.content)

반복적 구체화

첫 시도부터 완벽한 프롬프트를 작성할 필요는 없습니다. 반복적 개선은 유효한 전략입니다.

  1. 적당히 구체적인 프롬프트로 시작합니다
  2. 출력에서 잘못되었거나 빠진 부분을 찾습니다
  3. 그 공백을 해결할 제약 조건을 추가합니다
  4. 출력이 자신의 기준을 충족할 때까지 반복합니다

각 반복 과정에서 모델에 어떤 제약 조건이 필요한지 배우게 됩니다. 가장 좋은 프롬프트는 나중에 다시 사용할 수 있도록 템플릿으로 저장하세요.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Iteration 1: first attempt
v1 = 'Write a LinkedIn post about my new job.'

# Iteration 2: add specifics based on what was missing
v2 = (
    'Write a LinkedIn post (max 150 words) announcing I just joined Stripe as a Senior Engineer. '
    'Tone: genuine excitement, not bragging. '
    'Include: what drew me to the role, one thing I plan to focus on. '
    'No cliches like "excited to announce" or "humbled to share". '
    'End with a genuine question for my network.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{'role': 'user', 'content': v2}]
)
print(response.content[0].text)

구체성 체크리스트 만들기

프롬프트를 보내기 전에 다음과 같은 머릿속 체크리스트를 확인하세요.

  • 출력 형식을 지정했나요? (문단 / 목록 / JSON / 표)
  • 분량을 지정했나요? (단어 수 / 항목 수)
  • 대상 독자를 지정했나요? (누가 읽는지)
  • 어조를 지정했나요? (격식 있는 / 편안한 / 기술적인)
  • 목표를 지정했나요? (이 출력물을 어떤 용도로 사용할지)
  • 제약 조건을 포함했나요? (피해야 할 것)
  • 의도한 바를 보여 줄 예시를 추가할 수 있나요?
# Prompt template with all specificity dimensions filled
prompt_template = '''
Task: {task_description}
Format: {format}
Length: {length}
Audience: {audience}
Tone: {tone}
Goal: {goal}
Do NOT: {constraints}
Example of good output: {example}
'''

filled = prompt_template.format(
    task_description='Explain what an API is',
    format='3 short paragraphs, plain prose — no bullet points',
    length='150 words maximum',
    audience='Non-technical business stakeholders',
    tone='Friendly, analogy-based, jargon-free',
    goal='Prepare them for a meeting with the engineering team',
    constraints='Do not use the words "endpoint", "REST", or "HTTP"',
    example='An API is like a waiter in a restaurant — it takes your order...'
)
print(filled)

지식 확인

마케팅 관리자가 인공지능에 '소셜 미디어 게시물을 작성해 주세요.'라고 요청했습니다. 인공지능은 회사에 관한 뻔한 두 문장짜리 게시물을 반환했습니다. 유용한 결과를 얻기 위한 BEST 재작성은 무엇입니까?

구체성이 중요한 이유 — 복습

구체성은 효과적인 프롬프트 작성의 기반입니다. 핵심 내용은 다음과 같습니다.

  • 모호한 프롬프트는 통계적으로 평균적이고 일반적인 출력을 만듭니다
  • 모든 프롬프트에서 형식, 분량, 대상 독자, 어조, 목표를 지정하세요
  • 원치 않는 패턴을 방지하려면 부정적 제약을 사용하세요
  • 원하는 출력 스타일의 예시를 포함하세요
  • 반복적 개선을 활용하세요. 어떤 프롬프트도 첫 시도부터 완벽할 필요는 없습니다
  • 성과가 좋은 프롬프트는 재사용할 수 있도록 템플릿으로 저장하세요

더 구체적으로 작성할수록 출력물을 다시 작성하는 데 쓰는 시간이 줄어듭니다.

자주 묻는 질문

“구체성이 중요한 이유” 강의는 무료인가요?

네 — “구체성이 중요한 이유” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 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개 중 1번째 강의입니다.

“구체성이 중요한 이유” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 구체성이 중요한 이유
  2. 프롬프트에서 모호성 제거하기
  3. 구체적인 세부 정보 추가하기
  4. 모호한 프롬프트와 구체적인 프롬프트 비교
← AI Prompt Engineering(으)로 돌아가기