Setting the file. One moment. Llmaaj Evaluator · AWS AI ML · aws/agent-toolkit-for-aws · Skills Docs10
Setup DevOps Agent
24.7
Code Output Guide · references
RDS Oracle
(opens in a new tab)
references/model-evaluation/code_templates/llmaaj_evaluator.py
Python·101 lines·3 KB
15
16from sagemaker.core import Attribution, set_attribution
17from sagemaker.train.evaluate import LLMAsJudgeEvaluator
18
19set_attribution(Attribution.SAGEMAKER_AGENT_PLUGIN)
20
21# Suppress verbose logging from SageMaker SDK
22import logging
23
24logging.getLogger("sagemaker").setLevel(logging.WARNING)
25logging.getLogger("botocore").setLevel(logging.WARNING)
26
27# Evaluation configuration
28MODEL = "[MODEL_ARN]"
29DATASET = "[DATASET_S3_URI]"
30EVALUATOR_MODEL = "[JUDGE_MODEL]"
31BUILTIN_METRICS = [METRICS_LIST]
32CUSTOM_METRICS = None
33# NOTE FOR AGENT: If user wishes to use custom metrics,
34# custom_metrics.json should have been generated previously in the project root.
35# Uncomment this code to load the custom metrics from that file:
36# CUSTOM_METRICS = json.loads((Path("[PROJECT_DIR]") / "custom_metrics.json").read_text())
37S3_OUTPUT = "[S3_OUTPUT_PATH]"
38EVALUATE_BASE = [TRUE_OR_FALSE]
39
40# MLflow configuration
41MLFLOW_EXPERIMENT_NAME = "[MLFLOW_EXPERIMENT_NAME]"
42
43# Cell 2: Start Evaluation
44
45# Build evaluator kwargs
46evaluator_kwargs = dict(
47 model=MODEL,
48 evaluator_model=EVALUATOR_MODEL,
49 dataset=DATASET,
50 s3_output_path=S3_OUTPUT,
51 evaluate_base_model=EVALUATE_BASE,
52 region=REGION,
53 mlflow_experiment_name=MLFLOW_EXPERIMENT_NAME,
54)
55
56if BUILTIN_METRICS:
57 evaluator_kwargs["builtin_metrics"] = BUILTIN_METRICS
58if CUSTOM_METRICS:
59 evaluator_kwargs["custom_metrics"] = json.dumps(CUSTOM_METRICS)
60
61evaluator = LLMAsJudgeEvaluator(**evaluator_kwargs)
62
63print("✅ Starting evaluation...")
64print(f"Model: {MODEL}")
65print(f"Dataset: {DATASET}")
66print(f"Judge: {EVALUATOR_MODEL}")
67if BUILTIN_METRICS:
68 print(f"Built-in metrics: {BUILTIN_METRICS}")
69if CUSTOM_METRICS:
70 print(f"Custom metrics: {len(CUSTOM_METRICS)} defined")
71
72execution = evaluator.evaluate()
73
74print(f"\n✅ Evaluation job started!")
75print(f"Job ARN: {execution.arn}")
76print(f"Job Name: {execution.name}")
77print(f"Status: {execution.status.overall_status}")
78
79# Cell 3: Wait for Completion
80
81execution.wait(target_status="Succeeded", poll=30)
82
83# Cell 4: Show Results
84
85# Display evaluation results
86# If evaluate_base_model was True, this shows a comparison between base and custom model
87execution.show_results()
88
89# Save manifest
90manifest_dir = Path("[PROJECT_DIR]") / "manifests"
91manifest_dir.mkdir(parents=True, exist_ok=True)
92manifest_path = manifest_dir / f"eval-{execution.name}.json"
93manifest_path.write_text(
94 json.dumps(
95 {
96 "evaluation_arn": execution.arn,
97 },
98 indent=2,
99 )
100)
101print(f"Manifest saved: {manifest_path}")