Spaces:
Sleeping
Sleeping
1. 我給你兩篇文章,請進行比較跟批改,並給出建議,如果文章完全一樣,請給出回饋:「這兩篇文章內容完全一樣,無法進行評分。」,後續評分給予 level X,仍要輸出 JSON
Browse files
app.py
CHANGED
@@ -948,13 +948,39 @@ def generate_chinese_paragraph_practice_history(
|
|
948 |
GCS_SERVICE.upload_json_string("jutor_logs", file_name, json.dumps(content))
|
949 |
|
950 |
if assignment_id_input:
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
958 |
return chinese_full_paragraph_input, \
|
959 |
chinese_full_paragraph_evaluate_output_text, \
|
960 |
chinese_full_paragraph_evaluate_output_table, \
|
@@ -963,13 +989,28 @@ def generate_chinese_paragraph_practice_history(
|
|
963 |
chinese_full_paragraph_refine_output_table, \
|
964 |
chinese_full_paragraph_save_output
|
965 |
|
966 |
-
def
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
|
972 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
973 |
|
974 |
def get_chinese_paragraph_practice_log_session_content(file_name):
|
975 |
if file_name:
|
@@ -1306,27 +1347,32 @@ def init_params(request: gr.Request):
|
|
1306 |
assignment_json_value = None
|
1307 |
if "assignment" in query_params:
|
1308 |
assignment_id_value = query_params["assignment"]
|
1309 |
-
|
1310 |
-
|
1311 |
-
assignment_json_value
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1319 |
else:
|
|
|
1320 |
chinese_assignment_row = gr.update(visible=False)
|
1321 |
chinese_assignment_grade = gr.update(value="")
|
1322 |
chinese_assignment_topic = gr.update(value="")
|
1323 |
chinese_assignment_introduction = gr.update(value="")
|
1324 |
chinese_assignment_description = gr.update(value="")
|
1325 |
-
|
1326 |
-
|
1327 |
-
assignment_id_input = gr.update(value=assignment_id_value)
|
1328 |
-
assignment_json = gr.update(value=assignment_json_value)
|
1329 |
-
|
1330 |
|
1331 |
return admin_group, session_timestamp, request_origin, \
|
1332 |
assignment_id_input, assignment_json, \
|
@@ -2994,7 +3040,7 @@ with gr.Blocks(theme=THEME, css=CSS) as demo:
|
|
2994 |
default_user_generate_chinese_full_paragraph_refine_evaluate_prompt = """
|
2995 |
# 請嚴格根據 instructions
|
2996 |
# Rules:
|
2997 |
-
1.
|
2998 |
2. 先檢查是否是合理的作文或是段落,再進行評分
|
2999 |
2. 請確保作文或段落的內容完整,並且符合中文語法
|
3000 |
3. 如果是一篇亂打的文章請直接給予回饋:「這篇文章內容不完整,無法進行評分。」
|
|
|
948 |
GCS_SERVICE.upload_json_string("jutor_logs", file_name, json.dumps(content))
|
949 |
|
950 |
if assignment_id_input:
|
951 |
+
assignment_file_name = f"assignments/{assignment_id_input}.json"
|
952 |
+
try:
|
953 |
+
submission_id = generate_unique_submission_id()
|
954 |
+
submission_data = {
|
955 |
+
"submission_id": submission_id,
|
956 |
+
"assignment_id": assignment_id_input,
|
957 |
+
"student_id": user_data,
|
958 |
+
"student_name": "",
|
959 |
+
"submission_data": {
|
960 |
+
"file_name": file_name,
|
961 |
+
"bucket_name": "jutor_logs",
|
962 |
+
"content": content
|
963 |
+
},
|
964 |
+
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
965 |
+
}
|
966 |
+
assignment_content = GCS_SERVICE.download_as_string("ai_assignment_submission", assignment_file_name)
|
967 |
+
assignment_data = json.loads(assignment_content)
|
968 |
+
|
969 |
+
# 添加新的 submission_id 到 assignment 数据中
|
970 |
+
if "submission_ids" not in assignment_data:
|
971 |
+
assignment_data["submission_ids"] = []
|
972 |
+
assignment_data["submission_ids"].append(submission_id)
|
973 |
+
|
974 |
+
# 更新 assignment 文件
|
975 |
+
GCS_SERVICE.upload_json_string("ai_assignment_submission", assignment_file_name, json.dumps(assignment_data))
|
976 |
|
977 |
+
# 上传新的 submission 数据
|
978 |
+
GCS_SERVICE.upload_json_string("ai_assignment_submission", f"{submission_id}.json", json.dumps(submission_data))
|
979 |
+
|
980 |
+
print(f"Updated assignment {assignment_id_input} with new submission: {submission_id}")
|
981 |
+
except Exception as e:
|
982 |
+
print(f"Error updating assignment {assignment_id_input}: {str(e)}")
|
983 |
+
|
984 |
return chinese_full_paragraph_input, \
|
985 |
chinese_full_paragraph_evaluate_output_text, \
|
986 |
chinese_full_paragraph_evaluate_output_table, \
|
|
|
989 |
chinese_full_paragraph_refine_output_table, \
|
990 |
chinese_full_paragraph_save_output
|
991 |
|
992 |
+
def generate_unique_submission_id():
|
993 |
+
while True:
|
994 |
+
submission_id = str(uuid.uuid4())
|
995 |
+
if not GCS_SERVICE.check_file_exists("ai_assignment_submission", f"{submission_id}.json"):
|
996 |
+
return submission_id
|
997 |
|
998 |
+
def update_assignment_submission(assignment_id, submission_id):
|
999 |
+
assignment_data = get_assignment_content(assignment_id)
|
1000 |
+
if assignment_data:
|
1001 |
+
assignment_data["submission_ids"].append(submission_id)
|
1002 |
+
GCS_SERVICE.upload_json_string("ai_assignment_submission", f"assignments/{assignment_id}.json", json.dumps(assignment_data))
|
1003 |
+
|
1004 |
+
def get_assignment_content(assignment_id):
|
1005 |
+
try:
|
1006 |
+
Bucket_Name = "ai_assignment_submission"
|
1007 |
+
file_name = f"assignments/{assignment_id}.json"
|
1008 |
+
assignment_json = GCS_SERVICE.download_as_string(Bucket_Name, file_name)
|
1009 |
+
assignment_data = json.loads(assignment_json)
|
1010 |
+
except Exception as e:
|
1011 |
+
print(f"Error: {e}")
|
1012 |
+
return None
|
1013 |
+
return assignment_data
|
1014 |
|
1015 |
def get_chinese_paragraph_practice_log_session_content(file_name):
|
1016 |
if file_name:
|
|
|
1347 |
assignment_json_value = None
|
1348 |
if "assignment" in query_params:
|
1349 |
assignment_id_value = query_params["assignment"]
|
1350 |
+
assignment_json_value = get_assignment_content(assignment_id_value)
|
1351 |
+
|
1352 |
+
if assignment_json_value and assignment_json_value.get("assignment_type") == "中文寫作 AI 批改":
|
1353 |
+
chinese_assignment_row = gr.update(visible=True)
|
1354 |
+
chinese_assignment_grade = gr.update(value=assignment_json_value.get("metadata", {}).get("grade", ""))
|
1355 |
+
chinese_assignment_topic = gr.update(value=assignment_json_value.get("metadata", {}).get("topic", ""))
|
1356 |
+
chinese_assignment_introduction = gr.update(value=assignment_json_value.get("metadata", {}).get("introduction", ""))
|
1357 |
+
chinese_assignment_description = gr.update(value=assignment_json_value.get("metadata", {}).get("description", ""))
|
1358 |
+
else:
|
1359 |
+
chinese_assignment_row = gr.update(visible=False)
|
1360 |
+
chinese_assignment_grade = gr.update(value="")
|
1361 |
+
chinese_assignment_topic = gr.update(value="")
|
1362 |
+
chinese_assignment_introduction = gr.update(value="")
|
1363 |
+
chinese_assignment_description = gr.update(value="")
|
1364 |
+
|
1365 |
+
assignment_id_input = gr.update(value=assignment_id_value)
|
1366 |
+
assignment_json = gr.update(value=assignment_json_value)
|
1367 |
else:
|
1368 |
+
# 處理沒有 assignment 參數的情況
|
1369 |
chinese_assignment_row = gr.update(visible=False)
|
1370 |
chinese_assignment_grade = gr.update(value="")
|
1371 |
chinese_assignment_topic = gr.update(value="")
|
1372 |
chinese_assignment_introduction = gr.update(value="")
|
1373 |
chinese_assignment_description = gr.update(value="")
|
1374 |
+
assignment_id_input = gr.update(value=None)
|
1375 |
+
assignment_json = gr.update(value=None)
|
|
|
|
|
|
|
1376 |
|
1377 |
return admin_group, session_timestamp, request_origin, \
|
1378 |
assignment_id_input, assignment_json, \
|
|
|
3040 |
default_user_generate_chinese_full_paragraph_refine_evaluate_prompt = """
|
3041 |
# 請嚴格根據 instructions
|
3042 |
# Rules:
|
3043 |
+
1. 我給你兩篇文章,請進行比較跟批改,並給出建議,如果文章完全一樣,請給出回饋:「這兩篇文章內容完全一樣,無法進行評分。」,後續評分給予 level X,仍要輸出 JSON
|
3044 |
2. 先檢查是否是合理的作文或是段落,再進行評分
|
3045 |
2. 請確保作文或段落的內容完整,並且符合中文語法
|
3046 |
3. 如果是一篇亂打的文章請直接給予回饋:「這篇文章內容不完整,無法進行評分。」
|