from typing import List from promptflow.core import tool @tool def aggregate(groundedness_scores: List[float]): """ This tool aggregates the processed result of all lines to the variant level and log metric for each variant. :param processed_results: List of the output of line_process node. :param variant_ids: List of variant ids that can be used to group the results by variant. :param line_numbers: List of line numbers of the variants. If provided, this can be used to group the results by line number. """ aggregated_results = {"groundedness": 0.0, "count": 0} # Calculate average groundedness score for each variant for i in range(len(groundedness_scores)): aggregated_results["groundedness"] += groundedness_scores[i] aggregated_results["count"] += 1 aggregated_results["groundedness"] /= aggregated_results["count"] # Log metric for each variant from promptflow.core import log_metric log_metric(key="groundedness", value=aggregated_results["groundedness"]) return aggregated_results