youngtsai commited on
Commit
76dbf8b
·
1 Parent(s): 0206880

generate_content_by_open_ai_assistant_structure_robot

Browse files
Files changed (1) hide show
  1. app.py +95 -33
app.py CHANGED
@@ -1259,10 +1259,28 @@ def get_chinese_paragraph_evaluate_content(thread_id, model, user_content, parag
1259
  headers = ["架構", "評分", "解釋"]
1260
  table_data = [
1261
  ["主題與內容", data['主題與內容']['level'], data['主題與內容']['explanation']],
1262
- ["段落結構", data['段落結構']['level'], data['段落結構']['explanation']],
1263
  ["遣詞造句", data['遣詞造句']['level'], data['遣詞造句']['explanation']],
1264
  ]
1265
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1266
  # 挑錯字
1267
  spelling_content = generate_content_by_open_ai_assistant_spelling_robot(paragraph, thread_id=None, model_name=model)
1268
  print(f"spelling_content: {spelling_content}")
@@ -1285,7 +1303,7 @@ def get_chinese_paragraph_evaluate_content(thread_id, model, user_content, parag
1285
  # 綜合評分
1286
  grade = assign_grade(
1287
  data['主題與內容']['level'],
1288
- data['段落結構']['level'],
1289
  data['遣詞造句']['level'],
1290
  spelling_content_table['level']
1291
  )
@@ -1316,7 +1334,6 @@ def get_chinese_paragraph_1st_evaluate_content(
1316
  size_count_prompt = generate_size_count_prompt(paragraph)
1317
  assignment_prompt = generate_assignment_prompt(chinese_assignment_topic, chinese_assignment_introduction, chinese_assignment_description)
1318
  sys_content_prompt = "You are a Chinese teacher who is practicing with me to improve my Chinese writing skill."
1319
-
1320
  paragraph_evaluate_prompt = """
1321
  # 請嚴格根據 instructions
1322
  # Rules:
@@ -1324,37 +1341,34 @@ def get_chinese_paragraph_1st_evaluate_content(
1324
  2. 請確保作文或段落的內容完整,並且符合中文語法
1325
  3. 如果是一篇亂打的文章請直接給予回饋:「這篇文章內容不完整,無法進行評分。」
1326
  4. 如果無法進行評分 評分標準與回饋的內容跟等級,則為 X
1327
- 5. 評分標準與回饋根據「A+、A、A- 、B+、 B、 B-」等級來評分,最低為 B-
1328
 
1329
  # Restrictions:
1330
  1. 不用給整體評分
1331
  2. 不用改標點符號
1332
- 3. 評分標準的分數等級請使用「A+、A、A- 、B+、 B、 B-」等級,不可使用數字或是其他等級,像是「90分、80分、C、D」等等。
 
1333
 
1334
  # Output format:
1335
  1. 先給 綜合回饋、評分標準與回饋、修改範例
1336
  2. 再將評分標準與回饋的內容以JSON格式輸出,並且請使用繁體中文(ZH-TW)來評分段落並輸出,用 ```json ..... ``` 包裹:
1337
- 3. please use Chinese language (ZH-TW) to evaluate the paragraph and output use JSON format:
 
1338
 
1339
  EXAMPLE:
1340
  # 綜合回饋
1341
  你的文章...............(寫出一段話,來總結這篇作文的好壞)
1342
 
1343
  # 評分標準與回饋
1344
- 主題與內容:B+ 你的主題很明確,講述了CSS在渲染空間上的問題及解決方案,這是一個重要而實用的話題。然而,內容相對較少,缺乏足夠的細節與實例來支撐你的觀點。建議你可以添加一些具體情境或例子,讓讀者更容易理解CSS的應用情況,例如提到常見的渲染問題以及具體的解決方法。
1345
-
1346
- 段落結構:B 你的段落結構基本清晰,但目前只有一段,這使得整體文章顯得有些單薄。建議你可以將內容分成幾個小段落,每個段落著重於不同的要點,例如一段說明問題,另一段探討解決方案,這樣整體更具條理性。
1347
-
1348
- 遣詞造句:A 你的遣詞��句大致良好,用詞得體且通順。不過可以嘗試加一些更具體的技術詞彙或示例,使文章更專業化。
1349
-
1350
- # 修改範例
1351
- - 原文:內容雖然簡短,但主題明確。
1352
- - 修改:雖然內容相對簡短,但主題表達得非常明確。
1353
- - 原文:缺乏實例和具體情境來支持內容。
1354
- - 修改:目前缺少具體的實例及情境來支持文章的內容與主張。
1355
- - 原文:可以進一步擴展。
1356
- - 修改:可以進一步擴展來豐富內容,讓讀者更有共鳴。
1357
-
1358
  ```json
1359
  {{
1360
  "results": {{
@@ -1362,10 +1376,6 @@ def get_chinese_paragraph_1st_evaluate_content(
1362
  "level": "A+",
1363
  "explanation": "#中文解釋 ZH-TW"
1364
  }},
1365
- "段落結構": {{
1366
- "level": "B+",
1367
- "explanation": "#中文解釋 ZH-TW"
1368
- }},
1369
  "遣詞造句": {{
1370
  "level": "C",
1371
  "explanation": "#中文解釋 ZH-TW"
@@ -1435,8 +1445,6 @@ def get_chinese_paragraph_refine_evaluate_content(
1435
  # 評分標準與回饋
1436
  主題與內容:B+ 你的主題很明確,講述了CSS在渲染空間上的問題及解決方案,這是一個重要而實用的話題。然而,內容相對較少,缺乏足夠的細節與實例來支撐你的觀點。建議你可以添加一些具體情境或例子,讓讀者更容易理解CSS的應用情況,例如提到常見的渲染問題以及具體的解決方法。
1437
 
1438
- 段落結構:B 你的段落結構基本清晰,但目前只有一段,這使得整體文章顯得有些單薄。建議你可以將內容分成幾個小段落,每個段落著重於不同的要點,例如一段說明問題,另一段探討解決方案,這樣整體更具條理性。
1439
-
1440
  遣詞造句:A 你的遣詞造句大致良好,用詞得體且通順。不過可以嘗試加一些更具體的技術詞彙或示例,使文章更專業化。
1441
 
1442
  # 修改範例
@@ -1454,10 +1462,6 @@ def get_chinese_paragraph_refine_evaluate_content(
1454
  "level": "A+",
1455
  "explanation": "#中文解釋 ZH-TW"
1456
  }},
1457
- "段落結構": {{
1458
- "level": "B+",
1459
- "explanation": "#中文解釋 ZH-TW"
1460
- }},
1461
  "遣詞造句": {{
1462
  "level": "C",
1463
  "explanation": "#中文解釋 ZH-TW"
@@ -1483,6 +1487,7 @@ def get_chinese_paragraph_refine_evaluate_content(
1483
 
1484
  return total_content_text, content_table
1485
 
 
1486
  def generate_content_by_open_ai_assistant(user_content, thread_id=None, model_name=None):
1487
  verify_moderation(user_content)
1488
 
@@ -1559,10 +1564,12 @@ def generate_content_by_open_ai_assistant_spelling_robot(paragraph, thread_id=No
1559
  2. 請輸出錯別字的等級與解釋,並輸出錯別字的等級與解釋 by json format as example
1560
  3. 請用 zh-TW 繁體中文輸出
1561
  4. json 完成之後不用多作解釋
 
 
1562
 
1563
  EXAMPLE:
1564
- # 錯別字檢查:
1565
- 1. 「產線」應作「產線」。
1566
  - 原文:「擔任產線主任的老闆弟弟...」
1567
  - 修正:「擔任產線主任的老闆弟弟...」
1568
  2. 「保母」應作「保姆」。
@@ -1625,10 +1632,65 @@ def generate_content_by_open_ai_assistant_structure_robot(paragraph, thread_id=N
1625
 
1626
  # Send the user message to the thread
1627
  print("==============Send the user message to the thread====================")
1628
- client.beta.threads.messages.create(thread_id=thread.id, role="user", content=user_content)
 
 
 
 
 
 
 
 
 
1629
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1630
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1631
 
 
1632
 
1633
  # 小工具
1634
  def show_elements():
 
1259
  headers = ["架構", "評分", "解釋"]
1260
  table_data = [
1261
  ["主題與內容", data['主題與內容']['level'], data['主題與內容']['explanation']],
 
1262
  ["遣詞造句", data['遣詞造句']['level'], data['遣詞造句']['explanation']],
1263
  ]
1264
 
1265
+ # 段落結構
1266
+ paragraph_structure_content = generate_content_by_open_ai_assistant_structure_robot(paragraph, thread_id=None, model_name=model)
1267
+ print(f"paragraph_structure_content: {paragraph_structure_content}")
1268
+
1269
+ if "```json" not in paragraph_structure_content:
1270
+ raise gr.Error("網路塞車,或是內容有誤,請稍後重新嘗試!")
1271
+
1272
+ paragraph_structure_content_list = paragraph_structure_content.split("```json")
1273
+ paragraph_structure_content_text = paragraph_structure_content_list[0]
1274
+ paragraph_structure_content_json = paragraph_structure_content_list[1].split("```")[0]
1275
+ paragraph_structure_content_table = json.loads(paragraph_structure_content_json)["results"]["段落結構"]
1276
+ paragraph_structure_table_data = [
1277
+ ["段落結構", paragraph_structure_content_table['level'], paragraph_structure_content_table['explanation']],
1278
+ ]
1279
+
1280
+ # 合併 table_data
1281
+ table_data.extend(paragraph_structure_table_data)
1282
+ content_text = content_text + "\n" + paragraph_structure_content_text
1283
+
1284
  # 挑錯字
1285
  spelling_content = generate_content_by_open_ai_assistant_spelling_robot(paragraph, thread_id=None, model_name=model)
1286
  print(f"spelling_content: {spelling_content}")
 
1303
  # 綜合評分
1304
  grade = assign_grade(
1305
  data['主題與內容']['level'],
1306
+ paragraph_structure_content_table['level'],
1307
  data['遣詞造句']['level'],
1308
  spelling_content_table['level']
1309
  )
 
1334
  size_count_prompt = generate_size_count_prompt(paragraph)
1335
  assignment_prompt = generate_assignment_prompt(chinese_assignment_topic, chinese_assignment_introduction, chinese_assignment_description)
1336
  sys_content_prompt = "You are a Chinese teacher who is practicing with me to improve my Chinese writing skill."
 
1337
  paragraph_evaluate_prompt = """
1338
  # 請嚴格根據 instructions
1339
  # Rules:
 
1341
  2. 請確保作文或段落的內容完整,並且符合中文語法
1342
  3. 如果是一篇亂打的文章請直接給予回饋:「這篇文章內容不完整,無法進行評分。」
1343
  4. 如果無法進行評分 評分標準與回饋的內容跟等級,則為 X
1344
+ 5. 評分標準與回饋根據「A+、A、A-、B+、B、B-」等級來評分,最低為 B-
1345
 
1346
  # Restrictions:
1347
  1. 不用給整體評分
1348
  2. 不用改標點符號
1349
+ 3. 不用改段落結構
1350
+ 4. 評分標準的分數等級請使用「A+、A、A-、B+、B、B-」等級,不可使用數字或是其他等級,像是「90分、80分、C、D」等等。
1351
 
1352
  # Output format:
1353
  1. 先給 綜合回饋、評分標準與回饋、修改範例
1354
  2. 再將評分標準與回饋的內容以JSON格式輸出,並且請使用繁體中文(ZH-TW)來評分段落並輸出,用 ```json ..... ``` 包裹:
1355
+ 3. please use Chinese language (ZH-TW) to evaluate the paragraph and output use JSON format
1356
+ 4. json 內容只需要給「主題與內容」、「遣詞造句」的評分標準與回饋
1357
 
1358
  EXAMPLE:
1359
  # 綜合回饋
1360
  你的文章...............(寫出一段話,來總結這篇作文的好壞)
1361
 
1362
  # 評分標準與回饋
1363
+ ### 主題與內容:B+ 你的主題很明確,講述了CSS在渲染空間上的問題及解決方案,這是一個重要而實用的話題。然而,內容相對較少,缺乏足夠的細節與實例來支撐你的觀點。建議你可以添加一些具體情境或例子,讓讀者更容易理解CSS的應用情況,例如提到常見的渲染問題以及具體的解決方法。
1364
+ ### 遣詞造句:A 你的遣詞造句大致良好,用詞得體且通順。不過可以嘗試加一些更具體的技術詞彙或示例,使文章更專業化。
1365
+ - 修改範例
1366
+ - 原文:內容雖然簡短,但主題明確。
1367
+ - 修改:雖然內容相對簡短,但主題表達得非常明確。
1368
+ - 原文:缺乏實例和具體情境來支持內容。
1369
+ - 修改:目前缺少具體的實例及情境來支持文章的內容與主張。
1370
+ - 原文:可以進一步擴展。
1371
+ - 修改:可以進一步擴展來豐富內容,讓讀者更有共鳴。
 
 
 
 
 
1372
  ```json
1373
  {{
1374
  "results": {{
 
1376
  "level": "A+",
1377
  "explanation": "#中文解釋 ZH-TW"
1378
  }},
 
 
 
 
1379
  "遣詞造句": {{
1380
  "level": "C",
1381
  "explanation": "#中文解釋 ZH-TW"
 
1445
  # 評分標準與回饋
1446
  主題與內容:B+ 你的主題很明確,講述了CSS在渲染空間上的問題及解決方案,這是一個重要而實用的話題。然而,內容相對較少,缺乏足夠的細節與實例來支撐你的觀點。建議你可以添加一些具體情境或例子,讓讀者更容易理解CSS的應用情況,例如提到常見的渲染問題以及具體的解決方法。
1447
 
 
 
1448
  遣詞造句:A 你的遣詞造句大致良好,用詞得體且通順。不過可以嘗試加一些更具體的技術詞彙或示例,使文章更專業化。
1449
 
1450
  # 修改範例
 
1462
  "level": "A+",
1463
  "explanation": "#中文解釋 ZH-TW"
1464
  }},
 
 
 
 
1465
  "遣詞造句": {{
1466
  "level": "C",
1467
  "explanation": "#中文解釋 ZH-TW"
 
1487
 
1488
  return total_content_text, content_table
1489
 
1490
+ # 小學作文機器人
1491
  def generate_content_by_open_ai_assistant(user_content, thread_id=None, model_name=None):
1492
  verify_moderation(user_content)
1493
 
 
1564
  2. 請輸出錯別字的等級與解釋,並輸出錯別字的等級與解釋 by json format as example
1565
  3. 請用 zh-TW 繁體中文輸出
1566
  4. json 完成之後不用多作解釋
1567
+ 5. 輸出前,每一段都多做一次確認,確認原文跟修正是否一樣,如果一樣,就不要輸出
1568
+ 6. 請確定使用繁體中文輸出,並不要使用簡體中文以及中國的用語
1569
 
1570
  EXAMPLE:
1571
+ ### 錯別字檢查: A+
1572
+ 1. 「產現」應作「產線」。
1573
  - 原文:「擔任產線主任的老闆弟弟...」
1574
  - 修正:「擔任產線主任的老闆弟弟...」
1575
  2. 「保母」應作「保姆」。
 
1632
 
1633
  # Send the user message to the thread
1634
  print("==============Send the user message to the thread====================")
1635
+ user_content = f"""
1636
+ this is the paragraph: {paragraph}
1637
+ ---
1638
+ Rule:
1639
+ 1. 請根據 instructions 來評分「段落結構」並給出分數
1640
+ 2. 請輸出 text for 段落結構、段落大意摘要、結構分析質性分析
1641
+ 3. 並提供的等級與解釋 by json format as example
1642
+ 4. 請用 zh-TW 繁體中文輸出
1643
+ 4. json 的 explanation 提供為何給這個分數的解釋,並且輸出段落大意摘要、結構分析
1644
+ 5. json 完成之後不用多作解釋
1645
 
1646
+ EXAMPLE:
1647
+ ### 段落結構: B+
1648
+ - 段落大意摘要:這篇文章有四個自然段。
1649
+ 1. 描述回家路上的期待感,家是讓人心安的地方。
1650
+ 2. 描述推開家門時的溫馨感受和父母的關心。
1651
+ 3. 描述家承載的情感與回憶,家是生活的原點和港灣。
1652
+ 4. 描述回家後的堅定與勇氣,家人的支持讓人勇敢前行。
1653
+
1654
+ - 結構分析:
1655
+ - 這篇文章的分段合理,共有四段,符合一篇文章分段的建議。
1656
+ - 每段的主題明確,第一段破題,第二、三段描述回家的感受和家中的情感,最後一段總結並抒發自己的感想,結構完整且連貫。
1657
+ - 建議在段落之間使用一些連接詞來強化段落間的關聯性,例如在第二段和第三段之間可以用「此外」來銜接,讓文章更加流暢。
1658
+ - 整體來說,段落結構清晰,主題明確,表現很好。
1659
 
1660
+ ```json
1661
+ {{
1662
+ "results": {{
1663
+ "段落結構": {{
1664
+ "level": "A+",
1665
+ "explanation": "#中文解釋 ZH-TW"
1666
+ }}
1667
+ }}
1668
+ }}
1669
+ ```
1670
+ """
1671
+ client.beta.threads.messages.create(thread_id=thread.id, role="user", content=user_content)
1672
+
1673
+ # Run the assistant
1674
+ print("==============Run the assistant====================")
1675
+ run = client.beta.threads.runs.create_and_poll(
1676
+ thread_id=thread.id,
1677
+ assistant_id=assistant.id,
1678
+ tools=[{"type": "file_search"}],
1679
+ )
1680
+
1681
+ if run.status == "completed":
1682
+ print("==============completed====================")
1683
+ print(f"Thread ID: {thread.id}")
1684
+ messages = client.beta.threads.messages.list(thread_id=thread.id)
1685
+ print(f"Messages: {messages}")
1686
+ response = messages
1687
+ response_text = messages.data[0].content[0].text.value
1688
+ print(f"Response: {response_text}")
1689
+ except Exception as e:
1690
+ print(f"An error occurred while generating content by OpenAI Assistant: {e}")
1691
+ raise gr.Error("網路塞車,請重新嘗試一次!")
1692
 
1693
+ return response_text
1694
 
1695
  # 小工具
1696
  def show_elements():