youngtsai commited on
Commit
b154ec3
·
1 Parent(s): 3ed8987

socratic_mode_btn

Browse files
Files changed (1) hide show
  1. app.py +25 -10
app.py CHANGED
@@ -2074,17 +2074,22 @@ def download_exam_result(content):
2074
  return word_path
2075
 
2076
  # ---- Chatbot ----
2077
- def get_instructions(content_subject, content_grade, key_moments):
 
 
 
 
 
2078
  instructions = f"""
2079
  subject: {content_subject}
2080
  grade: {content_grade}
2081
  context: {key_moments}
2082
  Assistant Role: you are a {content_subject} assistant. you can call yourself as {content_subject} 學伴
2083
  User Role: {content_grade} th-grade student.
2084
- Method: Socratic style, guide thinking, no direct answers. this is very important, please be seriously following.
2085
  Language: Traditional Chinese ZH-TW (it's very important), suitable for {content_grade} th-grade level.
2086
  Response:
2087
- - if user say hi or hello or any greeting, just say hi back and introduce yourself. Then ask user to ask question in context.
2088
  - Single question, under 100 characters
2089
  - include math symbols (use LaTeX $ to cover before and after, ex: $x^2$)
2090
  - hint with video timestamp which format 【參考:00:00:00】.
@@ -2185,7 +2190,7 @@ def chat_with_ai(ai_name, password, video_id, user_data, trascript_state, key_mo
2185
  moment.pop('transcript', None)
2186
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
2187
 
2188
- instructions = get_instructions(content_subject, content_grade, key_moments_text)
2189
 
2190
  chatbot_config = {
2191
  "video_id": video_id,
@@ -2258,7 +2263,7 @@ def chat_with_opan_ai_assistant(password, youtube_id, user_data, thread_id, tras
2258
  moment.pop('end', None)
2259
  moment.pop('transcript', None)
2260
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
2261
- instructions = get_instructions(content_subject, content_grade, key_moments_text)
2262
  print(f"=== instructions:{instructions} ===")
2263
  metadata={
2264
  "video_id": youtube_id,
@@ -2534,7 +2539,7 @@ def poll_run_status(run_id, thread_id, timeout=600, poll_interval=5):
2534
 
2535
  return run.status
2536
 
2537
- def chat_with_opan_ai_assistant_streaming(user_message, chat_history, password, video_id, user_data, thread_id, trascript, key_moments, content_subject, content_grade):
2538
  verify_password(password)
2539
 
2540
  print("=====user_data=====")
@@ -2578,7 +2583,7 @@ def chat_with_opan_ai_assistant_streaming(user_message, chat_history, password,
2578
  moment.pop('transcript', None)
2579
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
2580
 
2581
- instructions = get_instructions(content_subject, content_grade, key_moments_text)
2582
  # 创建线程
2583
  if not thread_id:
2584
  thread = client.beta.threads.create()
@@ -2711,6 +2716,9 @@ def init_params(text, request: gr.Request):
2711
  chatbot_open_ai = gr.update(visible=False)
2712
  chatbot_open_ai_streaming = gr.update(visible=False)
2713
  chatbot_jutor = gr.update(visible=False)
 
 
 
2714
 
2715
  # if youtube_link in query_params
2716
  if "youtube_id" in request.query_params:
@@ -2729,11 +2737,15 @@ def init_params(text, request: gr.Request):
2729
  worksheet_accordion = gr.update(visible=False)
2730
  lesson_plan_accordion = gr.update(visible=False)
2731
  exit_ticket_accordion = gr.update(visible=False)
 
 
 
2732
 
2733
  return admin, reading_passage_admin, summary_admin, see_detail, \
2734
  worksheet_accordion, lesson_plan_accordion, exit_ticket_accordion, \
2735
  password_text, youtube_link, \
2736
- chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor
 
2737
 
2738
  def update_state(content_subject, content_grade, trascript, key_moments, questions_answers):
2739
  # inputs=[content_subject, content_grade, df_string_output],
@@ -2918,13 +2930,14 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2918
  send_feedback_btn = gr.Button("提問力回饋", variant="primary", scale=1, visible=False)
2919
  with gr.Row("飛特音速") as chatbot_open_ai_streaming:
2920
  with gr.Column():
 
2921
  streaming_chat_greeting = """
2922
  Hi,我是【飛特音速】,說話比較快,但有什麼問題都可以問我喔! \n
2923
  🚀 我沒有預設問題、也沒有語音輸入,適合快問快答的你 \n
2924
  🔠 鍵盤輸入你的問題,我會盡力回答你的問題喔!\n
2925
  💤 我還在成長,體力有限,每一次學習只能回答十個問題,請讓我休息一下再問問題喔!
2926
  """
2927
- additional_inputs = [password, video_id, user_data, streaming_chat_thread_id_state, trascript_state, key_moments_state, content_subject_state, content_grade_state]
2928
  streaming_chat = gr.ChatInterface(
2929
  fn=chat_with_opan_ai_assistant_streaming,
2930
  additional_inputs=additional_inputs,
@@ -3637,7 +3650,9 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
3637
  youtube_link,
3638
  chatbot_open_ai,
3639
  chatbot_open_ai_streaming,
3640
- chatbot_jutor
 
 
3641
  ]
3642
  demo.load(
3643
  init_params,
 
2074
  return word_path
2075
 
2076
  # ---- Chatbot ----
2077
+ def get_instructions(content_subject, content_grade, key_moments, socratic_mode=True):
2078
+ if socratic_mode:
2079
+ method = "Socratic style, guide thinking, no direct answers. this is very important, please be seriously following."
2080
+ else:
2081
+ method = "direct answers, but encourage user to think more."
2082
+
2083
  instructions = f"""
2084
  subject: {content_subject}
2085
  grade: {content_grade}
2086
  context: {key_moments}
2087
  Assistant Role: you are a {content_subject} assistant. you can call yourself as {content_subject} 學伴
2088
  User Role: {content_grade} th-grade student.
2089
+ Method: {method}
2090
  Language: Traditional Chinese ZH-TW (it's very important), suitable for {content_grade} th-grade level.
2091
  Response:
2092
+ - if user say hi or hello or any greeting, just say hi back and introduce yourself. Then tell user to ask question in context.
2093
  - Single question, under 100 characters
2094
  - include math symbols (use LaTeX $ to cover before and after, ex: $x^2$)
2095
  - hint with video timestamp which format 【參考:00:00:00】.
 
2190
  moment.pop('transcript', None)
2191
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
2192
 
2193
+ instructions = get_instructions(content_subject, content_grade, key_moments_text, socratic_mode)
2194
 
2195
  chatbot_config = {
2196
  "video_id": video_id,
 
2263
  moment.pop('end', None)
2264
  moment.pop('transcript', None)
2265
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
2266
+ instructions = get_instructions(content_subject, content_grade, key_moments_text, socratic_mode)
2267
  print(f"=== instructions:{instructions} ===")
2268
  metadata={
2269
  "video_id": youtube_id,
 
2539
 
2540
  return run.status
2541
 
2542
+ def chat_with_opan_ai_assistant_streaming(user_message, chat_history, password, video_id, user_data, thread_id, trascript, key_moments, content_subject, content_grade, socratic_mode=True):
2543
  verify_password(password)
2544
 
2545
  print("=====user_data=====")
 
2583
  moment.pop('transcript', None)
2584
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
2585
 
2586
+ instructions = get_instructions(content_subject, content_grade, key_moments_text, socratic_mode)
2587
  # 创建线程
2588
  if not thread_id:
2589
  thread = client.beta.threads.create()
 
2716
  chatbot_open_ai = gr.update(visible=False)
2717
  chatbot_open_ai_streaming = gr.update(visible=False)
2718
  chatbot_jutor = gr.update(visible=False)
2719
+ socratic_mode_btn = gr.update(visible=True)
2720
+ ai_chatbot_socratic_mode_btn = gr.update(visible=True)
2721
+ streaming_chat_socratic_mode_btn = gr.update(visible=True)
2722
 
2723
  # if youtube_link in query_params
2724
  if "youtube_id" in request.query_params:
 
2737
  worksheet_accordion = gr.update(visible=False)
2738
  lesson_plan_accordion = gr.update(visible=False)
2739
  exit_ticket_accordion = gr.update(visible=False)
2740
+ socratic_mode_btn = gr.update(visible=False)
2741
+ ai_chatbot_socratic_mode_btn = gr.update(visible=False)
2742
+ streaming_chat_socratic_mode_btn = gr.update(visible=False)
2743
 
2744
  return admin, reading_passage_admin, summary_admin, see_detail, \
2745
  worksheet_accordion, lesson_plan_accordion, exit_ticket_accordion, \
2746
  password_text, youtube_link, \
2747
+ chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor, \
2748
+ socratic_mode_btn, ai_chatbot_socratic_mode_btn, streaming_chat_socratic_mode_btn
2749
 
2750
  def update_state(content_subject, content_grade, trascript, key_moments, questions_answers):
2751
  # inputs=[content_subject, content_grade, df_string_output],
 
2930
  send_feedback_btn = gr.Button("提問力回饋", variant="primary", scale=1, visible=False)
2931
  with gr.Row("飛特音速") as chatbot_open_ai_streaming:
2932
  with gr.Column():
2933
+ streaming_chat_socratic_mode_btn = gr.Checkbox(label="蘇格拉底家教助理模式", value=True, visible=True)
2934
  streaming_chat_greeting = """
2935
  Hi,我是【飛特音速】,說話比較快,但有什麼問題都可以問我喔! \n
2936
  🚀 我沒有預設問題、也沒有語音輸入,適合快問快答的你 \n
2937
  🔠 鍵盤輸入你的問題,我會盡力回答你的問題喔!\n
2938
  💤 我還在成長,體力有限,每一次學習只能回答十個問題,請讓我休息一下再問問題喔!
2939
  """
2940
+ additional_inputs = [password, video_id, user_data, streaming_chat_thread_id_state, trascript_state, key_moments_state, content_subject_state, content_grade_state, streaming_chat_socratic_mode_btn]
2941
  streaming_chat = gr.ChatInterface(
2942
  fn=chat_with_opan_ai_assistant_streaming,
2943
  additional_inputs=additional_inputs,
 
3650
  youtube_link,
3651
  chatbot_open_ai,
3652
  chatbot_open_ai_streaming,
3653
+ chatbot_jutor,
3654
+ socratic_mode_btn,
3655
+ ai_chatbot_socratic_mode_btn,
3656
  ]
3657
  demo.load(
3658
  init_params,