유지되는 것과 사라지는 것: 웹 테스트 지식을 새로운 LLM 세계에 매핑하기
예시 애플리케이션
ThemeBuilder는 이 시리즈 전반에 걸쳐 예시 애플리케이션으로 사용됩니다. ThemeBuilder는 LLM에서 생성된 모토와 색상 팔레트가 포함된 JSON 객체를 출력합니다.
- 모토와 팔레트는 입력 브랜드 이름, 설명, 잠재고객, 톤과 일치해야 합니다.
- 모토는 유해하지 않아야 하며 짧아야 합니다 (6단어 미만).
- 색상 팔레트 대비는 WCAG 최소 가이드라인에 정의된 대로 4.5:1의 대비율로 접근 가능해야 합니다.
객관적 평가와 주관적 평가
ThemeBuilder가 의도한 대로 작동하는지 어떻게 테스트하나요?
규칙 기반 평가 (정확한 평가라고도 함)는 정답 또는 오답의 이진 답변이 있는 객관적인 테스트입니다. 이는 데이터 형식, 대비율 또는 정답이 있는 기타 질문에 가장 적합합니다. 일반적인 프로그래매틱 코드로 이러한 테스트를 구현할 수 있습니다.
일부 검사는 정답 또는 오답의 이진 답변이 있는 객관적인 검사입니다. 이는 데이터 형식, 대비율 또는 정답이 있는 기타 질문에 가장 적합합니다. 일반적인 프로그래매틱 코드로 이러한 테스트를 구현할 수 있습니다. 이를 규칙 기반 평가 또는 정확한 평가 라고 합니다.
예를 들면 다음과 같습니다.
// Example rule-based eval: data format
function evaluateFormat(appOutput) {
// Check if JSON is valid, colors are hex, no empty strings, motto is 6 words or fewer
// Use deterministic tools like zod for schema validation
return "PASS"; // or "FAIL"
}
다른 검사는 모토와 색상 팔레트의 브랜드 및 잠재고객 정렬과 같은 주관적인 검사입니다. 유해성 감지는 분류 작업이지만 판단이 필요하므로 주관적이기도 합니다.
주관적 테스트에도 분류가 포함되지만 정답과 오답의 범위는 크게 다를 수 있습니다. 예를 들어 모토와 색상 팔레트의 브랜드 및 잠재고객 정렬을 평가합니다. 유해성 감지도 주관적입니다.
주관적 품질을 평가하는 것은 인간 전문가만 할 수 있는 일처럼 들릴 수 있지만 LLM-as-a-judge 기법을 사용하면 이러한 테스트를 대규모로 자동화할 수 있습니다.
[LLM 평가자]는 빠르고 사용하기 쉬우며 비교적 저렴합니다. 프로덕션에서 AI 모델을 평가하는 가장 일반적인 방법 중 하나가 되었습니다.
—AI 엔지니어링, Chip Huyen
예를 들면 다음과 같습니다.
// Example LLM-as-a-judge eval for a subjective quality like brand fit
async function evalBrandFit(userInput, appOutput) {
const brandPrompt = `You are an expert brand strategist. Evaluate the
following generated motto for the company whose target audience is
${userInput.audience}, and who describes itself as
${userInput.companyDescription}: ${appOutput.motto}`
// Call the LLM judge
const evalResult = evalWithLLM(brandPrompt);
// Return the consolidated results
return {
mottoBrandFit: evalResult,
};
}
// Helper that communicates with the LLM API
async function evalWithLLM(prompt) {
// ... Call LLM with the prompt ...
// ... Parse the resulting judgement ("PASS" or "FAIL") + rationale
return {
status: "PASS",
rationale: "This motto perfectly captures the brand and tone, because..."
};
}
모델은 인간의 판단을 모방하므로 평가자에게 원하는 것을 정확히 알려줄 방법이 필요합니다. 평가자에게 평가 기준표를 제공하면 됩니다.
평가 기준표 는 평가자 (인간 또는 AI)가 출력을 평가하는 데 사용하는 구조화된 기준 또는 점수 가이드라인 집합입니다. 모든 평가에서 주관적 품질을 평가하는 일관된 프레임워크를 제공합니다.
기타 평가 유형
참조 기반 평가 또는 쌍별 평가를 사용하는 것이 좋습니다.
참조 기반
이는 정답과의 유사성을 측정합니다. 알려진 좋은 응답이 있는 번역 또는 기술적 사실과 같은 작업에 사용합니다.
쌍별
평가자는 두 가지 버전 중 하나가 다른 버전보다 더 나은 경우에도 두 가지 버전에 PASS 점수를 부여할 수 있습니다. 쌍별 평가는 동일한 입력에 대해 평가자에게 두 가지 출력 (A 및 B)을 제공하고 평가자에게 승자를 선택하도록 지시하여 이 문제를 해결합니다.
예를 들어 친근한 카페의 모토를 평가한다고 가정해 보겠습니다.
Input: "Friendly cafe"
Pointwise evaluation:
Output A: "Come get coffee." // PASS
Output B: "Your morning smile in a cup." // PASS
2 PASS. Unconclusive!
Pairwise evaluation:
Output B wins. It captures the "friendly" tone more effectively than the generic Output A.
쌍별 평가를 사용하여 배포할 모델 버전을 선택하거나 두 가지 프롬프트를 비교합니다.
표준 웹 테스트와 AI 평가
이 과정을 읽는 독자는 이미 웹사이트와 웹 애플리케이션을 테스트하는 방법을 알고 있다고 가정합니다. AI를 추가할 때는 기존의 정신 모델을 변경해야 합니다. AI 평가를 사용하여 다음 작업을 실행합니다.
- 회귀 테스트 실행: 프롬프트 또는 모델을 변경할 때 애플리케이션이 중단되었나요? 색상 팔레트가 손상되거나 유해한 모토가 표시되나요? 중단이 소프트웨어 기능인 웹 앱과 달리 여기서는 LLM 출력이 고품질이고 안전한지 확인합니다. 여기에는 주관성이 포함됩니다.
- 애플리케이션 최적화: 애플리케이션이 개선되고 있나요? 원하는 측정항목을 개선하고 있나요? 예를 들어 유해성을 높이지 않고 브랜드에 맞는 모토를 더 많이 얻고 있나요?
- 올바른 모델 선택: 사용 사례에 더 적합한 모델이 있나요? AI 이전에는 웹 스택을 한 번 선택합니다. AI를 사용하면 모델을 정기적으로 벤치마킹하여 더 나은 (잠재적으로 더 저렴한) 모델로 전환할 기회를 파악해야 합니다.
테스트 레이어링
정상적인 코드베이스에는 단위 테스트, 회귀 및 통합 테스트, 엔드 투 엔드 테스트와 같은 여러 테스트 레이어가 있어야 합니다. 평가도 레이어링되어야 합니다.
- 규칙 기반 평가를 LLM-as-a-judge 평가와 결합하여 AI 애플리케이션의 테스트를 완전히 자동화합니다. 이렇게 하면 일일 개발 및 CI/CD에서 문제를 포착하고 출시 후보가 품질 기준을 충족하는지 테스트할 수 있습니다.
- 통합 및 회귀 테스트를 실행하여 대규모로 품질을 확인합니다.
- 수락 테스트로 수동 인간 평가를 실행합니다.
빌드 시간에 실행하는 이러한 평가 외에도 런타임 평가를 사용하여 프로덕션 트래픽을 모니터링합니다. 이를 통해 실제 입력에서 품질 또는 안전 문제를 발견할 수 있습니다.
평가를 계속 발전시키기
평가는 애플리케이션과 함께 발전해야 합니다. 모델이 더 스마트해지면 이전 평가를 업데이트합니다.
프로덕션에서 발견되는 새로운 엣지 케이스 또는 놀라운 사용자 입력과 같은 까다로운 예를 테스트 데이터 세트에 정기적으로 추가합니다.
평가는 무엇을 측정하나요?
평가를 설계하기 전에 출력을 평가하는 방법을 이해해야 합니다. 알아야 할 몇 가지 용어가 있습니다.
기준 은 테스트해야 하는 규칙, 측정기준입니다. 예를 들어 브랜드 정렬, 유해성, 접근성이 있습니다.
각 평가 기준은 측정항목으로 측정됩니다. 측정항목 은 기준에 따라 모델 출력을 측정하는 단일의 구체적인 점수입니다. 이 점수는 이진수이거나 출력이 평가자의 기대치에서 얼마나 멀리 떨어져 있는지 또는 얼마나 가까운지를 측정하는 범위 내의 값일 수 있습니다.
서로 다른 유형의 측정항목으로 동일한 기준을 측정할 수 있습니다. 예를 들어 브랜드 정렬의 경우 다음과 같습니다.
- '이 모토가 브랜드에 맞나요?' 측정항목은
PASS또는FAIL입니다. - 1~5점 척도로 모토가 브랜드와 얼마나 잘 맞나요? 측정항목은 1부터 5까지의 정수입니다.
평가자 는 기준에 점수를 매기는 코드 또는 모델입니다. 평가자는 측정항목을 결정합니다.