def get_assert()

in skills/retrieval_augmented_generation/evaluation/eval_retrieval.py [0:0]


def get_assert(output: str, context) -> Union[bool, float, Dict[str, Any]]:
    correct_chunks = context['vars']['correct_chunks']

    try: 
        precision, recall, mrr, f1 = evaluate_retrieval(output, correct_chunks)
        metrics: Dict[str, float] = {}
        metrics['precision'] = precision
        metrics['recall'] = recall
        metrics['f1'] = f1
        metrics['mrr'] = mrr
        print("METRICS")
        print(metrics)
        overall_score = True
        if f1 < 0.3:
            overall_score = False
        return {
            "pass": overall_score, #if f1 > 0.3 we will pass, otherwise fail
            "score": f1,
            "reason": f"Precision: {precision} \n Recall: {recall} \n F1 Score: {f1} \n MRR: {mrr}",
            "componentResults": [
                {
                    "pass": True,
                    "score": mrr,
                    "reason": f"MRR is {mrr}",
                    "named_scores": {
                        "MRR": mrr
                    }
                },
                {
                    "pass": True,
                    "score": precision,
                    "reason": f"Precision is {precision}",
                    "named_scores": {
                        "Precision": precision
                    }
                },
                {
                    "pass": True,
                    "score": recall,
                    "reason": f"Recall is {recall}",
                    "named_scores": {
                        "Recall": recall
                    }
                }, 
                {
                    "pass": True,
                    "score": f1,
                    "reason": f"F1 is {f1}",
                    "named_scores": {
                        "F1": f1
                    }
                },
            ],
        }
    except Exception as e:
        return {
            "pass": False, #if f1 > 0.3 we will pass, otherwise fail
            "score": f1,
            "reason": f"Unexpected error: {str(e)}",
            "componentResults": [
                {
                    "pass": False,
                    "score": mrr,
                    "reason": f"Unexpected error: {str(e)}",
                    "named_scores": {
                        "MRR": mrr
                    }
                },
                {
                    "pass": False,
                    "score": precision,
                    "reason": f"Unexpected error: {str(e)}",
                    "named_scores": {
                        "Precision": precision
                    }
                },
                {
                    "pass": False,
                    "score": recall,
                    "reason": f"Unexpected error: {str(e)}",
                    "named_scores": {
                        "Recall": recall
                    }
                }, 
                {
                    "pass": False,
                    "score": f1,
                    "reason": f"Unexpected error: {str(e)}",
                    "named_scores": {
                        "F1": f1
                    }
                },
            ],
        }