in gemini/prompts/prompt_optimizer/vapo_lib.py [0:0]
def display_run(self, path: str) -> None:
"""Display the results of a VAPO run."""
self.run_dropdown.disabled = True
filename = f"{path}/eval_results.json"
eval_results = json.loads(read_file_from_gcs(filename))
filename = f"{path}/templates.json"
templates = json.loads(read_file_from_gcs(filename))
if len(templates) == len(eval_results):
offset = 0
elif len(templates) == len(eval_results) + 1:
# In some setups it is possible to have 1 more template than results.
offset = 1
else:
raise ValueError(
"Number of templates doesn't match number of eval results"
f" {len(templates)} vs {len(eval_results)}"
)
self.templates = [
pd.json_normalize(template) for template in templates[offset:]
]
metric_columns = [col for col in self.templates[0].columns if "metric" in col]
self.eval_results = [
process_results(pd.read_json(io.StringIO(result["metrics_table"])))
for result in eval_results
]
options = []
for i, template in enumerate(self.templates):
metrics = []
for col in metric_columns:
value = template[col].tolist()[0]
short_col = extract_metric_name(col)
metrics.append(f"{short_col}: {value}")
metrics_str = " ".join(metrics)
options.append(f"Template {i} {metrics_str}")
self.template_dropdown.disabled = False
self.template_dropdown.options = options
self.run_dropdown.disabled = False