#teachers_dashboard.py import gradio as gr import thinkingframes from dotenv import load_dotenv from openai import OpenAI from database_functions import get_submissions_by_date_and_class, getUniqueSubmitDate, getUniqueClass load_dotenv() client = OpenAI() def validate_password(password): correct_password = "Happyteacher2024" return password == correct_password def show_dashboard(password): if validate_password(password): date_choices = getUniqueSubmitDate() class_choices = getUniqueClass() return "
Dashboard content goes here
", gr.update(visible=True), gr.update(visible=False), gr.Dropdown(choices=date_choices, label="Select a date"), gr.Dropdown(choices=class_choices, label="Select a class") return "Incorrect password
", gr.update(visible=False), gr.update(visible=False), gr.Dropdown(choices='', label="Select a date"), gr.Dropdown(choices='', label="Select a class") def updateReportByDateAndClass(start_date, end_date, class_name, display_ai_feedback): json_output = get_submissions_by_date_and_class(start_date, end_date, class_name, display_ai_feedback) chat_history = [] return json_output, chat_history def chat_with_json_output(query, json_output, chat_history): questions = thinkingframes.questions strategies = [strategy[0] for strategy in thinkingframes.strategy_options.values()] picture_description = thinkingframes.description history_openai_format = [ {"role": "system", "content": f"Here is the JSON output of the student responses and AI interactions:\n{json_output}"}, {"role": "user", "content": f"Selected Analysis Prompt: {query}"} ] for human, assistant in chat_history: history_openai_format.append({"role": "user", "content": human}) history_openai_format.append({"role": "assistant", "content": assistant}) system_prompt = f""" You are an English Language Teacher analyzing student responses to oral questions. The questions and strategies used are: Questions: 1. {questions[0]} 2. {questions[1]} 3. {questions[2]} Strategies: 1. {strategies[0]} 2. {strategies[1]} 3. {strategies[2]} Picture Description (relevant only for Question 1): {picture_description} Based on the provided JSON output and the selected analysis prompt, please perform the following: General Analysis: - If the selected prompt is "General Analysis: Summarize overall performance and identify patterns": - Summarize the overall performance of students for each question, considering the relevant strategies and picture description. - Identify notable patterns and trends in student responses and AI feedback. - Highlight exemplary responses or feedback that demonstrate effective use of strategies or insightful interpretations. Specific Analysis: - If the selected prompt is "Specific Analysis: Identify common misconceptions and suggest interventions": - Identify common misconceptions or errors in student responses. - Suggest targeted interventions to address these misconceptions and improve student understanding. - If the selected prompt is "Specific Analysis: Analyze the effectiveness of strategies used": - Analyze the effectiveness of each strategy used by students. - Provide recommendations for improving the use of strategies and enhancing student performance. - If the selected prompt is "Specific Analysis: Compare performance of different student groups": - Compare the performance of different student groups (e.g., high performers vs. struggling students). - Offer insights and recommendations based on the identified differences and patterns. - If the selected prompt is "Specific Analysis: Track individual student progress over time": - Track the progress of individual students over time, if data is available. - Highlight areas where students have shown improvement or require additional support. Completion Rate Analysis: - If the selected prompt is "Completion Rate Analysis: Breakdown of questions attempted and insights": - Identify the students who have attempted all three questions, two questions, only Question 1, or no questions at all. - Calculate the percentage of students in each category. - Provide insights on the potential reasons for the completion rates (e.g., difficulty level, student engagement, etc.). - Offer recommendations for improving completion rates, such as providing additional support or incentives. Please provide the analysis in a clear and organized format, using bullet points, tables, or paragraphs as appropriate. Include specific examples and data-driven insights to support your recommendations. Focus on actionable feedback that can directly impact student learning and engagement. """ history_openai_format.append({"role": "user", "content": system_prompt}) history_openai_format.append({"role": "user", "content": query}) response = client.chat.completions.create( model='gpt-4o-2024-05-13', messages=history_openai_format, temperature=0.2, max_tokens=1000, stream=True ) partial_message = "" for chunk in response: if chunk.choices[0].delta.content is not None: partial_message += chunk.choices[0].delta.content yield chat_history + [("Assistant", partial_message)] chat_history.append(("Assistant", partial_message)) return chat_history