Minor question template & score_answer improvements (#261)

* math prompt improvements
* ignore brackets in complex_arithmetic results
* improve additional instruction in prompt of polynomial_equations
* more strict tests for score_answer in polynomial_equations
* simplify special reward handling
* fix test_intermediate_integration
* fix sokoban dataset
* add common dataset score_answer consistency test
This commit is contained in:
Andreas Köpf 2025-03-04 21:55:09 +01:00 committed by GitHub
parent bf24999bb0
commit b2904ccab9
106 changed files with 403 additions and 507 deletions

View file

@ -6,6 +6,10 @@ from reasoning_gym.games.sokoban import SokobanConfig, SokobanDataset
def test_sokoban():
"""Test basic properties and solution of generated items"""
dataset = SokobanDataset(SokobanConfig(size=10, seed=1234))
for i, item in enumerate(dataset):
assert dataset.score_answer(answer=item["answer"], entry=item) == 1.0
# Easy
config = SokobanConfig(seed=42, size=20)
dataset = SokobanDataset(config)
@ -18,25 +22,29 @@ def test_sokoban():
# Test the scoring
assert dataset.score_answer(answer=item["answer"], entry=item) == 1.0
assert dataset.score_answer(answer="RU", entry=item) == 0.1
assert dataset.score_answer(answer=None, entry=item) == 0.0
# Medium
config = SokobanConfig(seed=42, min_h=40, max_h=50, min_w=40, max_w=50, min_boxes=20, max_boxes=30, size=3)
dataset = SokobanDataset(config)
for item in dataset:
assert isinstance(item, dict)
assert "question" in item
assert "answer" in item
assert "metadata" in item
# Test the scoring
assert dataset.score_answer(answer=item["answer"], entry=item) == 1.0
assert dataset.score_answer(answer="RU", entry=item) == 0.0
assert dataset.score_answer(answer=None, entry=item) == 0.0
# Hard
config = SokobanConfig(seed=42, min_h=400, max_h=500, min_w=400, max_w=500, min_boxes=50, max_boxes=50, size=1)
config = SokobanConfig(
seed=42, min_h=15, max_h=20, min_w=15, max_w=20, min_boxes=10, max_boxes=15, size=3, max_depth=90
)
dataset = SokobanDataset(config)
for item in dataset:
assert isinstance(item, dict)
assert "question" in item
assert "answer" in item
assert "metadata" in item
# Test the scoring
assert dataset.score_answer(answer=item["answer"], entry=item) == 1.0
assert dataset.score_answer(answer=None, entry=item) == 0.0
# min == max ranges
config = SokobanConfig(
seed=42, min_h=11, max_h=11, min_w=11, max_w=11, min_boxes=11, max_boxes=11, size=3, max_depth=60
)
dataset = SokobanDataset(config)
for item in dataset: