File size: 9,733 Bytes
f3d6ea7
 
 
 
 
 
 
 
 
 
 
 
 
1ebaeb6
52ce651
d2dd323
 
52ce651
d2dd323
 
52ce651
d2dd323
 
52ce651
d2dd323
 
52ce651
d2dd323
 
52ce651
d2dd323
f3d6ea7
 
 
 
633c9ca
f3d6ea7
d2dd323
52ce651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d2dd323
 
 
 
 
52ce651
d2dd323
 
 
52ce651
d2dd323
 
 
284139b
a5e0414
52ce651
d2dd323
 
f3d6ea7
 
284139b
52ce651
f3d6ea7
 
633c9ca
1ebaeb6
633c9ca
 
52ce651
a5e0414
 
633c9ca
284139b
 
 
d2dd323
284139b
 
 
 
 
 
 
 
e876f40
284139b
633c9ca
284139b
 
 
 
 
 
 
 
 
 
633c9ca
 
f3d6ea7
 
 
52ce651
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import os
import openai
import streamlit as st

# Get API key from environment variable
api_key = os.environ.get("API_KEY")
if api_key is None:
    raise ValueError("API_KEY environment variable not set")

# Set API key for OpenAI
openai.api_key = api_key

def write_sidebar():
    st.sidebar.title("How to Use")
    st.sidebar.markdown("**1. Select the student's grade level.**")
    st.sidebar.markdown("Choose the grade level of the student you want to analyze.")
    st.sidebar.markdown("---")
    st.sidebar.markdown("**2. Select the student's qualifying condition(s).**")
    st.sidebar.markdown("Select one or more qualifying conditions that apply to the student.")
    st.sidebar.markdown("---")
    st.sidebar.markdown("**3. Choose a category and prompt to analyze.**")
    st.sidebar.markdown("Select the category that corresponds to the area you want to analyze (e.g., Reading, Writing). Then choose a specific prompt related to that category.")
    st.sidebar.markdown("---")
    st.sidebar.markdown("**4. Enter your student data.**")
    st.sidebar.markdown("Paste the relevant data about the student that you want to analyze. Provide information such as assessments, performance data, or observations.")
    st.sidebar.markdown("---")
    st.sidebar.markdown("**5. Check the box to generate an IEP goal.**")
    st.sidebar.markdown("If you want the tool to generate an IEP goal based on the analysis, check this box.")
    st.sidebar.markdown("---")
    st.sidebar.markdown("**6. Click the 'Generate' button to generate the selected output.**")
    st.sidebar.markdown("Once you have filled in the necessary information, click the 'Generate' button to generate the analysis or analysis with an IEP goal, depending on your selection.")

    st.sidebar.write("")
    st.sidebar.write("")

    st.sidebar.write("Note: This app uses OpenAI's GPT-3 API to generate the analysis and IEP goal. Please enter data that is relevant and appropriate for generating the output.")

def get_grade_specific_prompts(grade_level):
    prompts = {
        "Reading": [
            "Analyze the reading data of a {grade} student to determine their current reading level and identify areas for growth. Provide insights into their reading fluency, comprehension, and decoding skills.",
            "Based on the reading data of a {grade} student, summarize their reading strengths and weaknesses. Highlight specific areas that require support or intervention to enhance their overall reading abilities."
        ],
        "Writing": [
            "Analyze the writing samples and assessments of a {grade} student to assess their current writing skills. Identify their strengths and areas for improvement in areas such as organization, grammar, sentence structure, and content development.",
            "Based on the writing data of a {grade} student, evaluate their written expression. Summarize their writing strengths and areas that need development. Suggest strategies to enhance their overall writing abilities."
        ],
        "Math": [
            "Analyze the math performance data of a {grade} student to assess their current math skills. Identify their strengths and areas for improvement in various mathematical concepts such as number sense, operations, geometry, and problem-solving.",
            "Based on the math data of a {grade} student, evaluate their math abilities. Summarize their math strengths and areas that require additional support. Recommend strategies and interventions to foster their mathematical understanding and proficiency."
        ],
        "Functional": [
            "Review the functional skills data of a {grade} student to assess their current level of independence in daily living tasks. Identify their strengths and areas that require support or intervention in areas such as self-care, communication, social skills, and functional academics.",
            "Based on the functional skills data of a {grade} student, evaluate their abilities in daily living tasks. Summarize their functional strengths and areas for improvement. Provide recommendations to enhance their independence and functional skills development."
        ],
        "Speech": [
            "Analyze the speech or language assessments of a {grade} student to assess their current communication abilities. Identify their speech or language strengths and areas for improvement in areas such as articulation, fluency, vocabulary, grammar, and pragmatic skills.",
            "Based on the speech data of a {grade} student, evaluate their speech or language skills. Summarize their communication strengths and areas that require attention. Suggest interventions and strategies to support their speech or language development."
        ],
        "Behavior": [
            "Review the behavior data of a {grade} student to assess their current behavior patterns and identify factors influencing their behavior. Summarize their behavior strengths and areas for improvement. Recommend behavior management strategies or interventions to address their specific needs.",
            "Based on the behavior data of a {grade} student, evaluate their behavior patterns and trends. Summarize their behavior strengths and areas that require support. Provide guidance on effective behavior management techniques and interventions."
        ],
        "Other": [
            "Analyze the data of a {grade} student in the specified area (e.g., social skills, executive functioning, sensory integration) to assess their current abilities. Identify their strengths and areas for growth. Provide insights and suggestions to support their development and success in the given domain.",
            "Based on the data of a {grade} student in the specified area, evaluate their current abilities and areas that require attention. Summarize their strengths and areas for improvement. Recommend strategies, interventions, or accommodations to address their unique needs."
        ]
    }
    grade = grade_level if grade_level != "Pre-K" else "Pre-Kindergarten"
    grade_specific_prompts = {category: [prompt.format(grade=grade) for prompt in prompts[category]] for category in prompts}
    return grade_specific_prompts

def write_iep_assist():
    st.title("IEP Assist Premium")

    # Select the student's grade level
    st.markdown("<h3>Select the student's grade level:</h3>", unsafe_allow_html=True)
    grade_level = st.selectbox("Grade:", ["Pre-K", "K", "1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "10th", "11th", "12th"], key="grade-level")

    # Select the student's qualifying condition
    st.markdown("<h3>Select the student's qualifying condition(s):</h3>", unsafe_allow_html=True)
    qualifying_condition = st.multiselect("Qualifying Condition(s):", ["Specific Learning Disability", "Emotional Disturbance", "Autism", "Intellectual Disability", "Speech/Language Impairment", "Other Health Impairment", "Orthopedic Impairment", "Auditory Impairment", "Traumatic Brain Injury", "Deafness", "Blindness", "Developmental Delay"], key="qualifying-condition")

    grade_specific_prompts = get_grade_specific_prompts(grade_level)

    # Choose a category and prompt
    st.markdown("<h3>Choose a category and prompt:</h3>", unsafe_allow_html=True)
    selected_category = st.selectbox("Category:", options=list(grade_specific_prompts.keys()), key="category")
    prompts = grade_specific_prompts[selected_category]
    selected_prompt = st.selectbox("Prompt:", options=prompts, key="prompt")

    # Enter student data to be analyzed
    st.markdown("<h3>Enter student data to be analyzed:</h3>", unsafe_allow_html=True)
    student_data = st.text_area("Paste student data here", height=250, key="student-data")

    # Checkbox to generate IEP goal
    generate_goal = st.checkbox("Check box to Generate an IEP Goal", key="generate-goal")

    # Add a button to generate the analysis and IEP goal
    generate_button = st.button("Generate", key="generate-button", help="Click here to generate the selected output.")

    if generate_button:
        if generate_goal:
            # Call the OpenAI API and generate an effective IEP goal
            response = openai.Completion.create(
                engine="text-davinci-003",
                prompt=f"Generate an effective and measurable IEP goal for a {grade_level} student with qualifying conditions of {', '.join(qualifying_condition)}. The goal should be based on the analysis of their data and meet the following characteristics: Measurable, Specific and Clear, Attainable and Realistic, Relevant and Meaningful, Time-Bound, Individualized, Action-Oriented, Aligned with Standards and Curriculum, Collaboratively Developed, Monitored and Adjusted. Data Analysis: {selected_prompt} {student_data}",
                max_tokens=2000,
                n=1,
                stop=None,
                temperature=0.85,
            )
            goal = response["choices"][0]["text"]

            # Show the generated effective IEP goal
            st.markdown(f"<h3>Effective IEP Goal:</h3>{goal}", unsafe_allow_html=True)
        else:
            # Call the OpenAI API and generate the analysis
            response = openai.Completion.create(
                engine="text-davinci-003",
                prompt=f"{selected_prompt} {student_data} {grade_level} {qualifying_condition}",
                max_tokens=2000,
                n=1,
                stop=None,
                temperature=0.9,
            )
            statement = response["choices"][0]["text"]

            # Show the generated analysis
            st.markdown(f"<h3>Analysis:</h3>{statement}", unsafe_allow_html=True)

if __name__ == "__main__":
    write_sidebar()
    write_iep_assist()