Evaluate skill-equipped agents with Strands Evals and Amazon Bedrock AgentCore
Quick Summary
Strands Evals와 Amazon Bedrock AgentCore Evaluations는 실행 기록을 바탕으로 에이전트의 스킬 선택 적절성과 지침 준수도를 구분해 평가하며, Strands Evals의 SkillInvoked는 지정 스킬의 로드 성공 여부를 결정적으로 확인한다.
🖼️ 인포그래픽

🖼️ 4컷 인포그래픽

💡 한 줄 요약
Strands Evals와 Amazon Bedrock AgentCore Evaluations는 실행 기록을 바탕으로 에이전트의 스킬 선택 적절성과 지침 준수도를 구분해 평가하며, Strands Evals의 SkillInvoked는 지정 스킬의 로드 성공 여부를 결정적으로 확인한다.
📌 핵심 요약
- 스킬은 보통 SKILL.md에 지침, 도구 연결, 지식, 워크플로, 가드레일을 묶는 재사용 단위이며, 공개 Agent Skills 표준을 통해 호환 환경에서 이동하고 실행 시 필요한 것만 로드할 수 있다.
- Skill Selection Accuracy는 호출된 각 스킬의 적절성을 이진 평가하고, Skill Instruction Following은 지침 준수를 0.0~1.0의 5단계로 평가하며 0.75 이상이면 통과한다. 두 평가기는 Strands Evals와 Amazon Bedrock AgentCore Evaluations에서 제공된다.
- Strands Evals 전용 SkillInvoked는 모델 호출 없이 지정 스킬의 로드 성공 여부를 확인한다. 스킬이 호출되지 않으면 판정 모델 기반 평가기는 점수를 내지 않으므로, 호출이 필수인 회귀 테스트에는 SkillInvoked를 함께 사용한다.
- Strands Evals의 pdf-table-extraction 예시는 스킬 선택과 로드는 성공했지만 표 경계 식별을 생략해 지침 준수 점수가 0.50으로 실패한 경우를 보여준다. 배포 게이트는 report.test_passes로 구성할 수 있으며, 집계 점수의 임계값은 자체 사례로 보정해야 한다.
- Amazon Bedrock AgentCore Evaluations는 기존 OpenTelemetry 추적으로 요청 시 평가, 저장 세션 일괄 처리, 실시간 트래픽 연속 샘플링을 지원한다. 결과에는 호출 위치를 식별하는 spanContext가 포함되며, TOOL_CALL 수준의 사용자 정의 평가기는 스킬 관련 자리표시자로 평가 내용과 실행 조건을 정한다.
🧩 주요 포인트
- 스킬 선택과 지침 준수의 분리 → 잘못된 선택은 스킬 설명의 중복·모호성을, 불완전한 수행은 절차의 명확성·스킬 구조·에이전트 모델 역량을 점검하는 근거가 된다.
- 스킬 미호출 시 판정 모델 기반 점수 부재 → SkillInvoked를 결합해야 필수 스킬 호출 누락까지 회귀 테스트와 배포 게이트에서 확인할 수 있다.
- Strands Evals의 실행 궤적과 AgentCore Evaluations의 OpenTelemetry 추적 활용 → 개발·지속적 통합과 운영에서 스킬별 실패를 진단하고, 집계 점수를 낮춘 개별 호출까지 추적할 수 있다.
🧠 상세 정리
1. 업무 절차를 모듈화하는 스킬
범용 에이전트가 다양한 작업을 처리하더라도 규정 준수 확인, 문서 처리, 상위 담당자에게 넘기는 정책, 엔지니어링 관례처럼 조직이 정한 절차를 따르게 할 필요는 남는다. 이러한 절차를 하나의 시스템 프롬프트나 애플리케이션 로직에 모두 넣으면 유지와 갱신이 어려워지므로, 원문은 재사용 가능한 지침 묶음인 스킬을 대안으로 제시한다. 스킬은 보통 SKILL.md에 저장되며 계약서의 민감 정보 삭제, 송장 대조, 팀의 풀 리퀘스트 관례 준수 같은 특정 업무를 에이전트에 가르친다. 구성 요소에는 도메인 지침, API·MCP 서버·로컬 명령 등의 도구 연결, 참고 자료와 예제, 다단계 절차, 형식·범위·검증 규칙이 포함된다. 공개 Agent Skills 표준에 따른 호환 환경 간 이동성과 실행 시 필요한 스킬만 로드하는 방식은, 기반 모델을 미세 조정하거나 핵심 로직을 다시 작성하지 않고도 업무 지침을 갱신하고 재사용하도록 돕는다.
2. 최종 응답만으로 드러나지 않는 두 실패
스킬을 조합하는 에이전트에는 일반적인 출력 품질 지표가 놓칠 수 있는 두 가지 실패가 발생한다. 하나는 작업에 부적절한 스킬을 호출하는 것이고, 다른 하나는 올바른 스킬을 호출하고도 그 지침을 생략하거나 일부만 수행하는 것이다. 두 경우 모두 유창하고 그럴듯한 답변을 만들 수 있어, 최종 응답만으로는 미리 정한 도메인 지식과 절차를 실제로 사용했는지 확인하기 어렵다. 예를 들어 HR assistant agent가 치과·시력 관련 복리후생 질문을 받았을 때 도구 호출 자체가 성공하더라도 부적절한 스킬을 선택했다면 선택 단계의 오류로 봐야 한다. 반대로 PTO 계획 스킬을 올바르게 선택했지만 employee_id 식별, 잔여 PTO 확인, 최신 HR 정책에 따른 이월 규칙 확인, 조건 충족 시 신청 제출이라는 절차 중 이월 규칙 확인을 건너뛰었다면 실행 단계의 실패이며, 두 문제에는 서로 다른 수정이 필요하다.
3. 세 평가기의 범위와 점수 해석
Skill Selection Accuracy는 호출된 각 스킬이 작업에 적절했는지를 이진 결과로 반환하고, Skill Instruction Following은 해당 스킬이 정한 단계별 근거를 바탕으로 지침 준수 정도를 평가한다. 두 평가기는 Strands Evals와 AgentCore Evaluations에서 제공되며, 지침 준수 등급은 Fully Followed 1.0, Mostly Followed 0.75, Partially Followed 0.5, Minimally Followed 0.25, Not Followed 0.0으로 구분되고 0.75 이상이면 통과한다. Strands Evals에만 있는 SkillInvoked는 모델을 호출하지 않는 결정적 검사로, 지정한 이름의 스킬이 성공적으로 로드됐는지를 이진 판정한다. 판정 모델 기반 평가기는 호출된 스킬마다 결과를 내므로 여러 스킬을 사용한 실행에서도 어떤 선택이나 수행 결과가 집계 점수를 낮췄는지 구분할 수 있다. 다만 스킬을 전혀 호출하지 않으면 이 평가기들은 점수를 생성하지 않으므로, 호출 대상이 정해진 회귀 테스트에서는 SkillInvoked를 함께 사용해야 한다.
4. 평가를 위한 실행 환경과 기록 준비
Strands Evals 예제를 실행하려면 Python 3.10 이상, Amazon Bedrock에 접근할 수 있는 AWS 계정, 판정 모델에 대한 InvokeModel 권한이 있는 자격 증명과 strands-agents-evals 및 strands-agents 패키지가 필요하다. 평가 입력으로는 기록된 에이전트 실행이 필요하며, Strands Evals Session이나 원시 메시지 목록을 실행 궤적으로 받을 수 있다. 출시 시점의 스킬 추출은 Strands AgentSkills 플러그인, Claude Code, Claude Agent SDK, OpenAI Agents SDK, Codex, Gemini CLI, OpenHands, Google ADK와 일반적인 SKILL.md 파일 읽기 신호를 인식한다. AgentCore Evaluations를 사용하려면 AgentCore runtime 또는 다른 환경에 호스팅된 에이전트가 있어야 하고, 관측 기능을 활성화해 Amazon CloudWatch로 텔레메트리를 보내며 CloudWatch의 Transaction Search도 켜야 한다. 원문은 배포 가능한 HR assistant agent를 예로 들고, AgentCore CLI는 npm install -g @aws/agentcore 명령으로 설치하도록 안내한다.
5. Strands Evals 실행 궤적 평가와 실패 사례
Strands Evals는 테스트 사례를 직접 관리하고 개발 또는 지속적 통합 과정에서 에이전트를 다시 실행할 수 있을 때 유용하다. 예제는 q3-revenue-tables라는 Case에서 q3-report.pdf의 매출 표 요약을 요청하고, SkillSelectionAccuracyEvaluator, SkillInstructionFollowingEvaluator, pdf-table-extraction을 지정한 SkillInvoked를 함께 설정한다. TracedHandler는 에이전트의 스팬을 수집해 실행 궤적으로 연결하며, eval_task로 감싼 작업을 Experiment의 run_evaluations로 실행한 뒤 보고서를 표시한다. 예시 실행에서는 에이전트가 pdf-table-extraction을 로드하고 pdftotext -layout을 실행했지만 추출 파일을 열거나 표 경계를 찾지 않아, 선택 정확도와 호출 검사는 각각 1.00으로 통과하고 지침 준수는 0.50으로 실패한다. 단계별 결과는 레이아웃을 보존한 텍스트 추출은 수행, 표 경계 식별은 생략, 각 표의 핵심 수치 요약은 부분 수행으로 나타나며, 적절한 스킬을 불러온 사실만으로 절차 이행을 보장할 수 없음을 보여준다.
6. 회귀 테스트와 배포 게이트로 연결
원문은 특정 회귀 사례에서 반드시 호출해야 하는 중요한 스킬마다 SkillInvoked를 추가해, 모델을 호출하지 않는 빠른 경로 선택 검사를 구성하도록 제안한다. 보고서의 report.test_passes를 확인하고 하나라도 통과하지 못하면 SystemExit(1)로 종료하는 방식으로 검사 결과를 빌드 통과 조건에 연결할 수 있다. 집계 점수는 전반적인 추세를 보는 데 활용하되, 강제 적용할 임계값은 자체 사례를 대상으로 먼저 보정해야 한다는 조건이 붙는다. 실패 원인에 대한 대응도 구분되어야 하며, 부적절한 선택은 스킬 설명의 중복이나 모호성을 가리키는 경우가 많고 불완전한 수행은 더 명확한 단계, 다른 스킬 구조, 더 역량 있는 에이전트 모델이 필요할 가능성을 시사한다. 따라서 스킬별 결과와 누락된 단계의 근거를 함께 읽는 것이, 집계 점수만 확인하는 것보다 어떤 부분을 수정해야 하는지 판단하는 데 도움이 된다.
7. AgentCore Evaluations의 운영 추적 평가
AgentCore Evaluations는 기존 OpenTelemetry 추적을 직접 사용하며, 요청 시 평가뿐 아니라 저장된 세션의 일괄 처리와 실시간 트래픽의 연속 샘플링도 지원한다. 텔레메트리는 세션, 추적, 스팬으로 구성되고, 스킬 평가기는 도구 호출 수준에서 동작한다. 각 결과에는 인식된 스킬 호출의 sessionId, traceId, spanId를 담은 spanContext가 포함되므로 평가 결과를 해당 호출 위치와 연결할 수 있다. 스킬 호출은 프레임워크 전반에 적용할 수 있는 SKILL.md 파일시스템 읽기 또는 Strands Agents, LangGraph Deep Agents, Google ADK, Claude Agent SDK의 기본 스킬 로드 도구를 통해 인식된다. 이 방식은 개발 중 기록한 실행 궤적을 평가하는 Strands Evals와 달리 기존 운영 추적을 평가 입력으로 활용하며, 최종 응답만으로 드러나지 않는 스킬 선택과 절차 수행을 개별 호출 단위로 살펴보게 한다.
8. 사용자 정의 평가기와 제공 자료의 범위
내장된 두 가지 판정 모델 기반 스킬 평가기가 다루지 않는 속성은 TOOL_CALL 수준의 사용자 정의 평가기로 검사할 수 있다. 템플릿에는 로드한 스킬 이름인 {invoked_skill}, SKILL.md 본문인 {skill_content}, 실행 시 제공된 목록인 {available_skills}, 호출을 유발한 요청인 {user_message}, 대화 기록인 {context}를 참조할 수 있으며, 스킬 목록이 기록되지 않았다면 그 사실을 나타내는 문구가 들어간다. 원문의 예시는 스킬 본문과 대화 기록을 넣고 번호가 매겨진 모든 단계를 주어진 순서대로 완료했는지 Yes 또는 No로 답하도록 구성한다. 자리표시자는 실행 조건도 결정하므로 {invoked_skill}이 있는 템플릿은 스킬 호출 스팬에서만 실행되고, {skill_content}까지 포함하면 로드된 본문도 필요하다. 이어지는 명령은 별도의 스킬 지원 런타임을 대상으로 하며 skills-evaluation/agent_config.json의 agent_id 또는 agent_arn을 사용하도록 안내하지만, Strands.SkillInvoked는 클라이언트 전용이라 CLI 대응 기능이 없고 제공된 본문은 요청 시 평가 절의 도입부에서 끊겨 구체적인 후속 명령은 확인할 수 없다.
🧾 핵심 주장 / 시사점
- 스킬의 이동성과 재사용성은 절차 준수를 자동으로 보장하지 않는다. 올바른 모듈을 골랐는지와 그 모듈의 절차를 실행했는지를 따로 평가해야 실패 원인을 구분할 수 있다.
- 스킬 미호출로 점수가 생성되지 않는 경우가 있으므로, 판정 모델 기반 평가만으로는 필수 호출 여부를 확인할 수 없다. SkillInvoked는 이러한 공백을 보완한다.
- 개별 스킬과 단계의 근거, 운영 추적의 호출 식별자를 함께 활용하면 낮은 집계 점수를 구체적인 선택 오류나 절차 누락에 연결해 수정 방향을 판단할 수 있다.
✅ 액션 아이템
- 필수 스킬 호출이 정해진 회귀 테스트에 SkillInvoked를 결합해 호출 누락을 확인함.
- Skill Selection Accuracy와 Skill Instruction Following 결과를 분리해 스킬 설명과 절차·구조·에이전트 모델의 개선 필요성을 검토함.
- 자체 사례로 집계 점수의 임계값을 보정하고 report.test_passes를 배포 게이트에 적용함.
❓ 열린 질문
- 어떤 회귀 테스트에서 SkillInvoked로 특정 스킬의 로드 성공을 필수 확인해야 하는가?
- Skill Instruction Following이 낮은 실행에서 절차의 명확성, 스킬 구조, 에이전트 모델 역량 중 무엇을 먼저 개선해야 하는가?
- AgentCore Evaluations의 요청 시 평가, 저장 세션 일괄 처리, 실시간 트래픽 연속 샘플링 중 어떤 방식을 운영 평가에 적용할 것인가?