youngtsai commited on
Commit
a80b33d
·
1 Parent(s): 1b0569d

CHAT_LIMIT = 10

Browse files
Files changed (1) hide show
  1. app.py +50 -18
app.py CHANGED
@@ -83,6 +83,7 @@ else:
83
 
84
  TRANSCRIPTS = []
85
  CURRENT_INDEX = 0
 
86
 
87
  # CLIENTS CONFIG
88
  GROQ_CLIENT = Groq(api_key=GROQ_API_KEY)
@@ -2085,7 +2086,7 @@ def get_instructions(content_subject, content_grade, key_moments):
2085
  """
2086
  return instructions
2087
 
2088
- def chat_with_ai(ai_name, password, video_id, user_data, trascript_state, key_moments, user_message, chat_history, content_subject, content_grade, questions_answers_json, socratic_mode=False):
2089
  verify_password(password)
2090
 
2091
  print("=====user_data=====")
@@ -2108,10 +2109,17 @@ def chat_with_ai(ai_name, password, video_id, user_data, trascript_state, key_mo
2108
 
2109
  # 等待 3 秒
2110
  time.sleep(3)
 
 
 
 
 
 
 
2111
 
2112
- return "", chat_history
2113
 
2114
- if chat_history is not None and len(chat_history) > 11:
2115
  error_msg = "此次對話超過上限(對話一輪10次)"
2116
  raise gr.Error(error_msg)
2117
 
@@ -2197,14 +2205,22 @@ def chat_with_ai(ai_name, password, video_id, user_data, trascript_state, key_mo
2197
  else:
2198
  chat_history.append(new_chat_history)
2199
 
 
 
 
 
 
 
 
 
2200
  # 返回聊天历史和空字符串清空输入框
2201
- return "", chat_history
2202
  except Exception as e:
2203
  # 处理错误情况
2204
  print(f"Error: {e}")
2205
  return "请求失败,请稍后再试!", chat_history
2206
 
2207
- def chat_with_opan_ai_assistant(password, youtube_id, user_data, thread_id, trascript_state, key_moments, user_message, chat_history, content_subject, content_grade, questions_answers_json, socratic_mode=False):
2208
  verify_password(password)
2209
 
2210
  print("=====user_data=====")
@@ -2233,12 +2249,19 @@ def chat_with_opan_ai_assistant(password, youtube_id, user_data, thread_id, tras
2233
 
2234
  # 等待 3 秒
2235
  time.sleep(3)
 
 
 
 
 
 
 
2236
 
2237
- return "", chat_history, thread_id
2238
 
2239
 
2240
  # 如果 chat_history 超過 10 則訊息,直接 return "對話超過上限"
2241
- if chat_history is not None and len(chat_history) > 10:
2242
  error_msg = "此次對話超過上限(對話一輪10次)"
2243
  raise gr.Error(error_msg)
2244
 
@@ -2329,8 +2352,17 @@ def chat_with_opan_ai_assistant(password, youtube_id, user_data, thread_id, tras
2329
  print(f"Error: {e}")
2330
  raise gr.Error(f"Error: {e}")
2331
 
 
 
 
 
 
 
 
 
 
2332
  # 返回聊天历史和空字符串清空输入框
2333
- return "", chat_history, thread.id
2334
 
2335
  def process_open_ai_audio_to_chatbot(password, audio_url):
2336
  verify_password(password)
@@ -2418,8 +2450,8 @@ def chat_with_opan_ai_assistant_streaming(user_message, chat_history, password,
2418
  raise gr.Error(error_msg)
2419
 
2420
  # 如果 chat_history 超過 10 則訊息,直接 return "對話超過上限"
2421
- if chat_history is not None and len(chat_history) > 11:
2422
- error_msg = "此次對話超過上限(對話一輪10次)"
2423
  raise gr.Error(error_msg)
2424
 
2425
  try:
@@ -3076,8 +3108,8 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
3076
  # OPENAI ASSISTANT CHATBOT 模式
3077
  send_button.click(
3078
  chat_with_opan_ai_assistant,
3079
- inputs=[password, video_id, user_data, thread_id, trascript_state, key_moments, msg, chatbot, content_subject, content_grade, questions_answers_json, socratic_mode_btn],
3080
- outputs=[msg, chatbot, thread_id],
3081
  scroll_to_output=True
3082
  )
3083
  openai_chatbot_audio_input.change(
@@ -3095,8 +3127,8 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
3095
  )
3096
  question_buttons = [btn_1, btn_2, btn_3]
3097
  for question_btn in question_buttons:
3098
- inputs_list = [password, video_id, user_data, thread_id, trascript_state, key_moments, question_btn, chatbot, content_subject, content_grade, questions_answers_json, ai_chatbot_socratic_mode_btn]
3099
- outputs_list = [msg, chatbot, thread_id]
3100
  setup_question_button_click(question_btn, inputs_list, outputs_list, chat_with_opan_ai_assistant)
3101
 
3102
  # 為生成問題按鈕設定特殊的點擊事件
@@ -3109,15 +3141,15 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
3109
  # 其他精靈 ai_chatbot 模式
3110
  ai_send_button.click(
3111
  chat_with_ai,
3112
- inputs=[ai_name, password, video_id, user_data, trascript_state, key_moments, ai_msg, ai_chatbot, content_subject, content_grade, questions_answers_json, ai_chatbot_socratic_mode_btn],
3113
- outputs=[ai_msg, ai_chatbot],
3114
  scroll_to_output=True
3115
  )
3116
  # 其他精靈 ai_chatbot 连接按钮点击事件
3117
  ai_chatbot_buttons = [ai_chatbot_question_1, ai_chatbot_question_2, ai_chatbot_question_3]
3118
  for ai_question_btn in ai_chatbot_buttons:
3119
- inputs_list = [ai_name, password, video_id, user_data, trascript_state, key_moments, ai_question_btn, ai_chatbot, content_subject, content_grade, questions_answers_json, ai_chatbot_socratic_mode_btn]
3120
- outputs_list = [ai_msg, ai_chatbot]
3121
  setup_question_button_click(ai_question_btn, inputs_list, outputs_list, chat_with_ai)
3122
 
3123
  # file_upload.change(process_file, inputs=file_upload, outputs=df_string_output)
 
83
 
84
  TRANSCRIPTS = []
85
  CURRENT_INDEX = 0
86
+ CHAT_LIMIT = 10
87
 
88
  # CLIENTS CONFIG
89
  GROQ_CLIENT = Groq(api_key=GROQ_API_KEY)
 
2086
  """
2087
  return instructions
2088
 
2089
+ def chat_with_ai(ai_name, password, video_id, user_data, trascript_state, key_moments, user_message, chat_history, content_subject, content_grade, questions_answers_json, send_btn, socratic_mode=False):
2090
  verify_password(password)
2091
 
2092
  print("=====user_data=====")
 
2109
 
2110
  # 等待 3 秒
2111
  time.sleep(3)
2112
+ send_count = len(chat_history)-1
2113
+ if len(chat_history) > CHAT_LIMIT:
2114
+ send_btn_value = f"對話已達上限 ({send_count}/{CHAT_LIMIT})"
2115
+ send_btn = gr.update(value=send_btn_value, interactive=False)
2116
+ else:
2117
+ send_btn_value = f"發送 ({send_count}/{CHAT_LIMIT})"
2118
+ send_btn = gr.update(value=send_btn_value, interactive=True)
2119
 
2120
+ return "", chat_history, send_btn
2121
 
2122
+ if chat_history is not None and len(chat_history) > CHAT_LIMIT:
2123
  error_msg = "此次對話超過上限(對話一輪10次)"
2124
  raise gr.Error(error_msg)
2125
 
 
2205
  else:
2206
  chat_history.append(new_chat_history)
2207
 
2208
+ send_count = len(chat_history)-1
2209
+ if len(chat_history) > CHAT_LIMIT:
2210
+ send_btn_value = f"對話已達上限 ({send_count}/{CHAT_LIMIT})"
2211
+ send_btn = gr.update(value=send_btn_value, interactive=False)
2212
+ else:
2213
+ send_btn_value = f"發送 ({send_count}/{CHAT_LIMIT})"
2214
+ send_btn = gr.update(value=send_btn_value, interactive=True)
2215
+
2216
  # 返回聊天历史和空字符串清空输入框
2217
+ return "", chat_history, send_btn
2218
  except Exception as e:
2219
  # 处理错误情况
2220
  print(f"Error: {e}")
2221
  return "请求失败,请稍后再试!", chat_history
2222
 
2223
+ def chat_with_opan_ai_assistant(password, youtube_id, user_data, thread_id, trascript_state, key_moments, user_message, chat_history, content_subject, content_grade, questions_answers_json, send_btn, socratic_mode=False):
2224
  verify_password(password)
2225
 
2226
  print("=====user_data=====")
 
2249
 
2250
  # 等待 3 秒
2251
  time.sleep(3)
2252
+ send_count = len(chat_history)-1
2253
+ if len(chat_history) > CHAT_LIMIT:
2254
+ send_btn_value = f"對話已達上限 ({send_count}/{CHAT_LIMIT})"
2255
+ send_btn = gr.update(value=send_btn_value, interactive=False)
2256
+ else:
2257
+ send_btn_value = f"發送 ({send_count}/{CHAT_LIMIT})"
2258
+ send_btn = gr.update(value=send_btn_value, interactive=True)
2259
 
2260
+ return "", chat_history, thread_id, send_btn
2261
 
2262
 
2263
  # 如果 chat_history 超過 10 則訊息,直接 return "對話超過上限"
2264
+ if chat_history is not None and len(chat_history) > CHAT_LIMIT:
2265
  error_msg = "此次對話超過上限(對話一輪10次)"
2266
  raise gr.Error(error_msg)
2267
 
 
2352
  print(f"Error: {e}")
2353
  raise gr.Error(f"Error: {e}")
2354
 
2355
+ send_count = len(chat_history)-1
2356
+ if len(chat_history) > CHAT_LIMIT:
2357
+ send_btn_value = f"對話已達上限 ({send_count}/{CHAT_LIMIT})"
2358
+ send_btn = gr.update(value=send_btn_value, interactive=False)
2359
+ else:
2360
+ send_btn_value = f"發送 ({send_count}/{CHAT_LIMIT})"
2361
+ send_btn = gr.update(value=send_btn_value, interactive=True)
2362
+
2363
+
2364
  # 返回聊天历史和空字符串清空输入框
2365
+ return "", chat_history, thread.id, send_btn
2366
 
2367
  def process_open_ai_audio_to_chatbot(password, audio_url):
2368
  verify_password(password)
 
2450
  raise gr.Error(error_msg)
2451
 
2452
  # 如果 chat_history 超過 10 則訊息,直接 return "對話超過上限"
2453
+ if chat_history is not None and len(chat_history) > CHAT_LIMIT:
2454
+ error_msg = f"此次對話超過上限(對話一輪{CHAT_LIMIT}次)"
2455
  raise gr.Error(error_msg)
2456
 
2457
  try:
 
3108
  # OPENAI ASSISTANT CHATBOT 模式
3109
  send_button.click(
3110
  chat_with_opan_ai_assistant,
3111
+ inputs=[password, video_id, user_data, thread_id, trascript_state, key_moments, msg, chatbot, content_subject, content_grade, questions_answers_json, send_button, socratic_mode_btn],
3112
+ outputs=[msg, chatbot, thread_id, send_button],
3113
  scroll_to_output=True
3114
  )
3115
  openai_chatbot_audio_input.change(
 
3127
  )
3128
  question_buttons = [btn_1, btn_2, btn_3]
3129
  for question_btn in question_buttons:
3130
+ inputs_list = [password, video_id, user_data, thread_id, trascript_state, key_moments, question_btn, chatbot, content_subject, content_grade, questions_answers_json, send_button, socratic_mode_btn]
3131
+ outputs_list = [msg, chatbot, thread_id, send_button]
3132
  setup_question_button_click(question_btn, inputs_list, outputs_list, chat_with_opan_ai_assistant)
3133
 
3134
  # 為生成問題按鈕設定特殊的點擊事件
 
3141
  # 其他精靈 ai_chatbot 模式
3142
  ai_send_button.click(
3143
  chat_with_ai,
3144
+ inputs=[ai_name, password, video_id, user_data, trascript_state, key_moments, ai_msg, ai_chatbot, content_subject, content_grade, questions_answers_json, ai_send_button, ai_chatbot_socratic_mode_btn],
3145
+ outputs=[ai_msg, ai_chatbot, ai_send_button],
3146
  scroll_to_output=True
3147
  )
3148
  # 其他精靈 ai_chatbot 连接按钮点击事件
3149
  ai_chatbot_buttons = [ai_chatbot_question_1, ai_chatbot_question_2, ai_chatbot_question_3]
3150
  for ai_question_btn in ai_chatbot_buttons:
3151
+ inputs_list = [ai_name, password, video_id, user_data, trascript_state, key_moments, ai_question_btn, ai_chatbot, content_subject, content_grade, questions_answers_json, ai_send_button, ai_chatbot_socratic_mode_btn]
3152
+ outputs_list = [ai_msg, ai_chatbot, ai_send_button]
3153
  setup_question_button_click(ai_question_btn, inputs_list, outputs_list, chat_with_ai)
3154
 
3155
  # file_upload.change(process_file, inputs=file_upload, outputs=df_string_output)