diff --git a/src/google/adk/evaluation/local_eval_service.py b/src/google/adk/evaluation/local_eval_service.py index 1a032bad64..9f759979c9 100644 --- a/src/google/adk/evaluation/local_eval_service.py +++ b/src/google/adk/evaluation/local_eval_service.py @@ -534,4 +534,5 @@ async def _perform_inference_single_eval_item( ) inference_result.status = InferenceStatus.FAILURE inference_result.error_message = str(e) + inference_result.inferences = [] # Ensure inferences is not None on failure return inference_result diff --git a/src/google/adk/optimization/gepa_root_agent_prompt_optimizer.py b/src/google/adk/optimization/gepa_root_agent_prompt_optimizer.py index e9b82cdd50..5f0eb92d17 100644 --- a/src/google/adk/optimization/gepa_root_agent_prompt_optimizer.py +++ b/src/google/adk/optimization/gepa_root_agent_prompt_optimizer.py @@ -147,7 +147,7 @@ def evaluate( trajectories = [] for example_id in batch: - score = result.scores[example_id] + score = result.scores.get(example_id, 0.0) scores.append(score) eval_data = result.data.get(example_id, {}) if result.data else {} diff --git a/src/google/adk/optimization/local_eval_sampler.py b/src/google/adk/optimization/local_eval_sampler.py index b00c34280f..e5d9a41f6c 100644 --- a/src/google/adk/optimization/local_eval_sampler.py +++ b/src/google/adk/optimization/local_eval_sampler.py @@ -289,7 +289,7 @@ def _extract_eval_data( for eval_metric_result in per_invocation_result.eval_metric_results: eval_metric_results.append({ "metric_name": eval_metric_result.metric_name, - "score": round(eval_metric_result.score, 2), # accurate enough + "score": round(eval_metric_result.score, 2) if eval_metric_result.score is not None else 0.0, "eval_status": eval_metric_result.eval_status.name, }) per_invocation_result_dict = {