TL;DR
다중 턴 에이전트는 초기에 잘못된 도구 인자 하나가 이후 턴 전체로 퍼질 수 있어 최종 결과만 평가하면 최초 원인을 찾기 어렵습니다. AWS ML Blog의 Agent Evaluation Metric(AEM)은 correctness를 truthfulness와 completeness라는 두 하위 지표로 나누고, 자연어 응답과 도구 호출을 대화의 전체 맥락 안에서 턴별로 판정합니다. 의미적 유사도와 구조적 키 검사를 거친 뒤 실패 이유를 inconsistent_parameter_values, missing_parameters, incomplete_response처럼 구체화하고, prior_action_failed를 사용해 원인과 연쇄 효과를 분리합니다. 다섯 턴 영업 보고서 예시에서는 success_rate가 0.2이고 2번 턴의 inconsistent_parameter_values가 유일한 root cause이며 3건은 cascade로 귀속되므로, 해당 인자를 고치는 방식으로 조사 범위를 줄일 수 있습니다.
섹션별 상세


def evaluate_truthfulness(gold_value, predicted_value, scorer, threshold=0.5):
"""Score semantic equivalence of a predicted value against gold."""
if gold_value == predicted_value:
return True, 1.0 # Exact match (fast path)
score = scorer.score(gold_value, predicted_value)
return score >= threshold, score기대값과 예측값을 먼저 정확히 비교하고, 다르면 의미적 유사도 점수와 임계값으로 truthfulness를 판정합니다.
def evaluate_completeness(gold_args, predicted_args):
"""Check all required parameters are present, with no unexpected extras."""
missing = set(gold_args.keys()) - set(predicted_args.keys())
extra = set(predicted_args.keys()) - set(gold_args.keys())
return len(missing) == 0 and len(extra) == 0, missing, extra기대되는 도구 인자의 키와 실제 인자의 키를 비교해 누락된 매개변수와 불필요한 매개변수를 함께 찾습니다.
def attribute_errors(turn_results):
"""Separate root cause failures from cascading failures."""
root_causes = []
cascading = []
for result in turn_results:
if not result.success:
if result.failure_reason == "prior_action_failed":
cascading.append(result)
else:
root_causes.append(result)
return {
"first_failure_turn": root_causes[0].turn_no if root_causes else None,
"root_cause": root_causes[0].failure_reason if root_causes else None,
"total_failures": len(root_causes) + len(cascading),
"root_cause_count": len(root_causes),
"cascading_count": len(cascading),
}
# Example output:
# first_failure_turn: 2, root_cause: "inconsistent_parameter_values"
# root_cause_count: 1, cascading_count: 3턴별 실패 결과를 순회해 독립적인 최초 실패와 이전 실패에서 파생된 연쇄 실패를 분리합니다.


용어 해설
- 턴 단위 평가(Turn-level Evaluation)
- — 다중 턴 대화 전체를 한 번에 채점하지 않고 각 사용자 응답이나 도구 호출을 개별 평가하는 방식입니다. 각 턴의 입력과 기대 결과를 실제 결과와 비교해 실패한 위치와 원인을 좁힐 수 있으며, 앞선 오류가 뒤의 결과에 미친 영향을 분리하는 데 중요합니다.
- 의미적 유사도(Semantic Similarity)
- — 두 문자열이 글자 그대로 같은지보다 전달하는 의미가 같은지를 비교하는 방법입니다. AEM은 “New York City”와 “NYC”처럼 표현이 다른 동등한 값은 통과시키고, 임계값을 기준으로 실제 의미 차이가 있는 값은 실패로 판정합니다.
- 오류 귀속(Error Attribution)
- — 대화에서 발생한 실패를 최초 원인과 앞선 실패를 물려받은 연쇄 오류로 나누는 절차입니다. AEM은 각 턴의 의존 관계를 확인해 root cause와 prior_action_failed를 구분하고, 수정 우선순위를 최초 원인에 집중시킵니다.
- 골드 데이터셋(Gold Dataset)
- — 각 대화 턴에서 올바른 자연어 응답과 도구 호출을 사람이 주석 처리한 기준 데이터입니다. 예측 결과를 이 기준과 비교해야 truthfulness와 completeness를 일관되게 판정할 수 있으며, 자동 평가 점수가 사람의 판단과 맞는지도 검증할 수 있습니다.
- LLM 평가자(LLM-as-Judge)
- — LLM을 평가자로 사용해 응답 품질이나 의미적 일치 여부를 판정하는 방식입니다. AEM에서는 embedding 기반 유사도보다 미묘한 차이를 포착할 수 있지만, 내부 판단 과정을 직접 확인하기 어려워 임계값과 사람 주석을 함께 검증해야 합니다.
기술
- Agent Evaluation Metric (AEM)
- Strands Agents
- Strands Agents evaluation SDK
- embedding-based similarity check
- LLM-as-judge
- Amazon Quick Suite
- Python
활용 사례
- 영업 보고서 생성과 필터링을 수행하는 enterprise assistant
- 다중 도구 호출을 포함한 multi-turn agent 평가
- 모델 release별 correctness regression detection
- 도구 호출의 root cause 및 cascading failure 추적
- Strands Agents 기반 평가 파이프라인과 monitoring dashboard 연동
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
