File size: 1,422 Bytes
217abc3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import json
from quiz_generator import QuizGenerator
from .state import get_processed_contents

def propose_question_handler(guidance, model_name, temperature):
    """Generate a single question based on user guidance or feedback."""
    
    if not get_processed_contents():
        return "Please upload and process files in the 'Generate Learning Objectives' tab first.", None
    
    if not os.getenv("OPENAI_API_KEY"):
        return "OpenAI API key not found.", None
    
    try:
        quiz_generator = QuizGenerator(
            api_key=os.getenv("OPENAI_API_KEY"), 
            model=model_name, 
            temperature=float(temperature)
        )
        
        question = quiz_generator.generate_multiple_choice_question_from_feedback(
            guidance, get_processed_contents()
        )
        
        formatted_question = {
            "id": question.id,
            "question_text": question.question_text,
            "options": [{"text": opt.option_text, "is_correct": opt.is_correct, "feedback": opt.feedback} for opt in question.options],
            "learning_objective": question.learning_objective,
            "source_reference": question.source_reference,
            "feedback": question.feedback
        }
        
        return "Question generated successfully.", json.dumps(formatted_question, indent=2)
    except Exception as e:
        return f"Error: {str(e)}", None