)@propertydef requires_input(self) -> bool:    return True@propertydef requires_reference(self) -> bool:    return Falsedef _evaluate_string_pairs(    self,    *,    prediction: str,    prediction_b: str,    reference: Optional[str] = None,    input: Optional[str] = None,    **kwargs: Any,) -> dict:    result = self.eval_chain(        {            "input": input,            "prediction": prediction,            "prediction_b": prediction_b,            "stop": ["Which option is preferred?"],        },        **kwargs,    )    response_text = result["text"]    reasoning, preference = response_text.split("Preference:", maxsplit=1)    preference = preference.strip()    score = 1.0 if preference == "A" else (0.0 if preference == "B" else None)    return {"reasoning": reasoning.strip(), "value": preference, "score": score}```pythonevaluator = CustomPreferenceEvaluator()evaluator.evaluate_string_pairs(    input="How do I import from a relative directory?",    prediction="use importlib! importlib.import_module('.my_package', '.')",    prediction_b="from .sibling import foo",)    {'reasoning': 'Option B is preferred over option A for importing from a relative directory, because it is more straightforward and concise.\n\nOption A uses the importlib module, which allows importing a module by