Home / Strands 테스팅과 평가 / Strands 평가
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요소