added basic arith curricula (#276)

* added basic arith curricula
* register BasicArithmeticCurriculum

---------

Co-authored-by: Andreas Koepf <andreas.koepf@provisio.com>
This commit is contained in:
joesharratt1229 2025-03-07 22:54:49 +01:00 committed by GitHub
parent 35c32cd5e7
commit 98def56bb4
3 changed files with 82 additions and 4 deletions

View file

@ -2,6 +2,7 @@ from dataclasses import dataclass
from random import Random
from typing import Any, Literal, Optional
from ..coaching import AttributeType, BaseCurriculum, RangeAttributeDefinition
from ..factory import ProceduralDataset, register_dataset
@ -94,9 +95,8 @@ class BasicArithmeticDataset(ProceduralDataset):
"question": question,
"answer": str(result),
"metadata": {
"num_terms": num_terms,
"num_digits": num_digits,
"expression": expression,
"difficulty": {"num_terms": num_terms, "num_digits": num_digits},
},
}
@ -233,5 +233,32 @@ class BasicArithmeticDataset(ProceduralDataset):
return template.format(expression)
class BasicArithmeticCurriculum(BaseCurriculum):
def __init__(self):
super().__init__(name=BasicArithmeticCurriculum.__name__, config_cls=BasicArithmeticDatasetConfig)
self._define_attributes(
RangeAttributeDefinition(
name="num_terms",
levels=[2, 5, 10, 20],
default_level=0,
description="Number of terms in the expression",
attr_type=AttributeType.APPEND,
min_value=2,
lower_field_name="min_terms",
upper_field_name="max_terms",
),
RangeAttributeDefinition(
name="num_digits",
levels=[1, 2, 5, 10],
default_level=0,
description="Number of digits in the numbers",
attr_type=AttributeType.APPEND,
min_value=1,
lower_field_name="min_digits",
upper_field_name="max_digits",
),
)
# Register the dataset
register_dataset("basic_arithmetic", BasicArithmeticDataset, BasicArithmeticDatasetConfig)
register_dataset("basic_arithmetic", BasicArithmeticDataset, BasicArithmeticDatasetConfig, BasicArithmeticCurriculum)