File size: 1,940 Bytes
aca0479
99f2a33
ab43322
99f2a33
1604566
 
ab43322
1604566
 
 
 
 
 
 
 
 
 
aca0479
 
1604566
 
 
 
 
 
 
 
 
 
aca0479
 
1604566
 
 
 
 
 
 
 
 
 
aca0479
 
1604566
 
 
 
 
 
aca0479
1604566
aca0479
 
 
 
 
 
 
1604566
 
aca0479
 
1604566
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""Top-level task exports — grader paths point to CLASS names in graders module."""

from __future__ import annotations

from server.tasks import TASKS as TASK_REGISTRY
from server.tasks import get_task


TASKS = [
    {
        "id": "easy",
        "task_id": "easy",
        "name": "easy",
        "title": "Single Query Routing",
        "difficulty": "easy",
        "description": "Route a single LLM query to the optimal model tier while minimising carbon footprint and latency.",
        "max_steps": 10,
        "grader": "graders:EasyGrader",
        "graders": ["graders:EasyGrader"],
        "reward_range": [0.0, 1.0],
    },
    {
        "id": "medium",
        "task_id": "medium",
        "name": "medium",
        "title": "Multi-Query Episode",
        "difficulty": "medium",
        "description": "Route 3 queries of varying complexity. LARGE model incurs -0.2 penalty per use.",
        "max_steps": 20,
        "grader": "graders:MediumGrader",
        "graders": ["graders:MediumGrader"],
        "reward_range": [0.0, 1.0],
    },
    {
        "id": "hard",
        "task_id": "hard",
        "name": "hard",
        "title": "Stateful Carbon-Aware Routing",
        "difficulty": "hard",
        "description": "5-query episode with caching, KB lookups, cascade strategies, and carbon-aware waiting.",
        "max_steps": 50,
        "grader": "graders:HardGrader",
        "graders": ["graders:HardGrader"],
        "reward_range": [0.0, 1.0],
    },
]

TASK_IDS = [task["task_id"] for task in TASKS]
TASK_MAP = {task["task_id"]: task for task in TASKS}
easy   = TASK_MAP["easy"]
medium = TASK_MAP["medium"]
hard   = TASK_MAP["hard"]

TASK_GRADER_PAIRS = [
    ("easy",   "graders:EasyGrader"),
    ("medium", "graders:MediumGrader"),
    ("hard",   "graders:HardGrader"),
]

__all__ = [
    "TASKS", "TASK_IDS", "TASK_MAP", "TASK_REGISTRY",
    "TASK_GRADER_PAIRS", "easy", "medium", "hard", "get_task",
]