feat: Add a new option eval_storage_uri in adk web & adk eval to specify GCS bucket to store eval data

PiperOrigin-RevId: 774947795
This commit is contained in:
Joseph Pagadora
2025-06-23 15:24:57 -07:00
committed by Copybara-Service
parent 120cbabeb2
commit fa025d7559
5 changed files with 139 additions and 15 deletions
@@ -72,6 +72,13 @@ class GcsEvalSetsManager(EvalSetsManager):
f"Invalid {id_name}. {id_name} should have the `{pattern}` format",
)
def _load_eval_set_from_blob(self, blob_name: str) -> Optional[EvalSet]:
blob = self.bucket.blob(blob_name)
if not blob.exists():
return None
eval_set_data = blob.download_as_text()
return EvalSet.model_validate_json(eval_set_data)
def _write_eval_set_to_blob(self, blob_name: str, eval_set: EvalSet):
"""Writes an EvalSet to GCS."""
blob = self.bucket.blob(blob_name)
@@ -88,11 +95,7 @@ class GcsEvalSetsManager(EvalSetsManager):
def get_eval_set(self, app_name: str, eval_set_id: str) -> Optional[EvalSet]:
"""Returns an EvalSet identified by an app_name and eval_set_id."""
eval_set_blob_name = self._get_eval_set_blob_name(app_name, eval_set_id)
blob = self.bucket.blob(eval_set_blob_name)
if not blob.exists():
return None
eval_set_data = blob.download_as_text()
return EvalSet.model_validate_json(eval_set_data)
return self._load_eval_set_from_blob(eval_set_blob_name)
@override
def create_eval_set(self, app_name: str, eval_set_id: str):