Spaces:
Sleeping
Sleeping
generate_content_by_open_ai_assistant_structure_robot
Browse files
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 |
-
|
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
|
1328 |
|
1329 |
# Restrictions:
|
1330 |
1. 不用給整體評分
|
1331 |
2. 不用改標點符號
|
1332 |
-
3.
|
|
|
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 |
-
|
1347 |
-
|
1348 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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():
|