Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import openai | |
| # Streamlit Session State | |
| if 'learning_objectives' not in st.session_state: | |
| st.session_state.learning_objectives = "" | |
| # Streamlit User Input Form | |
| st.title("Lesson Plan Generator") | |
| # API Key Input | |
| api_key = st.text_input("Enter your OpenAI API Key:", type="password") | |
| # Model Selection Dropdown | |
| model_choice = st.selectbox( | |
| "Select the model you want to use:", | |
| ["gpt-3.5-turbo-0301", "gpt-3.5-turbo-0613", "gpt-3.5-turbo", "gpt-4-0314", "gpt-4-0613", "gpt-4"] | |
| ) | |
| # Context, Subject, and Level | |
| context = "Your goal is to create an effective lesson plan." | |
| subject = st.text_input("Subject:", "Mathematics") | |
| level = st.text_input("Education Level:", "High School") | |
| # Initialize OpenAI API | |
| if api_key: | |
| openai.api_key = api_key | |
| # Learning Objectives | |
| st.write("### Learning Objectives:") | |
| # Initialize autogenerated objectives | |
| autogenerated_objectives = "" | |
| # Initialize status placeholder | |
| learning_status_placeholder = st.empty() | |
| disable_button_bool = False | |
| if subject and level and api_key and st.button("Generate Learning Objectives",key="generate_learning_objectives",disabled=disable_button_bool): | |
| # Display status message | |
| learning_status_placeholder.text("Generating learning objectives...") | |
| # API call to generate objectives | |
| learning_objectives_response = openai.ChatCompletion.create( | |
| model=model_choice, | |
| messages=[ | |
| {"role": "user", "content": f"Generate learning objectives for a {level} level {subject} lesson."} | |
| ] | |
| ) | |
| # Extract the generated objectives from the API response | |
| learning_objectives=learning_objectives_response['choices'][0]['message']['content'] | |
| # Save generated objectives to session state | |
| st.session_state.learning_objectives = learning_objectives.strip() | |
| # Display generated objectives | |
| learning_status_placeholder.text(f"Learning objectives generated!\n{learning_objectives.strip()}") | |
| # Generate Lesson Plan Button | |
| if st.button("Generate Lesson Plan") and api_key: | |
| # Construct the prompt as a dictionary | |
| prompt_dict = { | |
| "context": context, | |
| "subject": subject, | |
| "level": level, | |
| "learning_objectives": st.session_state.learning_objectives, | |
| "tasks": [ | |
| {"task": "Curate educational material", "objective": "To provide accurate and relevant information"}, | |
| {"task": "Evaluate the material", "objective": "To ensure alignment with educational standards"}, | |
| {"task": "Create assessment tools", "objective": "To measure student understanding and retention"}, | |
| {"task": "Design interactive activities", "objective": "To facilitate active learning and engagement"} | |
| ], | |
| "output_format": """Present the lesson plan in a structured format. | |
| \nTitle: | |
| \nGrade Level: RESTATED FROM ABOVE | |
| \nSubject: RESTATED FROM ABOVE | |
| \nObjectives: RESTATED FROM ABOVE | |
| \nActivities: | |
| \nAssessment: Application of knowledge and skills through a task | |
| \nProcedure: Formatted as a list of steps and substeps | |
| \nResources: | |
| \nNotes: | |
| """ | |
| } | |
| # Convert the dictionary to a string | |
| prompt_str = str(prompt_dict) | |
| # API call to generate the lesson plan | |
| lesson_plan_response = openai.ChatCompletion.create( | |
| model=model_choice, | |
| messages=[ | |
| {"role": "user", "content": f"Create a lesson plan based on the following parameters: {prompt_str}"} | |
| ] | |
| ) | |
| # Display status message | |
| lesson_plan=st.text("Generating lesson plan...") | |
| # Extract and display the lesson plan | |
| assistant_reply = lesson_plan_response['choices'][0]['message']['content'] | |
| lesson_plan=st.text(assistant_reply.strip()) |