절제 실험 계획서를 실행하고 LLM-as-Judge 평가를 수행하여 파이프라인 최적화 리포트를 생성한다. "파이프라인 실험 실행해줘", "평가 계획서 실행" 같은 요청에 트리거한다.

Pipeline Run Evaluation

절제 실험 계획서를 입력받아, 절제 변형을 실행하고 LLM-as-Judge로 평가한 뒤 최적화 리포트를 생성한다.

설계 근거: general-docs/learned/2026-04-07-pipeline-validator-design.md

When to Use

  • pipeline--plan-evaluation으로 작성한 실험 계획서가 있을 때
  • 계획서를 실행하여 실제 품질 비교 데이터를 얻고 싶을 때

Parameters

ParameterRequiredDescriptionExample
plan_pathYes실험 계획서 경로knowledges/pipeline/pipeline-evaluation/evaluation-plan-define-2026-04-07.md
input_pathYes테스트 입력 데이터 경로knowledges/product-breakdown-structure/E. 어드민/공통/어드민 로그인.md

Process

Step 1: 계획서 로드 및 검증

plan_path의 실험 계획서를 Read로 읽고, 다음을 확인한다:

  • 누적 테스트 순서가 정의되어 있는가
  • 각 테스트에 축소 프롬프트가 포함되어 있는가
  • 품질 평가 차원과 루브릭이 정의되어 있는가
  • Baseline 소스가 지정되어 있는가

누락된 항목이 있으면 AskUserQuestion으로 보완을 요청한다.

Step 2: Baseline 확보

계획서의 Baseline 소스를 확인한다.

기존 산출물 재사용 시: 지정된 경로에서 Read로 로드한다.

새로 실행 필요 시: 설계자에게 확인 후, 전체 파이프라인을 실행하여 Baseline 산출물을 생성한다. 이 경우 토큰 비용이 크므로 반드시 AskUserQuestion으로 사전 동의를 구한다.

Baseline 산출물을 knowledges/pipeline/pipeline-evaluation/eval-{파이프라인명}-{날짜}/baseline.md에 저장한다.

Step 3: 절제 변형 순차 실행

계획서의 누적 테스트 순서에 따라 각 절제 변형을 실행한다.

각 테스트마다:

  1. 계획서에서 해당 테스트의 축소 프롬프트를 추출한다
  2. ablation-runner 에이전트를 Agent 도구로 호출한다:
1Agent(
2  subagent_type: "ablation-runner",
3  model: "sonnet",
4  prompt: "다음 입력 데이터를 사용하여 아래 지시사항을 수행하고 결과를 출력하라.
5
6## 입력 데이터
7{input_path의 내용}
8
9## 지시사항
10{축소 프롬프트 전문}"
11)
  1. 산출물을 knowledges/pipeline/pipeline-evaluation/eval-{파이프라인명}-{날짜}/test-{N}.md에 저장한다

모든 테스트가 완료될 때까지 순차 실행한다.

Step 4: LLM-as-Judge 평가

각 (Baseline, 변형) 쌍에 대해 Blind Evaluation을 수행한다.

각 쌍마다:

  1. Baseline 산출물과 변형 산출물을 랜덤으로 A/B에 배정한다
  2. evaluation-judge 에이전트를 Agent 도구로 호출한다:
1Agent(
2  subagent_type: "evaluation-judge",
3  prompt: "다음 두 산출물을 평가하라. 어느 것이 파이프라인 출력이고 어느 것이 절제 변형인지는 알려주지 않는다.
4
5## 원본 입력
6{input_path의 내용}
7
8## 산출물 A
9{랜덤 배정된 산출물}
10
11## 산출물 B
12{랜덤 배정된 산출물}
13
14## 평가 차원 및 루브릭
15
16### 범용 차원
171. Completeness (0~5): 입력 대비 누락 없이 커버했는가
182. Precision (0~5): 모호하지 않고 실행 가능한가
193. Consistency (0~5): 산출물 내/간 모순이 없는가
204. Faithfulness (0~5): 입력의 의도를 왜곡 없이 반영했는가
21
22### 도메인 차원
23{계획서의 도메인 차원 + 루브릭}
24
25## 출력 형식
26각 차원에 대해 A, B 각각의 점수(0~5)와 판정 근거를 작성하라.
27마지막에 A, B 중 어느 쪽이 우세한지 총합 판정을 내려라."
28)
  1. Judge의 평가 결과를 파싱하여 점수 테이블을 구성한다
  2. A/B 배정을 복원하여 Baseline/변형 점수를 확정한다

Step 5: 리포트 생성

평가 결과를 종합하여 리포트를 작성하고 knowledges/pipeline/pipeline-evaluation/evaluation-report-{파이프라인명}-{날짜}.md에 저장한다.

Output Format

1# 절제 실험 리포트: {파이프라인명}
2
3> 실행일: YYYY-MM-DD
4> 계획서: {plan_path}
5> 테스트 입력: {input_path}
6
7## 1. 실험 요약
8
9| 항목 ||
10|------|-----|
11| 절제 후보 수 | N개 |
12| 실행된 테스트 수 | N개 |
13| Baseline 소스 | {경로 또는 "새로 실행"} |
14
15## 2. 차원별 점수 비교
16
17| 차원 | Baseline | Test 1 | Test 2 | ... |
18|------|----------|--------|--------|-----|
19| Completeness | X.X | X.X | X.X | ... |
20| Precision | X.X | X.X | X.X | ... |
21| Consistency | X.X | X.X | X.X | ... |
22| Faithfulness | X.X | X.X | X.X | ... |
23| {도메인 차원} | X.X | X.X | X.X | ... |
24| **총점** | **XX** | **XX** | **XX** | ... |
25
26## 3. 누적 제거별 품질 변화 추이
27
28| Test | 누적 제거 항목 | 총점 | Baseline 대비 변화 | 판정 |
29|------|---------------|------|-------------------|------|
30| Baseline | (없음) | XX | - | - |
31| Test 1 | A | XX | -X.X | ✅ 제거 가능 / ❌ 유지 필요 |
32| Test 2 | A + B | XX | -X.X | ✅ / ❌ |
33| ... | ... | ... | ... | ... |
34
35## 4. 판정 기준
36
37- 총점 하락 ≤ 2점: ✅ 제거 가능 (품질 유지)
38- 총점 하락 3~4점: ⚠️ 경계 (설계자 판단 필요)
39- 총점 하락 ≥ 5점: ❌ 유지 필요 (품질 하락 유의미)
40
41## 5. 권장 사항
42
43### 제거 권장 항목
44- [항목]: [근거]
45
46### 유지 권장 항목
47- [항목]: [근거]
48
49### 최적 파이프라인 구성
50{현재 구성에서 제거 권장 항목을 빼고 유지 항목만 남긴 구성 설명}
51
52## 6. Judge 평가 상세
53
54### Test 1: {제거 항목}
55{Judge의 정성적 근거}
56
57### Test 2: {제거 항목}
58{Judge의 정성적 근거}
59
60...

Notes

  • 이 스킬은 pipeline--plan-evaluation의 산출물(실험 계획서)을 입력으로 받는다. 계획서 없이 단독 실행하지 않는다.
  • 절제 변형은 ablation-runner(Sonnet)로 실행하고, 평가는 evaluation-judge(Opus)로 실행한다.
  • Baseline 재사용 시 기존 산출물의 입력 데이터와 input_path가 동일한지 확인한다. 다르면 Baseline을 새로 실행해야 한다.
  • 판정 기준(2점/5점 임계값)은 시범 적용 후 보정할 수 있다.
  • 누적 테스트 중 ❌ 판정이 나오면, 해당 테스트 이후의 누적 제거는 실행하지 않고 중단한다 (이전까지 확정된 제거만 유지).