Add attributes for curriculum

Co-authored-by: EduardDurech <39579228+EduardDurech@users.noreply.github.com>
This commit is contained in:
Andreas Koepf 2025-02-10 18:58:07 +01:00
parent bea9e6d96a
commit 8772041afb
6 changed files with 246 additions and 1 deletions

View file

@ -2,6 +2,7 @@ import random
from dataclasses import dataclass
from typing import Optional
from ..coaching import AttributeType, BaseCurriculum, RangeAttributeDefinition
from ..factory import ProceduralDataset, register_dataset
@ -112,5 +113,36 @@ class ChainSum(ProceduralDataset):
return expression, result
class ChainSumCurriculum(BaseCurriculum):
def __init__(self):
super().__init__(ChainSumCurriculum.__name__, ChainSumConfig)
# Define attributes
self._define_attributes(
(
RangeAttributeDefinition(
name="num_terms",
levels=[2, 3, 4, 5],
default_level=0, # Start with 2 terms
description="Maximum number of terms in the expression",
attr_type=AttributeType.APPEND,
min_value=2, # Ensure at least 2 terms
lower_field_name="min_terms",
upper_field_name="max_terms",
),
RangeAttributeDefinition(
name="num_digits",
levels=[1, 2, 4, 10],
default_level=0, # Start with 1-digit numbers
description="Number of digits in each operand",
attr_type=AttributeType.APPEND,
min_value=1, # Ensure numbers are at least 1 digit
lower_field_name="min_digits",
upper_field_name="max_digits",
),
)
)
# Register the dataset
register_dataset("chain_sum", ChainSum, ChainSumConfig)