Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

프롬프트 엔지니어링은 작성한 프롬프트를 개선하여 더 신뢰할 수 있고 더 높은 품질의 출력을 얻는 것에 관한 것입니다. 이 과정은 초기 프롬프트를 작성하고, 성능을 평가한 다음, 단계별로 엔지니어링 기법을 체계적으로 적용하여 개선하는 것을 포함합니다.

반복적 개선 프로세스

이 접근 방식은 명확한 순환을 따릅니다: 목표를 설정하고, 초기 프롬프트를 작성하고, 이를 평가하고, 프롬프트 엔지니어링 기법을 적용한 다음, 더 나은 성능을 확인하기 위해 재평가합니다. 이 순환은 프롬프트를 다듬어가면서 반복됩니다.

이 튜토리얼 시리즈에서는 실용적인 예제를 다룰 것입니다: 운동선수의 키, 체중, 신체적 목표, 식이 제한 사항을 기반으로 하루 식단 계획을 생성하는 프롬프트를 만드는 것입니다.

평가 파이프라인 설정하기

이 평가는 이전 모듈의 파이프라인을 개선한 버전을 사용하며, 데이터셋 생성과 모델 채점을 처리하는 PromptEvaluator 클래스로 감싸져 있습니다. 이 클래스는 평가 프로세스를 가속화하기 위해 동시성을 지원합니다:

python
evaluator = PromptEvaluator(max_concurrent_tasks=5)

속도 제한 오류를 피하기 위해 낮은 동시성 값(예: 3)으로 시작하세요. API 할당량에 따라 이 값을 조정할 수 있습니다.

테스트 데이터 생성하기

generate_dataset 메서드는 프롬프트를 위한 테스트 케이스를 생성합니다. 다음을 지정해야 합니다:

  • 프롬프트가 수행해야 할 작업을 설명하는 작업 설명
  • 프롬프트가 필요로 하는 입력에 대한 명세
  • 생성할 테스트 케이스의 수

식단 계획 예제의 경우:

python
dataset = evaluator.generate_dataset(
    task_description="Write a compact, concise 1 day meal plan for a single athlete",
    prompt_inputs_spec={
        "height": "Athlete's height in cm",
        "weight": "Athlete's weight in kg", 
        "goal": "Goal of the athlete",
        "restrictions": "Dietary restrictions of the athlete"
    },
    num_cases=3
)

초기 프롬프트 작성하기

기준선을 설정하기 위해 단순하고 소박한 프롬프트로 시작하세요. run_prompt 함수는 테스트 케이스 입력을 받아 모델의 응답을 반환해야 합니다:

python
def run_prompt(prompt_inputs):
    prompt = f"""
    What should this person eat?
    
    - Height: {prompt_inputs["height"]}
    - Weight: {prompt_inputs["weight"]}
    - Goal: {prompt_inputs["goal"]}
    - Dietary restrictions: {prompt_inputs["restrictions"]}
    """
    
    messages = []
    add_user_message(messages, prompt)
    return chat(messages)

평가 실행하기

평가 프로세스는 프롬프트의 출력을 예상 기준과 비교합니다. 채점을 안내하기 위해 추가 기준을 더할 수 있습니다:

python
results = evaluator.run_evaluation(
    run_prompt_function=run_prompt,
    dataset_file="dataset.json",
    extra_criteria="""
    The output should include:
    - Daily caloric total
    - Macronutrient breakdown  
    - Meals with exact foods, portions, and timing
    """
)

결과 분석하기

평가는 브라우저에서 열 수 있는 output.html 파일을 생성합니다. 이 보고서는 각 테스트 케이스에 대한 상세한 결과를 보여주며, 점수, 근거, 그리고 프롬프트가 생성한 실제 출력을 포함합니다.

낮은 초기 점수에 낙담하지 마세요 - 이는 예상된 결과입니다! 이 예제의 초기 프롬프트는 10점 중 2.3점만 받았지만, 이는 개선해 나갈 명확한 기준선을 제공합니다.

다음 단계

기준선을 설정했으니, 이제 더 구체적으로 작성하기, 출력 형식 요구사항 추가하기, 구조화된 프롬프트 사용하기, 다중 예시(multi-shot) 구현하기와 같은 프롬프트 엔지니어링 기법을 체계적으로 적용할 수 있습니다. 각 기법은 평가 점수를 향상시켜야 하며, 목표를 향한 측정 가능한 진전을 제공해야 합니다.