강좌
65개 강의 중 13번째 · 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

이제 평가 데이터셋이 준비되었으니, 핵심 평가 파이프라인을 구축할 차례입니다. 이 작업은 각 테스트 케이스를 가져와 프롬프트와 병합하고, Claude에 전달한 다음, 결과를 채점하는 과정을 포함합니다.

평가 프로세스는 명확한 워크플로우를 따릅니다: 테스트 케이스 데이터셋을 가져와 각각을 프롬프트 템플릿과 결합하고, 처리를 위해 Claude에 전송한 다음, 그레이더 시스템을 사용하여 출력을 평가합니다.

핵심 함수 구축하기

평가 파이프라인은 각각 특정한 역할을 담당하는 세 가지 주요 함수로 구성됩니다. 가장 간단한 함수부터 시작해 보겠습니다 - 개별 프롬프트 실행을 처리하는 함수입니다.

run_prompt 함수

이 함수는 테스트 케이스를 가져와 프롬프트 템플릿과 병합합니다:

python
def run_prompt(test_case):
    """Merges the prompt and test case input, then returns the result"""
    prompt = f"""
Please solve the following task:

{test_case["task"]}
"""
    
    messages = []
    add_user_message(messages, prompt)
    output = chat(messages)
    return output

지금은 프롬프트를 매우 간단하게 유지하고 있습니다. 형식 지정 지침을 포함하지 않았기 때문에, Claude는 우리가 필요한 것보다 더 장황한 출력을 반환할 가능성이 높습니다. 평가 프로세스를 반복하면서 이 부분을 나중에 개선할 것입니다.

run_test_case 함수

이 함수는 단일 테스트 케이스를 실행하고 결과를 채점하는 과정을 조율합니다:

python
def run_test_case(test_case):
    """Calls run_prompt, then grades the result"""
    output = run_prompt(test_case)
    
    # TODO - 채점
    score = 10
    
    return {
        "output": output,
        "test_case": test_case,
        "score": score
    }

지금은 하드코딩된 점수 10을 사용하고 있습니다. 채점 로직은 이후 섹션에서 상당한 시간을 투자할 부분이지만, 이 자리 표시자를 통해 전체 파이프라인 구조를 테스트할 수 있습니다.

run_eval 함수

이것은 전체 데이터셋을 처리하는 메인 오케스트레이터입니다:

python
def run_eval(dataset):
    """Loads the dataset and calls run_test_case with each case"""
    results = []
    
    for test_case in dataset:
        result = run_test_case(test_case)
        results.append(result)
    
    return results

이 함수는 데이터셋의 모든 테스트 케이스를 순회하며 각각을 처리하고, 모든 결과를 하나의 리스트로 수집합니다.

평가 실행하기

평가 파이프라인을 실행하려면, 데이터셋을 로드하고 메인 함수를 호출합니다:

python
with open("dataset.json", "r") as f:
    dataset = json.load(f)

results = run_eval(dataset)

처음 실행할 때는 시간이 걸릴 것으로 예상하세요 - Claude Haiku를 사용하더라도 전체 데이터셋을 처리하는 데 30초 이상 걸릴 수 있습니다. 최적화 기법은 나중에 다루겠지만, 지금은 인내심이 중요합니다.

결과 살펴보기

평가가 완료되면, 형식화된 JSON 출력으로 결과를 확인할 수 있습니다:

python
print(json.dumps(results, indent=2))

결과 구조는 객체들의 배열을 포함하며, 각 객체는 하나의 테스트 케이스 실행을 나타냅니다. Claude의 출력(형식 제약이 없어 상당히 장황한 경향이 있음), 원본 테스트 케이스 정의, 그리고 점수를 확인할 수 있습니다.

우리가 달성한 것

이 시점에서, 우리는 핵심 평가 파이프라인을 성공적으로 구현했습니다. 다음을 수행할 수 있습니다:

  • 데이터셋에서 테스트 케이스 가져오기
  • 프롬프트 템플릿과 병합하기
  • Claude로부터 응답 받기
  • 모든 결과를 수집하고 정리하기

부족한 부분은 지능적인 채점입니다 - 지금은 모든 응답에 고정된 점수를 부여하고 있을 뿐입니다. 다음 단계는 Claude의 출력이 실제로 올바른지 평가할 수 있는 그레이더를 구축하는 것이며, 이것이 바로 평가 시스템의 진정한 정교함이 발휘되는 부분입니다.

이 파이프라인 구조는 단순해 보일 수 있지만, 대부분의 AI 평가 시스템이 구축되는 기반을 나타냅니다. 복잡성은 테스트 실행의 기본적인 오케스트레이션이 아니라 채점 로직과 프롬프트 최적화에 있습니다.