Spaces:
Runtime error
Runtime error
| import re | |
| from typing import Any, List | |
| from langchain.evaluation.schema import StringEvaluator | |
| class RegexMatchStringEvaluator(StringEvaluator): | |
| """Compute a regex match between the prediction and the reference. | |
| Examples | |
| ---------- | |
| >>> evaluator = RegexMatchStringEvaluator(flags=re.IGNORECASE) | |
| >>> evaluator.evaluate_strings( | |
| prediction="Mindy is the CTO", | |
| reference="^mindy.*cto$", | |
| ) # This will return {'score': 1.0} due to the IGNORECASE flag | |
| >>> evaluator = RegexMatchStringEvaluator() | |
| >>> evaluator.evaluate_strings( | |
| prediction="Mindy is the CTO", | |
| reference="^Mike.*CEO$", | |
| ) # This will return {'score': 0.0} | |
| >>> evaluator.evaluate_strings( | |
| prediction="Mindy is the CTO", | |
| reference="^Mike.*CEO$|^Mindy.*CTO$", | |
| ) # This will return {'score': 1.0} as the prediction matches the second pattern in the union | |
| """ # noqa: E501 | |
| def __init__(self, *, flags: int = 0, **kwargs: Any): # Default is no flags | |
| super().__init__() | |
| self.flags = flags | |
| def requires_input(self) -> bool: | |
| """ | |
| This evaluator does not require input. | |
| """ | |
| return False | |
| def requires_reference(self) -> bool: | |
| """ | |
| This evaluator requires a reference. | |
| """ | |
| return True | |
| def input_keys(self) -> List[str]: | |
| """ | |
| Get the input keys. | |
| Returns: | |
| List[str]: The input keys. | |
| """ | |
| return ["reference", "prediction"] | |
| def evaluation_name(self) -> str: | |
| """ | |
| Get the evaluation name. | |
| Returns: | |
| str: The evaluation name. | |
| """ | |
| return "regex_match" | |
| def _evaluate_strings( # type: ignore[arg-type,override] | |
| self, | |
| *, | |
| prediction: str, | |
| reference: str, | |
| **kwargs: Any, | |
| ) -> dict: | |
| """ | |
| Evaluate the regex match between the prediction and the reference. | |
| Args: | |
| prediction (str): The prediction string. | |
| reference (Optional[str], optional): The reference regex pattern. | |
| Returns: | |
| dict: The evaluation results containing the score. | |
| """ | |
| match = re.match(reference, prediction, flags=self.flags) | |
| return {"score": int(bool(match))} | |