File size: 1,331 Bytes
8cd3fa7 | 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 | # server/task_generator.py
"""
Procedural policy scenario generator.
Generates variants of each task by swapping domains, severity, and actor types.
Activated by calling generate_task_variants() and updating TASK_REGISTRY.
"""
from __future__ import annotations
import random
from typing import Iterator, Dict
DOMAIN_VARIANTS = {
"social_media": ["gaming_platform", "professional_network", "dating_app", "news_forum"],
"corporate_hr": ["startup_culture", "remote_first_company", "government_agency", "university"],
"ecommerce": ["marketplace", "subscription_service", "auction_platform", "b2b_procurement"],
}
ACTOR_VARIANTS = ["new_user", "power_user", "verified_creator", "anonymous_account", "enterprise_client"]
def generate_easy_variant(base_task: Dict, domain: str) -> Dict:
variant = dict(base_task)
variant["task_id"] = f"task_easy_{domain.replace(' ', '_')}"
variant["description"] = base_task["description"].replace("social media platform", domain)
return variant
def generate_task_variants(base_task: Dict, n: int = 5) -> Iterator[Dict]:
domain_list = list(DOMAIN_VARIANTS.values())
all_domains = [d for sublist in domain_list for d in sublist]
for i in range(min(n, len(all_domains))):
domain = all_domains[i]
yield generate_easy_variant(base_task, domain)
|