youngtsai commited on
Commit
aac435a
·
1 Parent(s): 5280e70

content=user_message + "/n 請嚴格遵循instructions,擔任一位蘇格拉底家教,不要重複 user 的問句,用引導的方式指引方向,請一定要用繁體中文回答 zh-TW,並用台灣人的禮貌口語表達,回答時不要特別說明這是台灣人的語氣,請在回答的最後標註【參考:(時):(分):(秒)】,(如果是反問學生,就只問一個問題,請幫助學生更好的理解資料,字數在100字以內,回答時請用數學符號代替文字(Latex 用 $ 字號 render, ex: $x^2$)"

Browse files
Files changed (1) hide show
  1. app.py +57 -26
app.py CHANGED
@@ -572,6 +572,7 @@ def process_youtube_link(password, link):
572
  questions = get_questions(video_id, formatted_simple_transcript, source)
573
  questions_json = json.dumps(questions, ensure_ascii=False, indent=2)
574
  summary_json = get_video_id_summary(video_id, formatted_simple_transcript, source)
 
575
  summary = summary_json["summary"]
576
  key_moments_json = get_key_moments(video_id, formatted_simple_transcript, formatted_transcript, source)
577
  key_moments = key_moments_json["key_moments"]
@@ -586,6 +587,7 @@ def process_youtube_link(password, link):
586
  mind_map = mind_map_json["mind_map"]
587
  mind_map_html = get_mind_map_html(mind_map)
588
  reading_passage_json = get_reading_passage(video_id, formatted_simple_transcript, source)
 
589
  reading_passage = reading_passage_json["reading_passage"]
590
  meta_data = get_meta_data(video_id)
591
  subject = meta_data["subject"]
@@ -598,6 +600,7 @@ def process_youtube_link(password, link):
598
  questions[1] if len(questions) > 1 else "", \
599
  questions[2] if len(questions) > 2 else "", \
600
  original_transcript, \
 
601
  summary, \
602
  key_moments_text, \
603
  key_moments_html, \
@@ -607,6 +610,7 @@ def process_youtube_link(password, link):
607
  simple_html_content, \
608
  first_image, \
609
  first_text, \
 
610
  reading_passage, \
611
  subject, \
612
  grade
@@ -1428,7 +1432,12 @@ def get_LLM_content(video_id, kind):
1428
  if is_file_exists:
1429
  content = download_blob_to_string(gcs_client, bucket_name, blob_name)
1430
  content_json = json.loads(content)
1431
- content_text = json.dumps(content_json, ensure_ascii=False, indent=2)
 
 
 
 
 
1432
  else:
1433
  content_text = ""
1434
  return content_text
@@ -1457,15 +1466,17 @@ def update_LLM_content(video_id, new_content, kind):
1457
  blob_name = f"{video_id}/{file_name}"
1458
 
1459
  if kind == "reading_passage":
 
 
1460
  reading_passage_json = {"reading_passage": str(new_content)}
1461
  reading_passage_text = json.dumps(reading_passage_json, ensure_ascii=False, indent=2)
1462
  upload_file_to_gcs_with_json_string(gcs_client, bucket_name, blob_name, reading_passage_text)
1463
- updated_content = reading_passage_text
1464
  elif kind == "summary":
1465
  summary_json = {"summary": str(new_content)}
1466
  summary_text = json.dumps(summary_json, ensure_ascii=False, indent=2)
1467
  upload_file_to_gcs_with_json_string(gcs_client, bucket_name, blob_name, summary_text)
1468
- updated_content = summary_text
1469
  elif kind == "mind_map":
1470
  mind_map_json = {"mind_map": str(new_content)}
1471
  mind_map_text = json.dumps(mind_map_json, ensure_ascii=False, indent=2)
@@ -1831,7 +1842,7 @@ def chat_with_opan_ai_assistant(password, youtube_id, user_data, thread_id, tras
1831
  client.beta.threads.messages.create(
1832
  thread_id=thread.id,
1833
  role="user",
1834
- content=user_message + "/n 請嚴格遵循instructions,擔任一位蘇格拉底家教,請一定要用繁體中文回答 zh-TW,並用台灣人的禮貌口語表達,回答時不要特別說明這是台灣人的語氣,請在回答的最後標註【參考:(時):(分):(秒)】,(如果是反問學生,就只問一個問題,請幫助學生更好的理解資料,字數在100字以內,回答時請用數學符號代替文字(Latex 用 $ 字號 render, ex: $x^2$)"
1835
  )
1836
 
1837
  # 运行助手,生成响应
@@ -2321,23 +2332,11 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2321
  ai_msg = gr.Textbox(label="訊息輸入",scale=3)
2322
  ai_send_button = gr.Button("送出", variant="primary",scale=1)
2323
  with gr.Tab("文章模式"):
2324
- with gr.Row() as reading_passage_admin:
2325
- reading_passage_kind = gr.Textbox(value="reading_passage", show_label=False)
2326
- reading_passage_edit_button = gr.Button("編輯", size="sm", variant="primary")
2327
- reading_passage_update_button = gr.Button("更新", size="sm", variant="primary")
2328
- reading_passage_delete_button = gr.Button("刪除", size="sm", variant="primary")
2329
- reading_passage_create_button = gr.Button("建立", size="sm", variant="primary")
2330
  with gr.Row():
2331
  reading_passage = gr.Markdown(show_label=False, latex_delimiters = [{"left": "$", "right": "$", "display": False}])
2332
  reading_passage_speak_button = gr.Button("Speak", visible=False)
2333
  reading_passage_audio_output = gr.Audio(label="Audio Output", visible=False)
2334
  with gr.Tab("重點摘要"):
2335
- with gr.Row() as summary_admmin:
2336
- summary_kind = gr.Textbox(value="summary", show_label=False)
2337
- summary_edit_button = gr.Button("編輯", size="sm", variant="primary")
2338
- summary_update_button = gr.Button("更新", size="sm", variant="primary")
2339
- summary_delete_button = gr.Button("刪除", size="sm", variant="primary")
2340
- summary_create_button = gr.Button("建立", size="sm", variant="primary")
2341
  with gr.Row():
2342
  df_summarise = gr.Markdown(show_label=False, latex_delimiters = [{"left": "$", "right": "$", "display": False}])
2343
  with gr.Tab("關鍵時刻"):
@@ -2439,6 +2438,26 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2439
  transcript_create_button = gr.Button("建立", size="sm", variant="primary")
2440
  with gr.Row():
2441
  df_string_output = gr.Textbox(lines=40, label="Data Text", interactive=False, show_copy_button=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2442
  with gr.Tab("關鍵時刻本文"):
2443
  with gr.Row() as key_moments_admin:
2444
  key_moments_kind = gr.Textbox(value="key_moments", show_label=False)
@@ -2577,6 +2596,7 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2577
  btn_2,
2578
  btn_3,
2579
  df_string_output,
 
2580
  df_summarise,
2581
  key_moments,
2582
  key_moments_html,
@@ -2586,6 +2606,7 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2586
  simple_html_content,
2587
  slide_image,
2588
  slide_text,
 
2589
  reading_passage,
2590
  content_subject,
2591
  content_grade,
@@ -2635,47 +2656,57 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2635
  # web_link.change(process_web_link, inputs=web_link, outputs=[btn_1, btn_2, btn_3, df_summarise, df_string_output])
2636
 
2637
  # reading_passage event
 
 
 
 
 
2638
  reading_passage_create_button.click(
2639
  create_LLM_content,
2640
  inputs=[video_id, df_string_output, reading_passage_kind],
2641
- outputs=[reading_passage]
2642
  )
2643
  reading_passage_delete_button.click(
2644
  delete_LLM_content,
2645
  inputs=[video_id, reading_passage_kind],
2646
- outputs=[reading_passage]
2647
  )
2648
  reading_passage_edit_button.click(
2649
  enable_edit_mode,
2650
  inputs=[],
2651
- outputs=[reading_passage]
2652
  )
2653
  reading_passage_update_button.click(
2654
  update_LLM_content,
2655
- inputs=[video_id, reading_passage, reading_passage_kind],
2656
- outputs=[reading_passage]
2657
  )
2658
 
2659
  # summary event
 
 
 
 
 
2660
  summary_create_button.click(
2661
  create_LLM_content,
2662
  inputs=[video_id, df_string_output, summary_kind],
2663
- outputs=[df_summarise]
2664
  )
2665
  summary_delete_button.click(
2666
  delete_LLM_content,
2667
  inputs=[video_id, summary_kind],
2668
- outputs=[df_summarise]
2669
  )
2670
  summary_edit_button.click(
2671
  enable_edit_mode,
2672
  inputs=[],
2673
- outputs=[df_summarise]
2674
  )
2675
  summary_update_button.click(
2676
  update_LLM_content,
2677
- inputs=[video_id, df_summarise, summary_kind],
2678
- outputs=[df_summarise]
2679
  )
2680
 
2681
  # transcript event
 
572
  questions = get_questions(video_id, formatted_simple_transcript, source)
573
  questions_json = json.dumps(questions, ensure_ascii=False, indent=2)
574
  summary_json = get_video_id_summary(video_id, formatted_simple_transcript, source)
575
+ summary_text = summary_json["summary"]
576
  summary = summary_json["summary"]
577
  key_moments_json = get_key_moments(video_id, formatted_simple_transcript, formatted_transcript, source)
578
  key_moments = key_moments_json["key_moments"]
 
587
  mind_map = mind_map_json["mind_map"]
588
  mind_map_html = get_mind_map_html(mind_map)
589
  reading_passage_json = get_reading_passage(video_id, formatted_simple_transcript, source)
590
+ reading_passage_text = reading_passage_json["reading_passage"]
591
  reading_passage = reading_passage_json["reading_passage"]
592
  meta_data = get_meta_data(video_id)
593
  subject = meta_data["subject"]
 
600
  questions[1] if len(questions) > 1 else "", \
601
  questions[2] if len(questions) > 2 else "", \
602
  original_transcript, \
603
+ summary_text, \
604
  summary, \
605
  key_moments_text, \
606
  key_moments_html, \
 
610
  simple_html_content, \
611
  first_image, \
612
  first_text, \
613
+ reading_passage_text, \
614
  reading_passage, \
615
  subject, \
616
  grade
 
1432
  if is_file_exists:
1433
  content = download_blob_to_string(gcs_client, bucket_name, blob_name)
1434
  content_json = json.loads(content)
1435
+ if kind == "reading_passage":
1436
+ content_text = content_json["reading_passage"]
1437
+ elif kind == "summary":
1438
+ content_text = content_json["summary"]
1439
+ else:
1440
+ content_text = json.dumps(content_json, ensure_ascii=False, indent=2)
1441
  else:
1442
  content_text = ""
1443
  return content_text
 
1466
  blob_name = f"{video_id}/{file_name}"
1467
 
1468
  if kind == "reading_passage":
1469
+ print("=========reading_passage=======")
1470
+ print(new_content)
1471
  reading_passage_json = {"reading_passage": str(new_content)}
1472
  reading_passage_text = json.dumps(reading_passage_json, ensure_ascii=False, indent=2)
1473
  upload_file_to_gcs_with_json_string(gcs_client, bucket_name, blob_name, reading_passage_text)
1474
+ updated_content = new_content
1475
  elif kind == "summary":
1476
  summary_json = {"summary": str(new_content)}
1477
  summary_text = json.dumps(summary_json, ensure_ascii=False, indent=2)
1478
  upload_file_to_gcs_with_json_string(gcs_client, bucket_name, blob_name, summary_text)
1479
+ updated_content = new_content
1480
  elif kind == "mind_map":
1481
  mind_map_json = {"mind_map": str(new_content)}
1482
  mind_map_text = json.dumps(mind_map_json, ensure_ascii=False, indent=2)
 
1842
  client.beta.threads.messages.create(
1843
  thread_id=thread.id,
1844
  role="user",
1845
+ content=user_message + "/n 請嚴格遵循instructions,擔任一位蘇格拉底家教,不要重複 user 的問句,用引導的方式指引方向,請一定要用繁體中文回答 zh-TW,並用台灣人的禮貌口語表達,回答時不要特別說明這是台灣人的語氣,請在回答的最後標註【參考:(時):(分):(秒)】,(如果是反問學生,就只問一個問題,請幫助學生更好的理解資料,字數在100字以內,回答時請用數學符號代替文字(Latex 用 $ 字號 render, ex: $x^2$)"
1846
  )
1847
 
1848
  # 运行助手,生成响应
 
2332
  ai_msg = gr.Textbox(label="訊息輸入",scale=3)
2333
  ai_send_button = gr.Button("送出", variant="primary",scale=1)
2334
  with gr.Tab("文章模式"):
 
 
 
 
 
 
2335
  with gr.Row():
2336
  reading_passage = gr.Markdown(show_label=False, latex_delimiters = [{"left": "$", "right": "$", "display": False}])
2337
  reading_passage_speak_button = gr.Button("Speak", visible=False)
2338
  reading_passage_audio_output = gr.Audio(label="Audio Output", visible=False)
2339
  with gr.Tab("重點摘要"):
 
 
 
 
 
 
2340
  with gr.Row():
2341
  df_summarise = gr.Markdown(show_label=False, latex_delimiters = [{"left": "$", "right": "$", "display": False}])
2342
  with gr.Tab("關鍵時刻"):
 
2438
  transcript_create_button = gr.Button("建立", size="sm", variant="primary")
2439
  with gr.Row():
2440
  df_string_output = gr.Textbox(lines=40, label="Data Text", interactive=False, show_copy_button=True)
2441
+ with gr.Tab("文章本文"):
2442
+ with gr.Row() as reading_passage_admin:
2443
+ reading_passage_kind = gr.Textbox(value="reading_passage", show_label=False)
2444
+ reading_passage_get_button = gr.Button("取得", size="sm", variant="primary")
2445
+ reading_passage_edit_button = gr.Button("編輯", size="sm", variant="primary")
2446
+ reading_passage_update_button = gr.Button("更新", size="sm", variant="primary")
2447
+ reading_passage_delete_button = gr.Button("刪除", size="sm", variant="primary")
2448
+ reading_passage_create_button = gr.Button("建立", size="sm", variant="primary")
2449
+ with gr.Row():
2450
+ reading_passage_text = gr.Textbox(label="reading_passage", lines=40, interactive=False, show_copy_button=True)
2451
+ with gr.Tab("重點摘要本文"):
2452
+ with gr.Row() as summary_admmin:
2453
+ summary_kind = gr.Textbox(value="summary", show_label=False)
2454
+ summary_get_button = gr.Button("取得", size="sm", variant="primary")
2455
+ summary_edit_button = gr.Button("編輯", size="sm", variant="primary")
2456
+ summary_update_button = gr.Button("更新", size="sm", variant="primary")
2457
+ summary_delete_button = gr.Button("刪除", size="sm", variant="primary")
2458
+ summary_create_button = gr.Button("建立", size="sm", variant="primary")
2459
+ with gr.Row():
2460
+ summary_text = gr.Textbox(label="Summary", lines=40, interactive=False, show_copy_button=True)
2461
  with gr.Tab("關鍵時刻本文"):
2462
  with gr.Row() as key_moments_admin:
2463
  key_moments_kind = gr.Textbox(value="key_moments", show_label=False)
 
2596
  btn_2,
2597
  btn_3,
2598
  df_string_output,
2599
+ summary_text,
2600
  df_summarise,
2601
  key_moments,
2602
  key_moments_html,
 
2606
  simple_html_content,
2607
  slide_image,
2608
  slide_text,
2609
+ reading_passage_text,
2610
  reading_passage,
2611
  content_subject,
2612
  content_grade,
 
2656
  # web_link.change(process_web_link, inputs=web_link, outputs=[btn_1, btn_2, btn_3, df_summarise, df_string_output])
2657
 
2658
  # reading_passage event
2659
+ reading_passage_get_button.click(
2660
+ get_LLM_content,
2661
+ inputs=[video_id, reading_passage_kind],
2662
+ outputs=[reading_passage_text]
2663
+ )
2664
  reading_passage_create_button.click(
2665
  create_LLM_content,
2666
  inputs=[video_id, df_string_output, reading_passage_kind],
2667
+ outputs=[reading_passage_text]
2668
  )
2669
  reading_passage_delete_button.click(
2670
  delete_LLM_content,
2671
  inputs=[video_id, reading_passage_kind],
2672
+ outputs=[reading_passage_text]
2673
  )
2674
  reading_passage_edit_button.click(
2675
  enable_edit_mode,
2676
  inputs=[],
2677
+ outputs=[reading_passage_text]
2678
  )
2679
  reading_passage_update_button.click(
2680
  update_LLM_content,
2681
+ inputs=[video_id, reading_passage_text, reading_passage_kind],
2682
+ outputs=[reading_passage_text]
2683
  )
2684
 
2685
  # summary event
2686
+ summary_get_button.click(
2687
+ get_LLM_content,
2688
+ inputs=[video_id, summary_kind],
2689
+ outputs=[summary_text]
2690
+ )
2691
  summary_create_button.click(
2692
  create_LLM_content,
2693
  inputs=[video_id, df_string_output, summary_kind],
2694
+ outputs=[summary_text]
2695
  )
2696
  summary_delete_button.click(
2697
  delete_LLM_content,
2698
  inputs=[video_id, summary_kind],
2699
+ outputs=[summary_text]
2700
  )
2701
  summary_edit_button.click(
2702
  enable_edit_mode,
2703
  inputs=[],
2704
+ outputs=[summary_text]
2705
  )
2706
  summary_update_button.click(
2707
  update_LLM_content,
2708
+ inputs=[video_id, summary_text, summary_kind],
2709
+ outputs=[summary_text]
2710
  )
2711
 
2712
  # transcript event