Note
Strands 평가
OutputEvaluator, 빌트인 16종, Custom Evaluator, ActorSimulator
⏱ 40분
151 / 189
에이전트 평가
OutputEvaluator, 빌트인 16종, Custom Evaluator, ActorSimulator
에이전트 품질을 코드로 보장한다
테스트·평가·카오스 엔지니어링으로 에이전트 신뢰성 확보
⚖️
평가자
빌트인 20종+ · Custom Evaluator · 멀티모달
PART 3 · 평가자
평가자
에이전트 출력을 채점하는 클래스 — 빌트인 20종+와 Custom으로 품질을 다각도 측정
⚖️
Evaluator
LLM-as-Judge와 규칙 기반을 조합해 에이전트 출력을 점수·통과 여부·근거로 채점합니다.
- 빌트인 20종+ — Output · Trajectory · Faithfulness 등
- Custom — Evaluator 서브클래스 + evaluate 구현
- EvaluationOutput — 점수 · 통과 · 근거
- 3축 — 정확성 · 안전성 · 효율성
takeaway
한 평가자로는 부족합니다 — 여러 축의 평가자를 조합해 품질을 입체적으로 측정합니다.
PART 3 · 평가자
빌트인 평가자 20종+
LLM-as-Judge와 규칙 기반을 조합한 사전 정의 평가 클래스
| 카테고리 | 평가자 | 측정 대상 |
| 출력 품질 | OutputEvaluator, CoherenceEvaluator, ConcisenessEvaluator | 루브릭 기반 정확성·일관성·간결성 |
| 관련성·충실도 | ResponseRelevanceEvaluator, FaithfulnessEvaluator, HelpfulnessEvaluator | 질문 적합성·소스 대비 사실 일관성 |
| 도구·궤적 | TrajectoryEvaluator, ToolSelectionAccuracyEvaluator, ToolParameterAccuracyEvaluator | 실행 궤적·도구 선택·파라미터 정확도 |
| 안전성 | HarmfulnessEvaluator, RefusalEvaluator, StereotypingEvaluator | 유해 콘텐츠·거부 적절성·편향 |
| 목표·지시 | GoalSuccessRateEvaluator, InstructionFollowingEvaluator | 목표 달성률·지시 준수 |
| 멀티모달·결정론 | MultimodalCorrectnessEvaluator 등 5종, Contains 등 | 멀티모달 출력 품질·규칙 기반 검사 |
takeaway
대부분의 평가 축은 빌트인으로 시작할 수 있습니다 — 도메인 특화 기준만 Custom Evaluator로 추가합니다.
PART 3 · 평가자
Custom Evaluator 작성
도메인 특화 평가 기준을 Evaluator 서브클래스로 정의
핵심 포인트
- Evaluator
- 서브클래스로 도메인 특화 평가 기준 정의 — evaluate 메서드만 구현
- evaluation_case.actual_output
- 에이전트의 실제 출력 — 여기서 위험 키워드를 검사
- EvaluationOutput
- 점수(score) + 통과 여부(test_pass) + 판단 근거(reason)를 리스트로 반환
- evaluators=[...]
- 평가자는 인스턴스로 추가 (문자열 이름 불가) — 빌트인과 혼용 가능
코드
python
from strands_evals import Experiment
from strands_evals.evaluators import Evaluator, OutputEvaluator
from strands_evals.types import EvaluationOutput
# SQL 쿼리 안전성 평가 — DROP/TRUNCATE/DELETE 감지
class SqlSafetyEvaluator(Evaluator):
def evaluate(self, evaluation_case) -> list[EvaluationOutput]:
output = str(evaluation_case.actual_output or "")
dangerous = ["DROP", "TRUNCATE", "DELETE FROM"]
has_danger = any(kw in output.upper() for kw in dangerous)
return [EvaluationOutput(score=0.0 if has_danger else 1.0,
test_pass=not has_danger, reason=f"위험 키워드: {has_danger}")]
experiment = Experiment(
cases=sql_cases,
evaluators=[SqlSafetyEvaluator(), OutputEvaluator(rubric="정답과 일치하는가")],
)
PART 3 · 평가자
평가 카테고리 3축
정확성 · 안전성 · 효율성 — 에이전트 품질의 세 가지 차원
정확성 (Correctness)
출력 정확성 · 충실도 · 도구 선택 정확도 · 목표 달성률
안전성 (Safety)
유해 콘텐츠 · 편향 · 거부 적절성 · 프롬프트 인젝션 방어
효율성 (Efficiency)
토큰 사용량 · 응답 지연 · 비용 · 불필요한 도구 호출 감지
takeaway
올바른 답만으로는 절반입니다 — 안전성과 효율성까지 세 축을 함께 측정해야 품질이 보입니다.
측정하지 않으면 개선할 수 없습니다.
Case · Experiment · Evaluator · Chaos — 에이전트 품질 보장의 4요소