Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import cohere | |
| from dotenv import load_dotenv | |
| # Load environment variables | |
| load_dotenv() | |
| # Initialize Cohere API client | |
| co = cohere.Client() | |
| # Adaptive learning functions | |
| def assess_knowledge(name, experience, goals): | |
| try: | |
| level_prompt = f"User Name: {name}, Experience: {experience}, Goals: {goals}. Classify as beginner, intermediate, or advanced." | |
| response = co.generate(prompt=level_prompt) | |
| level = response.generations[0].text.strip() | |
| return level | |
| except Exception as e: | |
| return "Error in knowledge assessment: " + str(e) | |
| def generate_explanation(topic, level): | |
| try: | |
| explanation_prompt = f"Explain the topic '{topic}' to a {level} level student." | |
| response = co.generate(prompt=explanation_prompt) | |
| explanation = response.generations[0].text.strip() | |
| return explanation | |
| except Exception as e: | |
| return "Error in generating explanation: " + str(e) | |
| def generate_challenge(topic, level): | |
| try: | |
| challenge_prompt = f"Generate a {level} level challenge for learning '{topic}' in computer science." | |
| response = co.generate(prompt=challenge_prompt) | |
| challenge = response.generations[0].text.strip() | |
| return challenge | |
| except Exception as e: | |
| return "Error in generating challenge: " + str(e) | |
| def tutor_interface(name, experience, goals, topic, request_challenge=False): | |
| # Assess knowledge and generate explanation as before | |
| level = assess_knowledge(name, experience, goals) | |
| explanation = generate_explanation(topic, level) | |
| # Generate challenge if requested | |
| if request_challenge: | |
| challenge = generate_challenge(topic, level) | |
| return f"**Level:** {level}\n\n**Explanation:**\n{explanation}\n\n**Challenge:**\n{challenge}" | |
| else: | |
| return f"**Level:** {level}\n\n**Explanation:**\n{explanation}" | |
| # Updated Gradio interface with challenge request option | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("# Adaptive Computer Science Tutor") | |
| gr.Markdown("Welcome to your personalized Computer Science Tutor! This tutor adapts to your level and learning pace, offering explanations and practice challenges in areas like data structures, algorithms, and more.") | |
| with gr.Row(): | |
| with gr.Column(): | |
| name = gr.Textbox(label="Your Name", placeholder="Enter your name") | |
| experience = gr.Textbox(label="Describe your programming experience", placeholder="e.g., Beginner, 2 years Python") | |
| with gr.Column(): | |
| goals = gr.Textbox(label="What are your learning goals?", placeholder="What do you want to achieve?") | |
| topic = gr.Textbox(label="Topic you'd like to learn about", placeholder="e.g., Binary Search, Arrays") | |
| request_challenge = gr.Checkbox(label="Include a practice challenge", value=False) | |
| output = gr.Markdown(label="Tutor's Response", min_height=48) | |
| submit_button = gr.Button("Get Started", variant="primary") | |
| submit_button.click(tutor_interface, inputs=[name, experience, goals, topic, request_challenge], outputs=output) | |
| if __name__ == "__main__": | |
| demo.launch() |