1515from __future__ import annotations
1616
1717import os
18+ from typing import Any , TYPE_CHECKING
1819
1920from pydantic import alias_generators
2021from pydantic import BaseModel
2122from pydantic import ConfigDict
2223
2324from ...evaluation .eval_case import Invocation
2425from ...evaluation .evaluation_generator import EvaluationGenerator
25- from ...evaluation .gcs_eval_set_results_manager import GcsEvalSetResultsManager
26- from ...evaluation .gcs_eval_sets_manager import GcsEvalSetsManager
2726from ...sessions .session import Session
2827
28+ if TYPE_CHECKING :
29+ from ...evaluation .gcs_eval_set_results_manager import GcsEvalSetResultsManager
30+ from ...evaluation .gcs_eval_sets_manager import GcsEvalSetsManager
31+
2932
3033class GcsEvalManagers (BaseModel ):
3134 model_config = ConfigDict (
@@ -34,9 +37,9 @@ class GcsEvalManagers(BaseModel):
3437 arbitrary_types_allowed = True ,
3538 )
3639
37- eval_sets_manager : GcsEvalSetsManager
40+ eval_sets_manager : ' GcsEvalSetsManager'
3841
39- eval_set_results_manager : GcsEvalSetResultsManager
42+ eval_set_results_manager : ' GcsEvalSetResultsManager'
4043
4144
4245def convert_session_to_eval_invocations (session : Session ) -> list [Invocation ]:
@@ -66,8 +69,19 @@ def create_gcs_eval_managers_from_uri(
6669
6770 Raises:
6871 ValueError: If the eval_storage_uri is not supported.
72+ RuntimeError: If GCP optional dependencies are missing.
6973 """
7074 if eval_storage_uri .startswith ('gs://' ):
75+ try :
76+ from ...evaluation .gcs_eval_set_results_manager import GcsEvalSetResultsManager
77+ from ...evaluation .gcs_eval_sets_manager import GcsEvalSetsManager
78+ except ImportError as e :
79+ raise RuntimeError (
80+ 'GCS evaluation managers require Google Cloud optional dependencies.\n '
81+ 'Please install them using: pip install google-adk[gcp]\n '
82+ 'Or: pip install google-cloud-storage>=2.18'
83+ ) from e
84+
7185 gcs_bucket = eval_storage_uri .split ('://' )[1 ]
7286 eval_sets_manager = GcsEvalSetsManager (
7387 bucket_name = gcs_bucket , project = os .environ ['GOOGLE_CLOUD_PROJECT' ]
0 commit comments