import gradio as gr import pdfplumber import docx import os import openai client = openai.OpenAI() # Uses OPENAI_API_KEY from environment def extract_text_from_file(file): if file.name.endswith(".pdf"): with pdfplumber.open(file.name) as pdf: return "\n".join(page.extract_text() for page in pdf.pages if page.extract_text()) elif file.name.endswith(".docx"): doc = docx.Document(file.name) return "\n".join([p.text for p in doc.paragraphs]) elif file.name.endswith(".txt"): return file.read().decode("utf-8") else: return "Unsupported file type." def generate_content(tek_text): prompt = f""" You are an AI education assistant. The following is a list of TEKS (Texas Essential Knowledge and Skills) or similar learning standards: {tek_text} For each TEK or standard, generate: 1. A short summary or note explaining the concept. 2. A list of 3-5 important vocabulary words. 3. 2-3 practice problems (multiple choice, fill in the blank, or short answer). Format: TEK: Notes: Vocabulary: Practice Problems: 1. 2. --- """ response = client.chat.completions.create( model="gpt-3", messages=[ {"role": "system", "content": "You are a helpful AI educator."}, {"role": "user", "content": prompt} ], temperature=0.7 ) return response.choices[0].message.content def process_file(file): teks_text = extract_text_from_file(file) if teks_text.startswith("Unsupported"): return teks_text return generate_content(teks_text) with gr.Blocks() as demo: gr.Markdown("# 📚 TEKS Learning Generator\\nUpload a TEKS or learning standard document (PDF, DOCX, or TXT), and the AI will generate notes, vocabulary, and practice problems for each TEK.") with gr.Row(): file_input = gr.File(label="Upload TEKS Document") output = gr.Textbox(label="AI-Generated Output", lines=30) submit_btn = gr.Button("Generate Learning Content") submit_btn.click(fn=process_file, inputs=file_input, outputs=output) if __name__ == "__main__": demo.launch()