매일매일
매일매일

kangmu238@gmail.com

AI에 관련한 질문이에요.

AI 하네스(Harness)는 무엇이고 왜 필요한가요?

2026-04-17AILLM하네스테스트프롬프트 평가

핵심 요약 (Summary)

AI 하네스(Harness)는 LLM(대형 언어 모델)의 출력을 평가하고 테스트하기 위한 프레임워크입니다. 일반 코드는 입력이 같으면 출력이 항상 같지만, AI는 같은 입력에도 매번 다른 결과를 반환할 수 있습니다. 하네스는 이 비결정적인 출력을 체계적으로 검증하고, 프롬프트가 바뀌거나 모델이 업데이트될 때 품질이 유지되는지 측정하는 역할을 합니다. AI 기능을 서비스에 통합할 때 테스트 전략 없이 배포하면 출력 품질을 보장할 수 없습니다.


왜 이런 문제가 발생하나요? (Why)

AI를 서비스에 통합할 때 두 가지 문제가 반복됩니다.

첫째, 프롬프트를 수정했더니 다른 기능이 망가집니다. 블로그 요약 기능의 프롬프트를 개선했는데 태그 추출 기능의 품질이 함께 떨어지는 경우입니다. 모든 AI 기능이 프롬프트와 모델에 의존하기 때문에 한 곳의 변경이 다른 곳에 영향을 줄 수 있지만, 테스트가 없으면 배포 후에야 발견합니다.

둘째, 모델이 업데이트되면 기존 동작이 달라집니다. OpenAI나 Anthropic이 모델을 조용히 업데이트하면 같은 프롬프트에 대한 응답 형식이나 품질이 바뀔 수 있습니다. 하네스 없이는 이 변화를 감지할 방법이 없어 서비스에 조용히 문제가 쌓입니다.

일반 코드 테스트와 AI 하네스의 차이를 비교하면 다음과 같습니다.

항목일반 테스트AI 하네스
출력 특성결정적 (항상 동일)비결정적 (매번 다를 수 있음)
검증 방식정확한 값 비교형식, 패턴, 의미적 유사도 검증
실패 기준값이 다르면 실패품질 점수가 임계값 미달이면 실패
비용무료API 호출 비용 발생
속도빠름느림 (네트워크 지연 포함)

잘못된 접근 방식 (Bad Example)

AI 기능을 테스트 없이 배포하는 경우 두 가지 패턴이 반복됩니다.

출력 형식을 지정하지 않는 경우. 프롬프트에 "태그를 추출해줘"라고만 요청하면 모델이 React, Next.js처럼 쉼표로 구분해 반환하거나, ["React", "Next.js"]처럼 배열 형태로 반환하거나, 문장으로 설명하기도 합니다. 응답 형식이 매번 달라지면 이를 처리하는 코드가 예측 불가능한 상황에서 오류를 냅니다.

수동으로 눈으로만 확인하는 경우. 프롬프트를 바꿀 때마다 개발자가 직접 결과를 콘솔에서 확인합니다. 이 방식은 히스토리가 남지 않고, 어떤 케이스가 이전보다 나빠졌는지 알 수 없습니다. 확인하지 않은 케이스에서 조용히 품질이 저하됩니다.


올바른 접근 방식 (Good Example)

AI 하네스는 세 가지 전략을 조합해 구성합니다.

1단계 — 출력 구조화로 비결정성 줄이기

프롬프트에 시스템 메시지로 출력 형식을 명확히 지정합니다. "반드시 JSON 배열 형식으로만 응답하세요"처럼 형식을 강제하면 파싱 실패를 방지할 수 있습니다. OpenAI의 response_format: json_object 옵션처럼 모델 수준에서 구조화된 출력을 강제하는 기능을 적극 활용합니다. 출력이 구조화될수록 테스트가 쉬워집니다.

2단계 — 단위 테스트와 통합 테스트 분리

API를 모킹한 단위 테스트는 출력 형식과 처리 로직만 검증합니다. 실제 API를 호출하는 통합 테스트는 배포 전 수동으로 실행하거나 CI에서 별도 플래그로 제어합니다. 통합 테스트에서는 정확한 값 비교 대신 형식 준수 여부, 배열 길이 범위, 핵심 키워드 포함 여부처럼 최소 품질 기준을 검증합니다.

3단계 — 골든 데이터셋으로 회귀 테스트

자주 사용하는 입력 케이스와 기대 결과를 골든 데이터셋으로 정의합니다. 프롬프트나 모델을 바꿀 때마다 이 데이터셋을 실행해 통과율을 측정합니다. 예를 들어 "10개 케이스 중 8개 이상 통과해야 배포 가능"처럼 기준을 정해두면 품질 저하를 자동으로 감지할 수 있습니다. 통과율이 임계값 미달이면 파이프라인을 멈추고 프롬프트를 재검토합니다.

전략방법목적
출력 구조화시스템 메시지로 형식 지정, response_format 활용파싱 안정성 확보
단위 테스트API 모킹 + 형식 검증빠른 피드백, CI 통합
통합 테스트실제 API 호출 + 품질 기준실제 동작 검증
회귀 테스트골든 데이터셋 + 통과율 측정프롬프트/모델 변경 감지

정리 (Conclusion)

AI 하네스는 비결정적인 LLM 출력을 체계적으로 검증하는 테스트 전략입니다. 정확한 값 비교가 아닌 형식, 패턴, 의미적 관련성을 기준으로 검증하고, 골든 데이터셋 통과율로 품질을 수치화합니다. 프롬프트 하나를 바꿀 때도 전체 AI 기능의 품질을 측정할 수 있는 체계가 있어야 안전하게 개선을 이어갈 수 있습니다.

상황권장 전략
AI 기능을 처음 도입할 때출력 형식 구조화 먼저
프롬프트를 자주 수정하는 경우골든 데이터셋 + 통과율 측정
모델 버전 업그레이드 전통합 테스트 전체 실행
CI 파이프라인에 포함할 경우모킹 기반 단위 테스트만 포함

추가 학습 자료 공유합니다.


목록으로 돌아가기