Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""Unit tests for the truncated-response repetition guard (issue #86581)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from agent.repetition_guard import MIN_FRAGMENT_LENGTH, is_repetition_dominated
|
||||
|
||||
# The exact sentence from the #86581 incident (echoed hundreds of times by
|
||||
# the model before the provider cut it off at finish_reason=length).
|
||||
_INCIDENT_ECHO = "好,你幫我更改成 Google Gemini 4 31B。"
|
||||
|
||||
|
||||
class TestRepetitionGuard:
|
||||
def test_incident_shape_flags_repetition(self):
|
||||
# Narration + the echoed sentence on its own line, repeated (line path).
|
||||
text = ("We need to verify the model setting.\n" + _INCIDENT_ECHO + "\n") * 800
|
||||
assert is_repetition_dominated(text) is True
|
||||
|
||||
def test_repeated_sentence_without_line_breaks_flags(self):
|
||||
# Repetition loop with no line breaks — exercises the window path.
|
||||
text = _INCIDENT_ECHO * 2000
|
||||
assert len(text) >= MIN_FRAGMENT_LENGTH
|
||||
assert is_repetition_dominated(text) is True
|
||||
|
||||
def test_long_legitimate_text_not_flagged(self):
|
||||
# Long, unique prose — no 60-char window ever repeats.
|
||||
text = " ".join(
|
||||
f"Sentence number {i} describes a distinct topic with unique words "
|
||||
f"such as quasar-{i} and nebula-{i} to keep every window distinct."
|
||||
for i in range(1200)
|
||||
)
|
||||
assert len(text) >= MIN_FRAGMENT_LENGTH
|
||||
assert is_repetition_dominated(text) is False
|
||||
|
||||
def test_short_fragment_never_flagged(self):
|
||||
# Below MIN_FRAGMENT_LENGTH the guard fails open — short truncations
|
||||
# are legitimately continued even if they look repetitive.
|
||||
assert is_repetition_dominated("A. " * 50) is False
|
||||
assert is_repetition_dominated("hello ") is False
|
||||
|
||||
def test_repeat_not_dominant_not_flagged(self):
|
||||
# A repeated sentence scattered through a long unique text: repeated
|
||||
# windows exist but cover far less than half of the fragment.
|
||||
filler = " ".join(f"unique filler token {i}" for i in range(3000))
|
||||
text = filler + ("\n" + _INCIDENT_ECHO + "\n") * 30
|
||||
assert is_repetition_dominated(text) is False
|
||||
|
||||
def test_non_string_inputs(self):
|
||||
assert is_repetition_dominated("") is False
|
||||
assert is_repetition_dominated(None) is False
|
||||
assert is_repetition_dominated(12345) is False
|
||||
Reference in New Issue
Block a user