import gradio as gr from groq import Groq import os # Initialize Groq client client = Groq(api_key=os.environ["GROQ_API_KEY"]) def generate_tutor_output(subject, difficulty, student_input): prompt = f""" You are an expert tutor in {subject} at the {difficulty} level. The student has provided the following input: "{student_input}" Please generate: 1. A brief, engaging lesson on the topic (2-3 paragraphs) 2. A thought-provoking question to check understanding 3. Constructive feedback on the student's input Format your response as a JSON object with keys: "lesson", "question", "feedback" """ completion = client.chat.completions.create( messages=[ { "role": "system", "content": "You are the world's best AI tutor, renowned for your ability to explain complex concepts in an engaging, clear, and memorable way and giving math examples. Your expertise in {subject} is unparalleled, and you're adept at tailoring your teaching to {difficulty} level students. Your goal is to not just impart knowledge, but to inspire a love for learning and critical thinking.", }, { "role": "user", "content": prompt, } ], model="llama3-groq-70b-8192-tool-use-preview", max_tokens=1000, ) return completion.choices[0].message.content with gr.Blocks() as demo: gr.Markdown("# 🎓 Your AI Tutor by Farhan") with gr.Row(): with gr.Column(scale=2): subject = gr.Dropdown( ["Math", "Science", "History", "Literature", "Code", "AI"], label="Subject", info="Choose the subject of your lesson" ) difficulty = gr.Radio( ["Beginner", "Intermediate", "Advanced"], label="Difficulty Level", info="Select your proficiency level" ) student_input = gr.Textbox( placeholder="Type your query here...", label="Your Input", info="Enter the topic you want to learn" ) submit_button = gr.Button("Generate Lesson", variant="primary") with gr.Column(scale=3): lesson_output = gr.Markdown(label="Lesson") question_output = gr.Markdown(label="Comprehension Question") feedback_output = gr.Markdown(label="Feedback") gr.Markdown(""" ### How to Use 1. Select a subject from the dropdown. 2. Choose your difficulty level. 3. Enter the topic or question you'd like to explore. 4. Click 'Generate Lesson' to receive a personalized lesson, question, and feedback. 5. Review the AI-generated content to enhance your learning. 6. Feel free to ask follow-up questions or explore new topics! """) def process_output(output): try: parsed = eval(output) return parsed["lesson"], parsed["question"], parsed["feedback"] except: return "Error parsing output", "No question available", "No feedback available" submit_button.click( fn=lambda s, d, i: process_output(generate_tutor_output(s, d, i)), inputs=[subject, difficulty, student_input], outputs=[lesson_output, question_output, feedback_output] ) if __name__ == "__main__": demo.launch(server_name="0.0.0.0", server_port=7860)