Pisethan commited on
Commit
e6a070e
Β·
verified Β·
1 Parent(s): 3eda1ab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -49
app.py CHANGED
@@ -1,29 +1,26 @@
1
- from spaces import GPU
2
  import gradio as gr
3
- import torch
4
  from transformers import pipeline
 
5
 
6
- @GPU # πŸ‘ˆ REQUIRED for Hugging Face ZeroGPU Spaces
7
- def main():
8
- # βœ… Select GPU if available
9
- device = 0 if torch.cuda.is_available() else -1
10
 
11
- # βœ… Load model pipeline
 
12
  pipe = pipeline(
13
  "text-generation",
14
  model="Pisethan/khmer-lesson-model-v2",
15
  tokenizer="Pisethan/khmer-lesson-model",
16
  device=device
17
  )
 
18
 
19
- # βœ… Dropdown values
20
- grade_options = ["1", "2", "3", "4", "5", "6"]
21
- topic_options = ["Addition", "Subtraction", "Counting", "Number Recognition", "Multiplication", "Division"]
22
- level_options = ["Beginner", "Intermediate", "Advanced"]
23
-
24
- # βœ… Generate one lesson
25
- def generate_lesson(grade, topic, level):
26
- prompt = f"""Generate a Khmer math lesson plan with the following structure:
27
 
28
  Lesson Title:
29
  Objective:
@@ -35,48 +32,45 @@ Grade: {grade}
35
  Topic: {topic}
36
  TaRL Level: {level}"""
37
 
38
- output = pipe(prompt, max_new_tokens=300, temperature=0.7, do_sample=True)
39
- return output[0]['generated_text']
40
 
41
- # βœ… Generate all combinations
42
- def generate_all_lessons():
43
- results = ""
44
- for grade in grade_options:
45
- for topic in topic_options:
46
- for level in level_options:
47
- prompt = f"""Generate a Khmer math lesson plan.
 
48
 
49
  Grade: {grade}
50
  Topic: {topic}
51
  TaRL Level: {level}"""
52
- output = pipe(prompt, max_new_tokens=200, do_sample=True, temperature=0.7)
53
- lesson = output[0]["generated_text"]
54
- results += f"πŸ”Ή αžαŸ’αž“αžΆαž€αŸ‹ {grade} | {topic} | {level}\n{lesson}\n\n{'-'*50}\n\n"
55
- return results
56
-
57
- # βœ… Gradio UI
58
- with gr.Blocks() as demo:
59
- gr.Markdown("## πŸ€– αž’αŸ’αž“αž€αž‡αŸ†αž“αž½αž™αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆ")
60
- gr.Markdown("αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαŸ’αž“αžΆαž€αŸ‹ αž”αŸ’αžšαž’αžΆαž“αž”αž‘ αž“αž·αž„αž€αž˜αŸ’αžšαž·αžαžŸαž·αžŸαŸ’αžŸ αžšαž½αž…αž…αž»αž…αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αŸ” αž¬αž…αž»αž…αž”αŸŠαžΌαžαž»αž„αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”")
61
 
62
- with gr.Row():
63
- grade = gr.Dropdown(choices=grade_options, label="αžαŸ’αž“αžΆαž€αŸ‹ (Grade)", value="1")
64
- topic = gr.Dropdown(choices=topic_options, label="αž”αŸ’αžšαž’αžΆαž“αž”αž‘ (Topic)", value="Addition")
65
- level = gr.Dropdown(choices=level_options, label="αž€αž˜αŸ’αžšαž·αžαžŸαž·αžŸαŸ’αžŸ (TaRL Level)", value="Beginner")
66
 
67
- output_box = gr.Textbox(label="πŸ“˜ Khmer Lesson Plan", lines=12)
 
 
 
68
 
69
- with gr.Row():
70
- generate_btn = gr.Button("βœ… αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“")
71
- generate_all_btn = gr.Button("🧠 αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹")
72
- clear_btn = gr.Button("🧹 αžŸαž˜αŸ’αž’αžΆαž")
73
 
74
- generate_btn.click(fn=generate_lesson, inputs=[grade, topic, level], outputs=output_box)
75
- generate_all_btn.click(fn=generate_all_lessons, outputs=output_box)
76
- clear_btn.click(fn=lambda: "", outputs=output_box)
 
77
 
78
- # βœ… Run with public URL
79
- demo.launch(share=True)
 
80
 
81
- # βœ… Call main
82
- main()
 
 
1
  import gradio as gr
 
2
  from transformers import pipeline
3
+ import torch
4
 
5
+ # Dropdown values
6
+ grade_options = ["1", "2", "3", "4", "5", "6"]
7
+ topic_options = ["Addition", "Subtraction", "Counting", "Number Recognition", "Multiplication", "Division"]
8
+ level_options = ["Beginner", "Intermediate", "Advanced"]
9
 
10
+ def load_pipeline():
11
+ device = 0 if torch.cuda.is_available() else -1
12
  pipe = pipeline(
13
  "text-generation",
14
  model="Pisethan/khmer-lesson-model-v2",
15
  tokenizer="Pisethan/khmer-lesson-model",
16
  device=device
17
  )
18
+ return pipe
19
 
20
+ # Function: generate one
21
+ def generate_lesson(grade, topic, level):
22
+ pipe = load_pipeline()
23
+ prompt = f"""Generate a Khmer math lesson plan with the following structure:
 
 
 
 
24
 
25
  Lesson Title:
26
  Objective:
 
32
  Topic: {topic}
33
  TaRL Level: {level}"""
34
 
35
+ output = pipe(prompt, max_new_tokens=300, temperature=0.7, do_sample=True)
36
+ return output[0]['generated_text']
37
 
38
+ # Function: generate all combos
39
+ def generate_all_lessons():
40
+ pipe = load_pipeline()
41
+ results = ""
42
+ for grade in grade_options:
43
+ for topic in topic_options:
44
+ for level in level_options:
45
+ prompt = f"""Generate a Khmer math lesson plan.
46
 
47
  Grade: {grade}
48
  Topic: {topic}
49
  TaRL Level: {level}"""
50
+ output = pipe(prompt, max_new_tokens=200, temperature=0.7, do_sample=True)
51
+ results += f"πŸ”Ή αžαŸ’αž“αžΆαž€αŸ‹ {grade} | {topic} | {level}\n{output[0]['generated_text']}\n\n{'-'*50}\n\n"
52
+ return results
 
 
 
 
 
 
53
 
54
+ # Gradio UI
55
+ with gr.Blocks() as demo:
56
+ gr.Markdown("## πŸ€– αž’αŸ’αž“αž€αž‡αŸ†αž“αž½αž™αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆ")
57
+ gr.Markdown("αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαŸ’αž“αžΆαž€αŸ‹ αž”αŸ’αžšαž’αžΆαž“αž”αž‘ αž“αž·αž„αž€αž˜αŸ’αžšαž·αžαžŸαž·αžŸαŸ’αžŸ αžšαž½αž…αž…αž»αž…αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αŸ” αž¬αž…αž»αž…αž”αŸŠαžΌαžαž»αž„αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”")
58
 
59
+ with gr.Row():
60
+ grade = gr.Dropdown(choices=grade_options, label="αžαŸ’αž“αžΆαž€αŸ‹ (Grade)", value="1")
61
+ topic = gr.Dropdown(choices=topic_options, label="αž”αŸ’αžšαž’αžΆαž“αž”αž‘ (Topic)", value="Addition")
62
+ level = gr.Dropdown(choices=level_options, label="αž€αž˜αŸ’αžšαž·αžαžŸαž·αžŸαŸ’αžŸ (TaRL Level)", value="Beginner")
63
 
64
+ output_box = gr.Textbox(label="πŸ“˜ Khmer Lesson Plan", lines=12)
 
 
 
65
 
66
+ with gr.Row():
67
+ gen_btn = gr.Button("βœ… αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“")
68
+ gen_all_btn = gr.Button("🧠 αž”αž„αŸ’αž€αžΎαžαž˜αŸαžšαŸ€αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹")
69
+ clear_btn = gr.Button("🧹 αžŸαž˜αŸ’αž’αžΆαž")
70
 
71
+ gen_btn.click(fn=generate_lesson, inputs=[grade, topic, level], outputs=output_box)
72
+ gen_all_btn.click(fn=generate_all_lessons, outputs=output_box)
73
+ clear_btn.click(fn=lambda: "", outputs=output_box)
74
 
75
+ # ❌ Don't use share=True inside HF Space
76
+ demo.launch()