youngtsai commited on
Commit
91513d8
·
1 Parent(s): 4754d23

def prepare_system_prompt(self, socratic_mode):

Browse files
Files changed (2) hide show
  1. app.py +22 -7
  2. chatbot.py +4 -3
app.py CHANGED
@@ -1656,7 +1656,7 @@ def chat_with_ai(ai_name, password, video_id, trascript_state, key_moments, user
1656
  print(f"Error: {e}")
1657
  return "请求失败,请稍后再试!", chat_history
1658
 
1659
- def chat_with_opan_ai_assistant(password, youtube_id, thread_id, trascript, user_message, chat_history, content_subject, content_grade, socratic_mode=False):
1660
  verify_password(password)
1661
 
1662
  # 先計算 user_message 是否超過 500 個字
@@ -1678,12 +1678,27 @@ def chat_with_opan_ai_assistant(password, youtube_id, thread_id, trascript, user
1678
  for entry in trascript_json:
1679
  entry.pop('embed_url', None)
1680
  entry.pop('screenshot_path', None)
1681
- trascript_text = json.dumps(trascript_json, ensure_ascii=False, indent=2)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1682
 
1683
  instructions = f"""
1684
  科目:{content_subject}
1685
  年級:{content_grade}
1686
- 逐字稿資料:{trascript_text}
1687
  -------------------------------------
1688
  你是一個專業的{content_subject}老師, user 為{content_grade}的學生
1689
  socratic_mode = {socratic_mode}
@@ -2280,7 +2295,7 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2280
  # OPENAI ASSISTANT CHATBOT 模式
2281
  send_button.click(
2282
  chat_with_opan_ai_assistant,
2283
- inputs=[password, video_id, thread_id, df_string_output, msg, chatbot, content_subject, content_grade, socratic_mode_btn],
2284
  outputs=[msg, chatbot, thread_id]
2285
  )
2286
  openai_chatbot_audio_input.change(
@@ -2289,9 +2304,9 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
2289
  outputs=[msg]
2290
  )
2291
  # OPENAI ASSISTANT CHATBOT 連接按鈕點擊事件
2292
- btn_1_chat_with_opan_ai_assistant_input =[password, video_id, thread_id, df_string_output, btn_1, chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
2293
- btn_2_chat_with_opan_ai_assistant_input =[password, video_id, thread_id, df_string_output, btn_2, chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
2294
- btn_3_chat_with_opan_ai_assistant_input =[password, video_id, thread_id, df_string_output, btn_3, chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
2295
  btn_1.click(
2296
  chat_with_opan_ai_assistant,
2297
  inputs=btn_1_chat_with_opan_ai_assistant_input,
 
1656
  print(f"Error: {e}")
1657
  return "请求失败,请稍后再试!", chat_history
1658
 
1659
+ def chat_with_opan_ai_assistant(password, youtube_id, thread_id, trascript, key_moments, user_message, chat_history, content_subject, content_grade, socratic_mode=False):
1660
  verify_password(password)
1661
 
1662
  # 先計算 user_message 是否超過 500 個字
 
1678
  for entry in trascript_json:
1679
  entry.pop('embed_url', None)
1680
  entry.pop('screenshot_path', None)
1681
+ trascript_text = json.dumps(trascript_json, ensure_ascii=False)
1682
+
1683
+ if len(trascript_text) > 25000:
1684
+ if isinstance(key_moments, str):
1685
+ key_moments_json = json.loads(key_moments)
1686
+ else:
1687
+ key_moments_json = key_moments
1688
+
1689
+ # key_moments_json remove images
1690
+ for moment in key_moments_json:
1691
+ moment.pop('images', None)
1692
+ content_text = json.dumps(key_moments_json, ensure_ascii=False)
1693
+ print("=== transcript_text is too long, replace by key_moments_text ===")
1694
+ else:
1695
+ content_text = trascript_text
1696
+ print("=== transcript_text is used ===")
1697
 
1698
  instructions = f"""
1699
  科目:{content_subject}
1700
  年級:{content_grade}
1701
+ 逐字稿資料:{content_text}
1702
  -------------------------------------
1703
  你是一個專業的{content_subject}老師, user 為{content_grade}的學生
1704
  socratic_mode = {socratic_mode}
 
2295
  # OPENAI ASSISTANT CHATBOT 模式
2296
  send_button.click(
2297
  chat_with_opan_ai_assistant,
2298
+ inputs=[password, video_id, thread_id, df_string_output, key_moments, msg, chatbot, content_subject, content_grade, socratic_mode_btn],
2299
  outputs=[msg, chatbot, thread_id]
2300
  )
2301
  openai_chatbot_audio_input.change(
 
2304
  outputs=[msg]
2305
  )
2306
  # OPENAI ASSISTANT CHATBOT 連接按鈕點擊事件
2307
+ btn_1_chat_with_opan_ai_assistant_input =[password, video_id, thread_id, df_string_output, key_moments, btn_1, chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
2308
+ btn_2_chat_with_opan_ai_assistant_input =[password, video_id, thread_id, df_string_output, key_moments, btn_2, chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
2309
+ btn_3_chat_with_opan_ai_assistant_input =[password, video_id, thread_id, df_string_output, key_moments, btn_3, chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
2310
  btn_1.click(
2311
  chat_with_opan_ai_assistant,
2312
  inputs=btn_1_chat_with_opan_ai_assistant_input,
chatbot.py CHANGED
@@ -26,6 +26,10 @@ class Chatbot:
26
  key_moments_json = json.loads(key_moments_data)
27
  else:
28
  key_moments_json = key_moments_data
 
 
 
 
29
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
30
  return key_moments_text
31
 
@@ -86,9 +90,6 @@ class Chatbot:
86
  - 回答時數學式請用數學符號代替文字(Latex 用 $ 字號 render)
87
  """
88
 
89
- print("====================================")
90
- print(system_prompt)
91
-
92
  return system_prompt
93
 
94
  def prepare_messages(self, chat_history, user_message):
 
26
  key_moments_json = json.loads(key_moments_data)
27
  else:
28
  key_moments_json = key_moments_data
29
+ # key_moments_json remove images
30
+ for moment in key_moments_json:
31
+ moment.pop('images', None)
32
+
33
  key_moments_text = json.dumps(key_moments_json, ensure_ascii=False)
34
  return key_moments_text
35
 
 
90
  - 回答時數學式請用數學符號代替文字(Latex 用 $ 字號 render)
91
  """
92
 
 
 
 
93
  return system_prompt
94
 
95
  def prepare_messages(self, chat_history, user_message):