youngtsai commited on
Commit
4ff4d9d
·
1 Parent(s): 3241d2f

1. 我給你兩篇文章,請進行比較跟批改,並給出建議,如果文章完全一樣,請給出回饋:「這兩篇文章內容完全一樣,無法進行評分。」,後續評分給予 level X,仍要輸出 JSON

Browse files
Files changed (1) hide show
  1. app.py +74 -28
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
- # GCS "ai_assignment_submission", "assignments.json") 底下有一個 submission_ids 的 list,將 file_name 加入 list
952
- assignments_file_name = "assignments.json"
953
- assignments_content = GCS_SERVICE.download_as_string("ai_assignment_submission", assignments_file_name)
954
- assignments_json = json.loads(assignments_content)
955
- assignments_json[assignment_id_input]["submission_ids"].append(file_name)
956
- GCS_SERVICE.upload_json_string("ai_assignment_submission", assignments_file_name, json.dumps(assignments_json))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 get_assignment_content(assignment_id):
967
- assignments_file_name = "assignments.json"
968
- assignments_content = GCS_SERVICE.download_as_string("ai_assignment_submission", assignments_file_name)
969
- assignments_json = json.loads(assignments_content)
970
- assignment_json = assignments_json[assignment_id]
971
 
972
- return assignment_json
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- assignments_json_text = GCS_SERVICE.download_as_string("ai_assignment_submission", "assignments.json")
1310
- assignments_json = json.loads(assignments_json_text)
1311
- assignment_json_value = assignments_json.get(assignment_id_value, None)
1312
-
1313
- if assignment_json_value != None and assignment_json_value["assignment_type"] == "中文寫作 AI 批改":
1314
- chinese_assignment_row = gr.update(visible=True)
1315
- chinese_assignment_grade = gr.update(value=assignment_json_value["metadata"]["grade"])
1316
- chinese_assignment_topic = gr.update(value=assignment_json_value["metadata"]["topic"])
1317
- chinese_assignment_introduction = gr.update(value=assignment_json_value["metadata"]["introduction"])
1318
- chinese_assignment_description = gr.update(value=assignment_json_value["metadata"]["description"])
 
 
 
 
 
 
 
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. 我給你兩篇文章,請進行比較跟批改,並給出建議,如果文章完全一樣,請給出回饋:「這兩篇文章內容完全一樣,無法進行評分。」,後續不用進行評分。給予 level X
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. 如果是一篇亂打的文章請直接給予回饋:「這篇文章內容不完整,無法進行評分。」