왜 테스트해야 하는가
왜 테스트해야 하는가
n8n 평가(evaluation)를 사용해 신뢰할 수 있는 AI 워크플로를 만들어 볼게요. 알려진 테스트 케이스에서 나온 출력을 비교하면서, LLM 기반 워크플로에 대한 확신을 쌓는 겁니다.
평가(evaluation)란 무엇인가요?
평가는 AI 워크플로가 신뢰할 수 있는지 확인하는 아주 중요한 기법이에요. 약한 개념 증명(proof of concept)과 탄탄한 프로덕션 워크플로의 차이를 가를 수 있죠. 빌드 단계와 프로덕션 배포 이후 둘 다에서 중요합니다.
평가의 토대는 테스트 데이터셋을 워크플로에 돌려 보는 거예요. 이 데이터셋에는 여러 테스트 케이스가 들어 있습니다. 각 테스트 케이스는 워크플로의 샘플 입력을 담고 있고, 흔히 기대 출력(expected output)도 함께 담고 있죠.
평가를 통해 여러분은:
- 다양한 입력에 걸쳐 워크플로를 테스트해서 엣지 케이스에서 어떻게 동작하는지 알 수 있어요
- 자신 있게 변경할 수 있어요. 다른 곳을 의도치 않게 망치지 않고 말이죠
- 모델이나 프롬프트 간 성능을 비교할 수 있어요
왜 평가가 필요한가요?
AI 모델은 근본적으로 코드와 달라요. 코드는 결정적(deterministic)이라서 추론할 수 있죠. 하지만 LLM은 블랙박스라서 같은 방식으로 다룰 수 없습니다. 대신 LLM에 데이터를 흘려보내 출력을 관찰하는 방식으로 LLM의 출력을 측정해야 해요.
모델이 프로덕션에서 마주칠 모든 엣지 케이스를 정확히 반영하는 여러 입력을 돌려 본 후에야, 모델이 확실하게 동작한다는 확신을 쌓을 수 있습니다.
두 가지 유형의 평가
가벼운 평가 (배포 전)
깔끔하고 포괄적인 데이터셋을 만드는 건 어려워요. 초기 빌드 단계에서는 예시를 몇 개만 만드는 게 합리적일 때가 많아요. 그 정도면 워크플로를 배포 가능한 상태(또는 개념 증명)로 반복하는 데 충분하거든요. 공식적인 메트릭을 설정하지 않고도 결과를 시각적으로 비교해 워크플로 품질을 가늠할 수 있습니다.
메트릭 기반 평가 (배포 후)
워크플로를 배포하면 프로덕션 실행에서 더 크고 대표성 있는 데이터셋을 만들기 쉬워져요. 버그를 발견하면 그것을 일으킨 입력을 데이터셋에 추가할 수 있죠. 버그를 고칠 때는 수정이 의도치 않게 다른 걸 망치지 않았는지 회귀 테스트로 확인하기 위해 데이터셋 전체를 다시 워크플로에 돌려 보는 게 중요합니다.
테스트 케이스가 너무 많아서 하나씩 확인할 수 없으므로, 평가는 메트릭(특정 특성을 나타내는 숫자 값)으로 출력 품질을 측정해요. 이렇게 하면 실행 사이의 품질 변화도 추적할 수 있습니다.
평가 유형 비교
| 가벼운 평가 (배포 전) | 메트릭 기반 평가 (배포 후) | |
|---|---|---|
| 반복마다의 성능 개선 | 큼 | 작음 |
| 데이터셋 크기 | 작음 | 큼 |
| 데이터셋 출처 | 수작업 생성, AI 생성, 기타 | 프로덕션 실행, AI 생성, 기타 |
| 실제 출력 | 필요 | 필요 |
| 기대 출력 | 선택 사항 | 필요 (보통) |
| 평가 메트릭 | 선택 사항 | 필요 |