fix: evaluate_turn_regex crashes on a non-string agent_reply (#1723)
This commit is contained in:
@@ -112,7 +112,7 @@ def evaluate_turn_regex(
|
|||||||
return ("failure", f"tool result matched error pattern {pat.pattern!r}: {snippet!r}")
|
return ("failure", f"tool result matched error pattern {pat.pattern!r}: {snippet!r}")
|
||||||
|
|
||||||
# Agent verbally gave up?
|
# Agent verbally gave up?
|
||||||
if agent_reply:
|
if isinstance(agent_reply, str) and agent_reply:
|
||||||
for pat in _REPLY_GIVE_UP_PATTERNS:
|
for pat in _REPLY_GIVE_UP_PATTERNS:
|
||||||
m = pat.search(agent_reply)
|
m = pat.search(agent_reply)
|
||||||
if m:
|
if m:
|
||||||
|
|||||||
14
tests/test_teacher_eval_nonstring_reply.py
Normal file
14
tests/test_teacher_eval_nonstring_reply.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
from src.teacher_escalation import evaluate_turn_regex
|
||||||
|
|
||||||
|
|
||||||
|
def test_evaluate_turn_regex_tolerates_non_string_reply():
|
||||||
|
# agent_reply is typed str but is the raw LLM turn output; a non-string
|
||||||
|
# (dict / number from a malformed turn) made pat.search(agent_reply) raise
|
||||||
|
# TypeError. The tool_results branch already isinstance-guards its rows.
|
||||||
|
assert evaluate_turn_regex([], 123) == ("ok", None)
|
||||||
|
assert evaluate_turn_regex([], {"text": "I cannot do that"}) == ("ok", None)
|
||||||
|
|
||||||
|
|
||||||
|
def test_evaluate_turn_regex_still_flags_give_up_string():
|
||||||
|
status, _ = evaluate_turn_regex([], "I don't have a tool to do that")
|
||||||
|
assert status == "failure"
|
||||||
Reference in New Issue
Block a user