M4. 관측·평가 — Observability + Evaluations + 판정 티어 모델 비교
M4에서는 M1–M3 에이전트가 남긴 세션 스팬을 CloudWatch에서 다운로드해 빌트인
evaluator 두 개(Builtin.Helpfulness, Builtin.ToolSelectionAccuracy)로
품질을 측정하고, 판정 티어 모델을 Claude Fable 5 → GPT 5.6 Sol로 교체해 같은
프롬프트에서 결과를 비교합니다.
M4에서 만드는 부분입니다. Runtime 관측성은 배포와 함께 자동 활성화되어 있으며, Evaluations는 스팬을 입력으로 LLM-as-a-judge 채점을 수행합니다.
이 모듈에서 다루는 개념
섹션 제목: “이 모듈에서 다루는 개념”- AgentCore Observability — Runtime 세션 스팬이 CloudWatch Logs
(
/aws/bedrock-agentcore/runtimes/{agent-id}-DEFAULT,aws/spans)에 자동 적재되고, CloudWatch GenAI Observability 콘솔에서 트레이스를 시각화합니다. - AgentCore Evaluations (온디맨드) —
bedrock-agentcore데이터 플레인의evaluate(evaluatorId, evaluationInput={"sessionSpans": ...})API로 세션 스팬을 채점합니다. 실측 기준일 2026-07-16, 이 계정 리전에서 노출된 빌트인 evaluator는 총 16종(Correctness / Faithfulness / Helpfulness / ResponseRelevance / Conciseness / Coherence / InstructionFollowing / Refusal / GoalSuccessRate / ToolSelectionAccuracy / ToolParameterAccuracy / Harmfulness / Stereotyping / TrajectoryExactOrderMatch / TrajectoryInOrderMatch / TrajectoryAnyOrderMatch)이며, 이 워크샵은 그중 두 개를 사용합니다.Builtin.Helpfulness— 트레이스 레벨 (실측: baseline 세션에서 1.00 / “Above And Beyond” 관측).Builtin.ToolSelectionAccuracy— 툴 콜 레벨 (spanIds로 지목 가능).
- 판정 티어 모델 비교 — Claude Fable 5(기본)와 GPT 5.6 Sol(비교 대상). 두
모델은 클래스(BedrockModel ↔ OpenAIResponsesModel)와 base_url이 다르므로 단순 sed
치환으로 끝나지 않고,
lab-src/m4/compare_models.sh가 자동 교체·재배포·재평가를 안내합니다.
-
CloudWatch Transaction Search를 활성화합니다 (계정당 1회).
CloudWatch 콘솔 > Application Signals > Transaction Search에서 활성화해 주세요. 활성화되어 있어야
aws/spans로그 그룹이 채워집니다. -
평가 대상 세션 정보를 확인합니다.
Terminal window # M1에서 기록한 agent-id 재확인cd aiopstriageagentagentcore status기존 M2/M3 실습에서 사용한 세션 ID 하나를 baseline으로 골라 두세요. 없다면 invoke를 한 번 더 실행해 새 세션을 만듭니다.
Terminal window agentcore invoke --session-id aiops-eval-baseline-$(date +%s)-000000000000000 \'{"prompt": "지난 24시간 특정 IP 대역의 401 인증 실패 알람이 폭증했습니다. 원인과 대응 절차를 조사해 주세요."}'세션 스팬은 호출 직후 몇 분 지연될 수 있습니다 (
run_eval.py의 기본 조회 윈도우는 60분이므로 즉시 실행해도 대부분 잡힙니다). -
온디맨드 평가를 실행합니다.
Terminal window cd lab-src/m4python3 run_eval.py \--agent-id <M1 agent-id> \--session-id <위에서 사용한 세션 ID> \--minutes 60 \--json-out result.json출력의 표에서 evaluator별
value/label/explanation을 확인합니다.explanation은 표에서 60자로 잘리므로, judge의 근거 전문이 필요하면--json-out result.json을 붙여 전체 응답을 저장하세요.실측 출력 원문입니다 — 2026-07-16, baseline 세션
77e0515e-591f-4bd4-baf3-13223df9d04b기준(합성 데모 값).[1/2] CloudWatch 에서 세션 스팬을 조회합니다(agent-id=aiopstriage_aiopstriageagent-twR5Co6yOC,session-id=77e0515e-591f-4bd4-baf3-13223df9d04b)Downloaded 3 runtime-log entriesDownloaded 5 aws/span entriesReturning 8 total records[2/2] Evaluate API 를 호출합니다(evaluators=['Builtin.Helpfulness', 'Builtin.ToolSelectionAccuracy'])===== Evaluator: Builtin.Helpfulness =====결과 수: 1----------------------------------------------------------------------------evaluatorName value label explanation----------------------------------------------------------------------------Builtin.Helpfulness 1.00 Above And Beyond The user's goal is to:1) determine if the 500+401 response...----------------------------------------------------------------------------===== Evaluator: Builtin.ToolSelectionAccuracy =====결과 수: 0----------------------------------------------------------------------------evaluatorName value label explanation--------------------------------------------------------------------------------------------------------------------------------------------------------평가 응답 전체(explanation 전문 포함)를 저장했습니다: result.json -
CloudWatch GenAI Observability에서 트레이스를 확인합니다.
콘솔 경로: CloudWatch > GenAI Observability > Bedrock AgentCore > Agents >
<agent>> Traces / Evaluations 탭. 세션별 스팬 흐름과 evaluator 결과가 함께 표시됩니다. -
판정 티어 모델 비교 — Claude Fable 5 vs GPT 5.6 Sol.
lab-src/m4/compare_models.sh가 다음을 자동으로 수행합니다.- M1 프로젝트의
main.py를 판정 티어만 GPT 5.6 Sol(Mantle Responses)로 교체한 상태로 백업 후 재작성 (main.py.bak으로 원본 보존). agentcore deploy -y로 재배포.- 동일 프롬프트 3종을 새 세션 ID로 invoke.
- baseline(Fable 5) 세션과 Sol 세션을 각각
run_eval.py로 채점.
Terminal window bash compare_models.sh \../m1/aiopstriageagent \<M1 agent-id> \<baseline Fable 5 세션 ID>결과 비교 시 다음 원칙을 지켜 주세요.
- M1 프로젝트의
-
원복합니다.
비교가 끝나면 M5/M6를 위해 판정 티어를 Claude Fable 5로 되돌려 주세요.
Terminal window mv ../m1/aiopstriageagent/app/aiopstriageagent/main.py.bak \../m1/aiopstriageagent/app/aiopstriageagent/main.py(cd ../m1/aiopstriageagent && agentcore deploy -y)
왜 Evaluations인가
섹션 제목: “왜 Evaluations인가”프로덕션 에이전트는 프롬프트·모델·도구 조합이 자주 바뀝니다. “새 조합이 이전보다 낫다”를 정성적 인상이 아니라 숫자로 말할 수 있어야 릴리스 결정을 내릴 수 있습니다. AgentCore Evaluations는 트레이스 스팬을 입력으로 LLM-as-a-judge 채점을 수행하므로, 에이전트 코드 변경 없이 같은 세션 데이터에 여러 evaluator를 반복 적용할 수 있습니다.
체크포인트
섹션 제목: “체크포인트”run_eval.py표에 두 evaluator의 value/label/explanation이 출력됩니다.- CloudWatch GenAI Observability의 Evaluations 탭에도 같은 결과가 보입니다.
- (선택)
compare_models.sh로 두 판정 티어 모델의 값이 나란히 나옵니다. - 판정 티어를 Claude Fable 5로 원복한 상태로 M5에 진입합니다.