MentorFlow / student_agent_dev /mock_task_generator.py
Cornelius
Deploy MentorFlow with GPU support
a52f96d
"""
Simple mock task generator for independent student testing.
"""
from interfaces import TaskGeneratorInterface, Task
import random
class MockTaskGenerator(TaskGeneratorInterface):
"""Simple task generator with templates."""
def __init__(self):
self.topics = ['history', 'science', 'literature', 'geography', 'current_events']
self.difficulties = ['easy', 'medium', 'hard']
self.passages = {
'history': "The Industrial Revolution began in Britain in the late 18th century. It brought major changes to manufacturing and society.",
'science': "Photosynthesis is the process by which plants use sunlight to convert carbon dioxide and water into glucose and oxygen.",
'literature': "Shakespeare wrote numerous plays including Hamlet, Romeo and Juliet, and Macbeth during the Elizabethan era.",
'geography': "The Amazon rainforest is the world's largest tropical rainforest, spanning nine countries in South America.",
'current_events': "Artificial intelligence is rapidly advancing, with applications in healthcare, transportation, and education."
}
self.task_counter = 0
def generate_task(self, topic: str, difficulty: str) -> Task:
passage = self.passages.get(topic, f"This is a passage about {topic}.")
questions = {
'easy': f"What is the main topic of this passage?",
'medium': f"What can be inferred from this passage about {topic}?",
'hard': f"Which statement best synthesizes the information in this passage?"
}
question = questions[difficulty]
# Generate choices
correct = f"It discusses {topic}"
wrong = [
f"It's primarily about a different subject",
f"The passage focuses on unrelated matters",
f"This is not the main theme"
]
choices = [correct] + wrong
answer_idx = 0
# Shuffle
combined = list(enumerate(choices))
random.shuffle(combined)
answer_idx = [i for i, (orig, _) in enumerate(combined) if orig == 0][0]
choices = [c for _, c in combined]
self.task_counter += 1
return Task(
passage=passage,
question=question,
choices=choices,
answer=answer_idx,
topic=topic,
difficulty=difficulty,
task_id=f"{topic}_{difficulty}_{self.task_counter}"
)
def get_available_topics(self):
return self.topics
def get_available_difficulties(self):
return self.difficulties