From a43bc49d970ebd1bd89776b3f158919c2fba1316 Mon Sep 17 00:00:00 2001 From: Jannik Straube Date: Wed, 31 Dec 2025 10:35:35 +0100 Subject: [PATCH] fix: handle empty completions in parse_answer --- tests/test_parser.py | 11 +++++++++++ verifiers/parsers/parser.py | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/test_parser.py b/tests/test_parser.py index 214033eb6..0f1cf9fa7 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -45,6 +45,17 @@ def test_parse_answer_with_completion(self, basic_parser): result = basic_parser.parse_answer(completion) assert result == "The answer is 4" + def test_parse_answer_with_empty_completion(self, basic_parser): + """Test parse_answer with empty completion list.""" + result = basic_parser.parse_answer([]) + assert result is None + + def test_parse_answer_with_no_assistant_messages(self, basic_parser): + """Test parse_answer with completion containing no assistant messages.""" + completion = [{"role": "user", "content": "Hello"}] + result = basic_parser.parse_answer(completion) + assert result is None + def test_get_format_reward_func(self, basic_parser): """Test that format reward function returns 1.0 by default.""" reward_func = basic_parser.get_format_reward_func() diff --git a/verifiers/parsers/parser.py b/verifiers/parsers/parser.py index 01955e6de..cf3307e41 100644 --- a/verifiers/parsers/parser.py +++ b/verifiers/parsers/parser.py @@ -42,7 +42,10 @@ def parse_answer(self, completion: Messages) -> str | None: if isinstance(completion, str): return self.parse(completion) else: - ans = str(self.get_assistant_messages(completion)[-1].get("content", "")) + assistant_messages = self.get_assistant_messages(completion) + if not assistant_messages: + return None + ans = str(assistant_messages[-1].get("content", "")) return self.parse(ans) def get_format_reward_func(self) -> Callable: