youngtsai commited on
Commit
bc234ab
·
1 Parent(s): 9e96d9e

past_exam_dropdown = gr.Dropdown(label="選擇考古題", choices=past_exam_choices)

Browse files
Files changed (2) hide show
  1. app.py +26 -34
  2. exams.json +22 -0
app.py CHANGED
@@ -464,6 +464,17 @@ def generate_chinese_evaluation_table(sys_content, user_prompt, text):
464
 
465
  return gr_update
466
 
 
 
 
 
 
 
 
 
 
 
 
467
 
468
  with gr.Blocks(theme=gr.themes.Soft(primary_hue=gr.themes.colors.blue, secondary_hue=gr.themes.colors.orange)) as demo:
469
  # ===== 英文段落寫作練習 =====
@@ -1452,46 +1463,27 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue=gr.themes.colors.blue, secondary
1452
  with gr.Row():
1453
  gr.Markdown("## 選擇考古題")
1454
  with gr.Row():
1455
- past_exam_choices = ["98學測","99學測","100學測"]
1456
- past_exam_dropdown = gr.Dropdown(label="選擇考古題", choices=past_exam_choices, value="98學測")
 
1457
  with gr.Row():
1458
- gr.Markdown("## 98 學測")
1459
  with gr.Row():
1460
  with gr.Column():
1461
  with gr.Row():
1462
- gr.Markdown("""###
1463
- - 說明︰依提示寫一篇英文作文,文長至少 120 個單詞(words)。
1464
- - 提示︰ 請根據右方圖片的場景,描述整個事件發生的前因後果。文
1465
- 章請分兩段,第一段說明之前發生了什麼事情,並根據圖片內容描
1466
- 述現在的狀況;第二段請合理說明接下來可能會發生什麼事,或者
1467
- 未來該做些什麼。
1468
- """)
1469
- with gr.Row():
1470
- with gr.Accordion("下筆提示", open=False):
1471
- gr.Textbox("如何下筆:先用常理推敲內容。根據段落提示書寫,必須加入更多細節例證才會生動寫實。", label="",lines=3)
1472
- with gr.Row():
1473
- gr.Markdown("## 第一段說明之前發生了什麼事情,並根據圖片內容描述現在的狀況")
1474
  with gr.Row():
1475
- with gr.Accordion("第一段提示", open=False):
1476
- gr.Markdown("""
1477
- - 之前發生了什麼事情
1478
- - 房子在哪裡?住什麼人?他們的生活(對比災難發生後)。
1479
- - 根據圖片內容描述現在的狀況
1480
- - 想像什麼原因造成現在的結果:地震?土石流?
1481
- - 描述災難發生造成現況,如果能用第一人稱描寫災難發生的細
1482
- - 節及自己的感受會更吸引人。
1483
- """)
1484
- with gr.Row():
1485
- gr.Markdown("## 第二段請合理說明接下來可能會發生什麼事,或者未來該做些什麼")
1486
- with gr.Row():
1487
- with gr.Accordion("第一段提示", open=False):
1488
- gr.Markdown("""
1489
- - 說明接下來可能會發生什麼事,或者未來該做些什麼
1490
- - 災難後可能發生的事,例如重回家園看到破舊的景象、災難損壞、如果災難重建等等。
1491
- """)
1492
-
1493
  with gr.Column():
1494
- gr.Image("https://storage.googleapis.com/jutor/98%E5%AD%B8%E6%B8%AC%E4%BD%9C%E6%96%87-%E5%9C%96.png")
 
 
 
 
 
 
1495
 
1496
  with gr.Row():
1497
  with gr.Column():
 
464
 
465
  return gr_update
466
 
467
+ def load_exam_data():
468
+ with open("exams.json", "r") as file:
469
+ data = json.load(file)
470
+ return data
471
+
472
+ def update_exam_contents(selected_title):
473
+ exams = load_exam_data()["exams"]
474
+ for exam in exams:
475
+ if exam["title"] == selected_title:
476
+ return exam["title"], exam["question"], exam["hint"], exam["image_url"]
477
+
478
 
479
  with gr.Blocks(theme=gr.themes.Soft(primary_hue=gr.themes.colors.blue, secondary_hue=gr.themes.colors.orange)) as demo:
480
  # ===== 英文段落寫作練習 =====
 
1463
  with gr.Row():
1464
  gr.Markdown("## 選擇考古題")
1465
  with gr.Row():
1466
+ exams_data = load_exam_data()
1467
+ past_exam_choices = [exam["title"] for exam in exams_data["exams"]]
1468
+ past_exam_dropdown = gr.Dropdown(label="選擇考古題", choices=past_exam_choices)
1469
  with gr.Row():
1470
+ past_exam_title = gr.Markdown()
1471
  with gr.Row():
1472
  with gr.Column():
1473
  with gr.Row():
1474
+ past_exam_question = gr.Markdown()
 
 
 
 
 
 
 
 
 
 
 
1475
  with gr.Row():
1476
+ with gr.Accordion("提示", open=False):
1477
+ with gr.Row():
1478
+ past_exam_hint = gr.Markdown()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1479
  with gr.Column():
1480
+ past_exam_image = gr.Image()
1481
+
1482
+ past_exam_dropdown.select(
1483
+ fn=update_exam_contents,
1484
+ inputs=[past_exam_dropdown],
1485
+ outputs=[past_exam_title, past_exam_question, past_exam_hint, past_exam_image]
1486
+ )
1487
 
1488
  with gr.Row():
1489
  with gr.Column():
exams.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "exams": [
3
+ {
4
+ "title": "# 98 學測",
5
+ "question": "### 說明︰依提示寫一篇英文作文,文長至少 120 個單詞(words)。\n### 提示︰ 請根據右方圖片的場景,描述整個事件發生的前因後果。文章請分兩段,第一段說明之前發生了什麼事情,並根據圖片內容描述現在的狀況;第二段請合理說明接下來可能會發生什麼事,或者未來該做些什麼。",
6
+ "hint": "## 如何下筆:\n- 先用常理推敲內容。根據段落提示書寫,必須加入更多細節例證才會生動寫實。\n## 第一段說明之前發生了什麼事情,並根據圖片內容描述現在的狀況\n- 之前發生了什麼事情\n - 房子在哪裡?住什麼人?他們的生活(對比災難發生後)。\n- 根據圖片內容描述現在的狀況\n - 想像什麼原因造成現在的結果:地震?土石流?\n - 描述災難發生造成現況,如果能用第一人稱描寫災難發生的細節及自己的感受會更吸引人。\n## 第二段請合理說明接下來可能會發生什麼事,或者未來該做些什麼\n- 說明接下來可能會發生什麼事,或者未來該做些什麼\n - 災難後可能發生的事,例如重回家園看到破舊的景象、災難損壞、如果災難重建等等。",
7
+ "image_url": "https://storage.googleapis.com/jutor/98%E5%AD%B8%E6%B8%AC%E4%BD%9C%E6%96%87-%E5%9C%96.png"
8
+ },
9
+ {
10
+ "title": "# 99 學測",
11
+ "question": "### 說明︰依提示寫一篇英文作文,文長至少 120 個單詞(words)。\n### 提示:請仔細觀察以下三幅連環圖片的內容,並想像第四幅圖片可能的發展,寫出一個涵蓋連環圖片內容並有完整結局的故事。",
12
+ "hint": "### 如何下筆:\n- 先瞭解三幅圖片的內容,找到角色及故事情節。\n- 連環圖畫通常都會有道德教訓 moral lesson, 這故事的教訓是什麼?「拾金不眛」?找到教訓後,就可以決定第四幅圖的內容。\n- 利用故事山的寫法寫成三段。\n\n### 第一段介紹段:\n- 介紹主要角色和背景資訊。\n- 也可以説明故事主旨(道德教訓)\n### 第二段主體段:\n- 引入主要問題或挑戰,主角撿到一個錢包,裡面有許多錢,他該怎麼做?這些錢可以買許多他想要的東西,故事情節向高潮發展。\n- 然後是轉折點,通常是最激動人心或最具戲劇性的部分:他想到丟了錢的人需要這筆錢急用,一定非常著急。\n- 主角做出關鍵決定或行動。\n### 第三段結論段:\n- 重申道德教訓給故事結尾。",
13
+ "image_url": "https://storage.googleapis.com/jutor/99%E5%AD%B8%E6%B8%AC%E4%BD%9C%E6%96%87-%E5%9C%96.png"
14
+ },
15
+ {
16
+ "title": "# 100 學測",
17
+ "question": "### 說明︰依提示寫一篇英文作文,文長至少 120 個單詞(words)。\n### 提示︰請仔細觀察以下三幅連環圖片的內容,並想像第四幅圖片可能的發展,寫出一個涵蓋連環圖片內容並有完整結局的故事。",
18
+ "hint": "### 如何下筆:\n- 瞭解三幅圖片的內容,找到角色及故事情節。\n- 這個故事很能激發想像力,可有各種不同的情節發展。如果時間倉促無法發揮,就按照圖片內容來寫。結局可能是女孩接受了他或拒絕了他。他有什麼感受?\n\n### 第一段介紹段:\n- 介紹主要角色和背景資訊。\n- 也可以寫出故事主旨(勇於表達自己的感情)\n\n### 第二段主體段:\n- 引入主要問題或挑戰,主角在舞會碰到心儀的女孩,不知如何表達愛慕之意,最後決定拿著吉他在她門前彈唱,結果把鄰居都吵醒了,被大罵一頓,非常尷尬,故事情節向高潮發展,\n- 然後是轉折點,通常是最激動人心或最具戲劇性的部分:女孩居然現身接受了他的告白。\n\n### 第三段結論段:\n- 重申道德教訓給故事結尾。",
19
+ "image_url": "https://storage.googleapis.com/jutor/100%E5%AD%B8%E6%B8%AC%E4%BD%9C%E6%96%87-%E5%9C%96.jpg"
20
+ }
21
+ ]
22
+ }