(you can choose other metrics too):metrics = {    "rouge": {        "metric": "rouge",        "config": {"variety": "rouge_l"},    },    "chrf": {        "metric": "chrf",        "config": {},    },    "bert_score": {        "metric": "bert_score",        "config": {"model": "bert-base-uncased"},    },    "uni_eval": {        "metric": "uni_eval",        "config": {"task": "summarization", "evaluation_aspect": "relevance"},    },}critique_data = [    {"target": pred["result"], "references": [pred["answer"]]} for pred in predictions]eval_results = {    k: critique.evaluate(dataset=critique_data, metric=v["metric"], config=v["config"])    for k, v in metrics.items()}Finally, we can print out the results. We can see that overall the scores are higher when the output is semantically correct, and also when the output closely matches with the gold-standard answer.for i, eg in enumerate(examples):    score_string = ", ".join(        [f"{k}={v['examples'][i]['value']:.4f}" for k, v in eval_results.items()]    )    print(f"Example {i}:")    print("Question: " + predictions[i]["query"])    print("Real Answer: " + predictions[i]["answer"])