Turbiling's picture
Create app.py
96252bf verified
Raw
History Blame Contribute Delete
6.29 kB
import os
import datetime
import gradio as gr
from docx import Document
from groq import Groq
# ============ Initialize Groq Client ============
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
client = Groq(api_key=GROQ_API_KEY)
# ============ Generate Backward Design Lesson Plans ============
def generate_backward_plan(class_, subject, topic, students, duration, date, teacher):
# ---------- English Version ----------
prompt_en = f"""
Generate a detailed lesson plan for Pakistani Curriculum using the BACKWARD DESIGN model.
Follow these three stages clearly:
1. Stage 1 – Identify Desired Results (Learning Outcomes aligned with Pakistan Curriculum)
2. Stage 2 – Determine Acceptable Evidence (Assessment aligned with SLOs)
3. Stage 3 – Plan Learning Experiences and Instruction (Activities, Methods, Resources)
Lesson Information:
Class: {class_}
Subject: {subject}
Topic: {topic}
Number of Students: {students}
Duration: {duration} minutes
Date: {date}
Teacher: {teacher}
Ensure relevance to Pakistani educational context.
"""
completion_en = client.chat.completions.create(
model="llama-3.1-8b-instant",
messages=[
{"role": "system", "content": "You are an expert Pakistani curriculum lesson planner."},
{"role": "user", "content": prompt_en},
],
)
english_plan = completion_en.choices[0].message.content.strip()
# ---------- Save English Word File ----------
docx_file = f"Backward_Design_Lesson_{teacher}_EN.docx"
doc = Document()
doc.add_heading("Backward Design Lesson Plan (Pakistan Curriculum)", 0)
doc.add_paragraph(f"Class: {class_}")
doc.add_paragraph(f"Subject: {subject}")
doc.add_paragraph(f"Topic: {topic}")
doc.add_paragraph(f"Number of Students: {students}")
doc.add_paragraph(f"Duration: {duration} minutes")
doc.add_paragraph(f"Date: {date}")
doc.add_paragraph(f"Teacher: {teacher}")
doc.add_paragraph("\n" + english_plan)
doc.add_paragraph("\nDeveloped by Najaf Ali Sharqi")
doc.save(docx_file)
# ---------- Urdu Version ----------
prompt_ur = f"""
پاکستان کے نصاب (کریکولم) کے مطابق "بیکورڈ ڈیزائن" ماڈل پر مبنی تفصیلی سبق کا منصوبہ اردو میں تیار کریں۔
تین مراحل کو واضح طور پر شامل کریں:
1. مرحلہ اوّل – مطلوبہ نتائج کی شناخت (مقاصدِ سبق / ایس ایل اوز)
2. مرحلہ دوم – قابلِ قبول شواہد کا تعین (تشخیص)
3. مرحلہ سوم – تدریسی تجربات اور سرگرمیوں کی منصوبہ بندی (طرزِ تدریس، وسائل، طلباء کی شرکت)
معلومات:
کلاس: {class_}
مضمون: {subject}
موضوع: {topic}
طلباء کی تعداد: {students}
دورانیہ: {duration} منٹ
تاریخ: {date}
استاد: {teacher}
سب کچھ خالص اردو میں لکھیں۔ انگریزی الفاظ اردو رسم الخط میں لکھے جائیں۔
ناستعلیق انداز اپنائیں۔
"""
completion_ur = client.chat.completions.create(
model="openai/gpt-oss-120b",
messages=[
{"role": "system", "content": "آپ ایک ماہر پاکستانی نصاب کے استاد ہیں۔"},
{"role": "user", "content": prompt_ur},
],
)
urdu_plan = completion_ur.choices[0].message.content.strip()
# ---------- Save Urdu Markdown File ----------
md_file = f"Backward_Design_Lesson_{teacher}_UR.md"
with open(md_file, "w", encoding="utf-8") as f:
f.write("# سبق کا منصوبہ (بیکورڈ ڈیزائن – پاکستانی نصاب)\n\n")
f.write(f"**کلاس:** {class_}\n\n")
f.write(f"**مضمون:** {subject}\n\n")
f.write(f"**موضوع:** {topic}\n\n")
f.write(f"**طلباء کی تعداد:** {students}\n\n")
f.write(f"**دورانیہ:** {duration} منٹ\n\n")
f.write(f"**تاریخ:** {date}\n\n")
f.write(f"**استاد:** {teacher}\n\n")
f.write("\n---\n\n")
f.write(urdu_plan)
f.write("\n\n---\n\n**تیار کنندہ:** نجف علی شرقی")
# ---------- Return Outputs ----------
return english_plan, urdu_plan, docx_file, md_file
# ============ Gradio App Interface ============
with gr.Blocks(title="Backward Design Lesson Plan Generator (Pakistan Curriculum)") as app:
gr.Markdown(
"""
# 📘 Backward Design Lesson Plan Generator
**Generate bilingual lesson plans aligned with Pakistan Curriculum (Grades 1–12)**
Developed by **Najaf Ali Sharqi**
"""
)
with gr.Row():
class_ = gr.Dropdown(
[f"Grade {i}" for i in range(1, 13)],
label="Class / جماعت"
)
subject = gr.Dropdown(
[
"Urdu", "English", "Arabic", "Science", "Mathematics", "Biology",
"Chemistry", "Physics", "Zoology", "Botany", "Civics", "Islamiat",
"Pakistan Studies", "Computer Science"
],
label="Subject / مضمون",
)
with gr.Row():
topic = gr.Textbox(label="Topic / موضوع")
teacher = gr.Textbox(label="Teacher Name / استاد کا نام")
with gr.Row():
date = gr.Textbox(label="Date (YYYY-MM-DD) / تاریخ")
students = gr.Slider(1, 200, step=1, label="Number of Students / طلباء کی تعداد")
duration = gr.Slider(30, 60, step=5, label="Time Duration (minutes) / دورانیہ")
generate_btn = gr.Button("✨ Generate Lesson Plans")
theme_toggle = gr.Radio(["Light 🌞", "Dark 🌙"], label="Theme")
english_output = gr.Textbox(label="English Lesson Plan", lines=15)
urdu_output = gr.Textbox(label="اردو سبق کا منصوبہ", lines=15, rtl=True)
english_file = gr.File(label="📘 Download English Plan (Word)")
urdu_file = gr.File(label="📗 اردو منصوبہ (Markdown)")
generate_btn.click(
generate_backward_plan,
inputs=[class_, subject, topic, students, duration, date, teacher],
outputs=[english_output, urdu_output, english_file, urdu_file],
)
app.launch()