diff --git a/langchain/output_parsers/boolean.py b/langchain/output_parsers/boolean.py index 40890a9d..96f61252 100644 --- a/langchain/output_parsers/boolean.py +++ b/langchain/output_parsers/boolean.py @@ -16,12 +16,12 @@ class BooleanOutputParser(BaseOutputParser[bool]): """ cleaned_text = text.strip() - if cleaned_text not in (self.true_val, self.false_val): + if cleaned_text.upper() not in (self.true_val.upper(), self.false_val.upper()): raise ValueError( f"BooleanOutputParser expected output value to either be " f"{self.true_val} or {self.false_val}. Received {cleaned_text}." ) - return cleaned_text == self.true_val + return cleaned_text.upper() == self.true_val.upper() @property def _type(self) -> str: diff --git a/tests/unit_tests/output_parsers/test_boolean_parser.py b/tests/unit_tests/output_parsers/test_boolean_parser.py index 3daaf610..8804c363 100644 --- a/tests/unit_tests/output_parsers/test_boolean_parser.py +++ b/tests/unit_tests/output_parsers/test_boolean_parser.py @@ -12,6 +12,14 @@ def test_boolean_output_parser_parse() -> None: result = parser.parse("NO") assert result is False + # Test valid input + result = parser.parse("yes") + assert result is True + + # Test valid input + result = parser.parse("no") + assert result is False + # Test invalid input try: parser.parse("INVALID")