in src/dfcx_scrapi/tools/metrics.py [0:0]
def __call__(self, inputs: dict[str, Any]) -> dict[str, Any]:
reference_statements = None
if self._context_recall or self._answer_correctness:
reference_statements = self._statement_extractor.extract_statements(
question=inputs["query"],
answer=inputs["expected_answer"],
)
prediction_statements = None
if self._faithfulness or self._answer_correctness.compute_precision:
reference_statements = self._statement_extractor.extract_statements(
question=inputs["query"],
answer=inputs["query_result"].answer_text
)
output = {}
if self._answer_correctness:
output.update(
self._answer_correctness(
{
**inputs,
"prediction_statements": prediction_statements,
"reference_statements": reference_statements,
}
)
)
if self._context_recall:
output.update(
self._context_recall(
{**inputs, "reference_statements": reference_statements}
)
)
if self._faithfulness:
output.update(
self._faithfulness(
{
**inputs,
"prediction_statements": prediction_statements,
}
)
)
return output