Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from openai import OpenAI | |
| import os | |
| ACCESS_TOKEN = os.getenv("HF_TOKEN") | |
| client = OpenAI( | |
| base_url="https://api-inference.huggingface.co/v1/", | |
| api_key=ACCESS_TOKEN, | |
| ) | |
| def generate_study_material( | |
| topic, | |
| difficulty, | |
| question_type, | |
| focus_areas, | |
| anxiety_level, | |
| num_questions | |
| ): | |
| # Customize prompt based on anxiety level and learning focus | |
| anxiety_prompts = { | |
| "High": "Create a gradual, confidence-building set of questions. Start with easier concepts and progressively increase difficulty. Include encouraging notes.", | |
| "Medium": "Balance challenge with achievability. Include hints for tougher questions and positive reinforcement.", | |
| "Low": "Focus on comprehensive concept testing while maintaining an encouraging tone." | |
| } | |
| focus_prompt = { | |
| "concept_understanding": "Emphasize questions that test deep understanding rather than memorization.", | |
| "problem_solving": "Include scenario-based questions that require analytical thinking.", | |
| "quick_recall": "Focus on key definitions and fundamental concepts.", | |
| "practical_application": "Create questions based on real-world applications." | |
| } | |
| base_prompt = f""" | |
| Act as an expert educational psychologist and subject matter expert creating an exam preparation guide. | |
| Topic: {topic} | |
| Difficulty: {difficulty} | |
| Question Type: {question_type} | |
| Number of Questions: {num_questions} | |
| Special Considerations: | |
| - Anxiety Level: {anxiety_level} | |
| {anxiety_prompts[anxiety_level]} | |
| - Learning Focus: {focus_areas} | |
| {focus_prompt[focus_areas]} | |
| Generate questions following these guidelines: | |
| 1. Start with a brief confidence-building message | |
| 2. Include clear, unambiguous questions | |
| 3. Provide detailed explanations for correct answer | |
| 4. Add study tips relevant to the topic | |
| 5. Include a "Remember" section with key points | |
| Format: | |
| - For Multiple Choice: Include 4 options with explanations for correct one only | |
| - For Short Answer: Provide structure hints and model answers | |
| - For Descriptive: Break down marking criteria and include outline points | |
| Additional Requirements: | |
| - Include think-aloud strategies for problem-solving | |
| - Add time management suggestions | |
| - Highlight common misconceptions to avoid | |
| - End with a positive reinforcement message | |
| """ | |
| try: | |
| messages = [ | |
| {"role": "system", "content": "You are an expert educational content generator."}, | |
| {"role": "user", "content": base_prompt} | |
| ] | |
| response = client.chat.completions.create( | |
| model="Qwen/QwQ-32B-Preview", | |
| messages=messages, | |
| max_tokens=1700, | |
| temperature=0.7, | |
| top_p=0.9 | |
| ) | |
| return response.choices[0].message.content | |
| except Exception as e: | |
| return f"An error occurred: {str(e)}\nServer is bussy! Please come back later." | |
| def create_interface(): | |
| with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue")) as iface: | |
| gr.Markdown(""" | |
| # <div align="center"><strong>📚 Exam Preparation Assistant</strong></div> | |
| Welcome to your personalized exam preparation assistant! This tool is designed to help you: | |
| - Build confidence through practiced learning | |
| - Understand concepts deeply | |
| - Reduce exam anxiety through structured practice | |
| Remember: Every practice session brings you closer to mastery! 🌟 | |
| """) | |
| with gr.Row(): | |
| with gr.Column(): | |
| topic = gr.Textbox( | |
| label="Topic or Subject", | |
| placeholder="Enter the topic you want to study (e.g., 'Python Lists and Tuples', 'Chemical Bonding')", | |
| lines=2 | |
| ) | |
| difficulty = gr.Radio( | |
| choices=["Beginner", "Intermediate", "Advanced"], | |
| label="Difficulty Level", | |
| value="Intermediate", | |
| info="Choose based on your current understanding" | |
| ) | |
| question_type = gr.Radio( | |
| choices=["Multiple Choice", "Short Answer", "Descriptive"], | |
| label="Question Type", | |
| value="Multiple Choice", | |
| info="Select the format that best helps your learning" | |
| ) | |
| focus_areas = gr.Radio( | |
| choices=[ | |
| "concept_understanding", | |
| "problem_solving", | |
| "quick_recall", | |
| "practical_application" | |
| ], | |
| label="Learning Focus", | |
| value="concept_understanding", | |
| info="What aspect do you want to improve?" | |
| ) | |
| anxiety_level = gr.Radio( | |
| choices=["High", "Medium", "Low"], | |
| label="Current Anxiety Level", | |
| value="Medium", | |
| info="This helps us adjust the difficulty progression" | |
| ) | |
| num_questions = gr.Slider( | |
| minimum=1, | |
| maximum=3, | |
| value=5, | |
| step=1, | |
| label="Number of Questions" | |
| ) | |
| submit_btn = gr.Button( | |
| "Generate Study Material", | |
| variant="primary" | |
| ) | |
| with gr.Column(): | |
| output = gr.Textbox( | |
| label="Your Personalized Study Material", | |
| lines=20, | |
| show_copy_button=True | |
| ) | |
| # Example scenarios | |
| gr.Examples( | |
| examples=[ | |
| [ | |
| "Python Functions and Basic Programming", | |
| "Beginner", | |
| "Multiple Choice", | |
| "concept_understanding", | |
| "High", | |
| 5 | |
| ], | |
| [ | |
| "Data Structures - Arrays and Linked Lists", | |
| "Intermediate", | |
| "Short Answer", | |
| "problem_solving", | |
| "Medium", | |
| 5 | |
| ], | |
| [ | |
| "Advanced Algorithms - Dynamic Programming", | |
| "Advanced", | |
| "Descriptive", | |
| "practical_application", | |
| "Low", | |
| 3 | |
| ] | |
| ], | |
| inputs=[ | |
| topic, | |
| difficulty, | |
| question_type, | |
| focus_areas, | |
| anxiety_level, | |
| num_questions | |
| ], | |
| outputs=output, | |
| fn=generate_study_material, | |
| cache_examples=True | |
| ) | |
| # Usage tips | |
| gr.Markdown(""" | |
| ### 💡 Tips for Best Results | |
| 1. **Be Specific** with your topic - instead of "Math", try "Quadratic Equations" | |
| 2. **Match the Difficulty** to your current understanding | |
| 3. **Vary Question Types** to improve overall understanding | |
| 4. **Be Honest** about your anxiety level - it helps us provide better support | |
| ### 🎯 Learning Focus Options | |
| - **Concept Understanding**: Deep grasp of fundamental principles | |
| - **Problem Solving**: Analytical and application skills | |
| - **Quick Recall**: Key definitions and core concepts | |
| - **Practical Application**: Real-world usage and examples | |
| ### 🌟 Remember | |
| - Take regular breaks | |
| - Practice consistently | |
| - Focus on understanding, not just memorizing | |
| - Each practice session improves your knowledge! | |
| """) | |
| submit_btn.click( | |
| fn=generate_study_material, | |
| inputs=[ | |
| topic, | |
| difficulty, | |
| question_type, | |
| focus_areas, | |
| anxiety_level, | |
| num_questions | |
| ], | |
| outputs=output | |
| ) | |
| return iface | |
| if __name__ == "__main__": | |
| iface = create_interface() | |
| iface.launch() |