AI Prompt Engineering · 강의

사용 사례에 맞는 매개변수 선택

사실 기반 질의응답, 창작 글쓰기, 코드, 대화에 권장되는 설정을 알아봅니다.

레슨 4/413개 단계

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

매개변수 결정 프레임워크

샘플링 매개변수 선택은 추측으로 결정하는 일이 아니라 작업 요구 사항에 기반한 논리를 따릅니다. 적절한 구성을 결정하는 핵심 차원은 두 가지입니다:

  1. 출력 정확도: 출력이 정확하고 예측 가능해야 하는 정도가 얼마나 중요합니까?
  2. 출력 다양성: 출력이 달라지고 다양한 가능성을 탐색해야 하는 정도가 얼마나 중요합니까?

높은 정확도 → 낮은 온도입니다. 높은 다양성 → 높은 온도입니다. 대부분의 작업은 이 두 극단 사이 어딘가에 해당합니다.

사실 기반 질의응답: 정확성이 가장 중요함

사실 기반 질문에 답하는 작업에는 일반적으로 정답이 하나뿐입니다. 무작위성이 개입될 때마다 오답 가능성이 높아집니다. 다음과 같이 설정하십시오:

  • 온도 = 0: 탐욕적 디코딩, 완전히 결정적
  • 상위 p = 1.0: 제한하지 않고 그대로 둡니다. 온도=0에서는 상위 p가 영향을 미치지 않습니다

이렇게 하면 모델이 항상 가장 확신하는 답변을 선택하므로, 정답일 가능성이 가장 높아집니다.

import openai
client = openai.OpenAI(api_key='sk-...')

# Factual Q&A configuration
def factual_qa(question):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Answer factual questions concisely and accurately.'},
            {'role': 'user', 'content': question}
        ],
        temperature=0,
        top_p=1.0
    )
    return resp.choices[0].message.content

answer = factual_qa('What is the boiling point of water at sea level?')
print(answer)  # Always: '100 degrees Celsius (212 degrees Fahrenheit).'

코드 생성: 탐욕적 디코딩에 가깝게

코드는 문법적으로 올바르고 의미상 정확해야 합니다. 무작위성은 문법 오류, 잘못된 변수 이름 또는 잘못된 논리를 일으킵니다. 다음과 같이 설정하십시오:

  • 온도 = 0–0.2: 거의 탐욕적입니다 — 약간의 변형은 허용하지만 올바른 토큰 선택을 강하게 선호합니다
  • 상위 p = 0.95: 문법 오류를 일으킬 수 있는 확률 분포의 극단적인 꼬리 토큰을 제거합니다
# Code generation configuration
def generate_code(task):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are an expert Python programmer. Write clean, correct code.'},
            {'role': 'user', 'content': task}
        ],
        temperature=0.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

code = generate_code('Write a Python function that merges two sorted lists.')
print(code)

요약: 중간 수준 설정

요약에는 정확성이 필요합니다(사실을 왜곡하지 않아야 함). 하지만 약간의 변형이 있으면 도움이 됩니다(실행할 때마다 서로 다른 측면을 강조할 수 있음). 다음과 같이 설정하십시오:

  • 온도 = 0.3–0.5: 가벼운 무작위성이 자연스러운 표현을 유지합니다
  • 상위 p = 1.0: 온도가 낮을 때는 누클리어스 제한이 필요하지 않습니다
# Summarization configuration
def summarize(text):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'Summarize the following text in 3 sentences.'},
            {'role': 'user', 'content': text}
        ],
        temperature=0.4,
        top_p=1.0
    )
    return resp.choices[0].message.content

summary = summarize(long_article)
print(summary)

대화형 채팅: 자연스러운 다양성

채팅 응답은 자연스러운 다양성의 이점을 얻습니다. 같은 질문에 항상 정확히 같은 표현으로 답할 필요는 없습니다. 무작위성이 너무 크면 응답의 일관성이 떨어집니다. 다음과 같이 설정하십시오:

  • 온도 = 0.7–0.9: 자연스럽고 다양한 대화
  • 상위 p = 0.9–0.95: 부자연스러운 표현을 만들어 내는 가능성이 낮은 꼬리 토큰을 제거합니다
# Chat configuration
def chat_response(user_message, history):
    messages = history + [{'role': 'user', 'content': user_message}]
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a friendly, helpful assistant.'},
            *messages
        ],
        temperature=0.8,
        top_p=0.9
    )
    reply = resp.choices[0].message.content
    history.append({'role': 'user', 'content': user_message})
    history.append({'role': 'assistant', 'content': reply})
    return reply, history

창작 글쓰기: 높은 다양성

창작 글쓰기에서는 독창성과 예측할 수 없음이 중요합니다. 낮은 온도에서는 진부하고 예측 가능한 출력이 나옵니다. 높은 온도에서는 생생하고 예상 밖의 선택이 가능해지지만, 너무 높으면 일관성이 떨어집니다. 다음과 같이 설정하십시오:

  • 온도 = 0.9–1.2: 다양한 어휘와 쉽게 예상할 수 없는 단어 선택
  • 상위 p = 0.95: 폭넓은 탐색을 허용하면서 일관성을 잃게 하는 꼬리 토큰은 방지합니다
# Creative writing configuration
def write_story_opening(prompt):
    resp = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a creative fiction writer. Write vivid, original prose.'},
            {'role': 'user', 'content': f'Write a story opening for: {prompt}'}
        ],
        temperature=1.1,
        top_p=0.95
    )
    return resp.choices[0].message.content

opening = write_story_opening('A detective discovers her partner is the killer.')
print(opening)

브레인스토밍과 아이디어 발상

브레인스토밍의 목표는 비정상적이거나 예상 밖의 아이디어까지 포함해 아이디어의 다양성을 최대화하는 것입니다. 실용적인 범위에서 가장 높은 온도를 사용하십시오:

  • 온도 = 1.0–1.5: 아이디어 공간을 폭넓게 탐색
  • 상위 p = 0.95–1.0: 최소한으로 제한

여러 번 실행하여 모든 출력을 수집한 다음 최고의 아이디어를 수동으로 선별하십시오. 브레인스토밍 프롬프트에는 다양성을 명시적으로 요청하는 내용이 도움이 됩니다. 예: '특이한 방법도 포함하여 서로 다른 접근법 10가지를 제시하십시오.'

# Brainstorming: run multiple times for variety
def brainstorm(topic, n_runs=5):
    ideas = []
    for _ in range(n_runs):
        resp = client.chat.completions.create(
            model='gpt-4o',
            messages=[
                {'role': 'system', 'content': 'Generate creative, diverse ideas. Include unusual approaches.'},
                {'role': 'user', 'content': f'Give me 3 ideas for: {topic}'}
            ],
            temperature=1.3,
            top_p=0.95
        )
        ideas.append(resp.choices[0].message.content)
    return ideas

all_ideas = brainstorm('reducing customer churn')

매개변수 민감도 테스트

매개변수를 확정하기 전에 매개변수 민감도 테스트를 실행하십시오. 프롬프트를 고정하고 한 번에 하나의 매개변수만 변경하면서 각 설정에서 출력 품질을 평가합니다.

def sensitivity_test(prompt, evaluator, temperatures, n_samples=5):
    results = {}
    for temp in temperatures:
        scores = []
        for _ in range(n_samples):
            resp = client.chat.completions.create(
                model='gpt-4o',
                messages=[{'role': 'user', 'content': prompt}],
                temperature=temp
            )
            score = evaluator(resp.choices[0].message.content)
            scores.append(score)
        results[temp] = sum(scores) / len(scores)

    for temp, score in sorted(results.items()):
        print(f'T={temp}: avg score = {score:.2f}')
    best_temp = max(results, key=results.get)
    print(f'Best temperature: {best_temp}')
    return best_temp

기본값을 그대로 사용할 때

모든 애플리케이션에 사용자 지정 매개변수가 필요한 것은 아닙니다. 다음과 같은 경우에는 기본값을 그대로 두십시오:

  • 사용 사례가 일반적인 채팅인 경우 — 대부분의 API에서 기본 온도(1.0)가 잘 조정되어 있습니다
  • 프로토타입을 만드는 중이라 아직 적절한 설정을 모르는 경우
  • 작업이 정확성과 창의성 사이에서 균형을 이루는 경우(예: 이메일 작성)

경험에 따른 원칙은 다음과 같습니다. 테스트에서 기본 동작이 측정 가능한 품질 문제를 일으킬 때만 매개변수를 사용자 지정하십시오. 성급한 매개변수 조정은 측정 가능한 이점 없이 복잡성만 높입니다.

# Defaults are often correct
default_resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Draft a professional email declining a meeting.'}]
    # No temperature or top_p specified — API defaults apply
    # OpenAI default: temperature=1, top_p=1
)
print(default_resp.choices[0].message.content)

빠른 참조표

사용 사례별 권장 설정 요약표입니다:

PARAMETER_PRESETS = {
    # task: (temperature, top_p, notes)
    'factual_qa':        (0.0, 1.0, 'greedy, max accuracy'),
    'classification':    (0.0, 1.0, 'deterministic labels'),
    'code_generation':   (0.1, 0.95, 'near-greedy, avoid tail tokens'),
    'data_extraction':   (0.2, 1.0, 'slight variation for robustness'),
    'summarization':     (0.4, 1.0, 'preserve facts, vary phrasing'),
    'translation':       (0.3, 1.0, 'accurate but natural'),
    'chat':              (0.8, 0.9, 'natural conversation'),
    'email_drafting':    (0.7, 0.9, 'professional but varied'),
    'creative_writing':  (1.1, 0.95, 'vivid, original'),
    'brainstorming':     (1.3, 0.95, 'maximum diversity'),
}

for task, (temp, top_p, notes) in PARAMETER_PRESETS.items():
    print(f'{task:22} temp={temp}, top_p={top_p} | {notes}')

빈도 및 존재 페널티

온도와 상위 p를 보완하는 두 가지 추가 매개변수가 있습니다:

  • 빈도 페널티 (0–2): 지금까지 출력에 나타난 횟수에 비례하여 토큰의 확률을 낮춥니다 — 단어 반복을 방지합니다
  • 존재 페널티 (0–2): 한 번이라도 나타난 모든 토큰의 확률을 낮춥니다 — 주제의 다양성을 높입니다

창작 글쓰기에서는 온도를 바꾸지 않고 반복되는 단어 선택을 줄이려면 빈도 페널티를 0.5로 추가하십시오.

resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Write a paragraph about coffee.'}],
    temperature=1.0,
    top_p=0.95,
    frequency_penalty=0.5,  # discourage repeating the same words
    presence_penalty=0.3    # encourage introducing new topics/aspects
)
print(resp.choices[0].message.content)

이해도 확인

실서비스에서 실행할 Python 코드를 생성하는 작업에는 어떤 매개변수 구성이 가장 적절합니까?

복습: 샘플링 매개변수 선택

정확도와 다양성에 대한 요구 사항에 맞춰 매개변수를 선택하십시오:

  • 사실 기반/코드: 온도=0–0.2, 상위 p=0.95 — 정확성이 우선입니다
  • 요약: 온도=0.3–0.5 — 균형
  • 채팅: 온도=0.7–0.9, 상위 p=0.9 — 자연스러운 다양성
  • 창작: 온도=0.9–1.2, 상위 p=0.95 — 다양성
  • 브레인스토밍: 온도=1.3, 상위 p=0.95 — 최대한 폭넓은 탐색

매개변수 민감도 테스트를 실행하십시오. 품질 문제가 관찰되지 않으면 기본값을 그대로 두십시오. 반복 문제가 있으면 빈도 페널티를 추가하십시오. 이것으로 19과정을 마칩니다. 다음 과정은 프롬프트 테스트와 회귀입니다.

무료로 시작

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. LLM에서 Temperature란 무엇인가요?
  2. Top-p 핵 샘플링
  3. Top-k 샘플링
  4. 사용 사례에 맞는 매개변수 선택
← AI Prompt Engineering(으)로 돌아가기