강좌
65개 강의 중 16번째 · Claude with Amazon Bedrock프롬프트 엔지니어링
Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Not nowSign 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) 구현하기와 같은 프롬프트 엔지니어링 기법을 체계적으로 적용할 수 있습니다. 각 기법은 평가 점수를 향상시켜야 하며, 목표를 향한 측정 가능한 진전을 제공해야 합니다.