Source code for llmp.components.evaluation.metrics

from llmp.data_model import JobRecord
from llmp.components.evaluation.prompts import MATCH_RESPONSE
from llmp.integration.structgenie import Engine


[docs]def explicit_accuracy(outputs: list, ideal_output: dict): """Compute the accuracy of the outputs.""" correct = 0 for output in outputs: if output == ideal_output: correct += 1 return correct / len(outputs)
[docs]def implicit_accuracy(outputs: list, ideal_output: dict, job: JobRecord, sample_input: dict): """Compute the accuracy of the outputs.""" correct = 0 engine = Engine.from_template(MATCH_RESPONSE) for output in outputs: input_data = { "instruction": job.instruction, "ideal_output": ideal_output, "output": output, "example_input": sample_input, } output = engine.run(input_data) if not output["choice"] == "D": correct += 1 return correct / len(outputs)
[docs]def avg_accuracy(run_metrics: list[dict]): """Compute the average accuracy of the runs.""" return sum([m["accuracy"] for m in run_metrics]) / len(run_metrics)
[docs]def avg_efficiency(run_metrics: list[dict]): """Compute the average efficiency of the runs.""" return sum([m["execution_time"] for m in run_metrics]) / len(run_metrics)
[docs]def avg_failure_rate(run_metrics): """Compute the average failure rate of the runs.""" return sum([m["failure_rate"] for m in run_metrics]) / len(run_metrics)
[docs]def avg_token_usage(outputs): """Compute the average token usage of the outputs.""" return sum([m["token_usage"] for m in outputs]) / len(outputs)
[docs]def avg_num_runs(outputs): """Compute the average number of runs.""" return sum([m["num_runs"] for m in outputs]) / len(outputs)