Spaces:
Running
Running
if len(trascript_text) > 25000:
Browse files- app.py +7 -5
- chatbot.py +22 -1
app.py
CHANGED
@@ -1609,7 +1609,7 @@ def download_exam_result(content):
|
|
1609 |
return word_path
|
1610 |
|
1611 |
# ---- Chatbot ----
|
1612 |
-
def chat_with_ai(ai_name, password, video_id, trascript_state, user_message, chat_history, content_subject, content_grade, socratic_mode=False):
|
1613 |
verify_password(password)
|
1614 |
|
1615 |
if chat_history is not None and len(chat_history) > 10:
|
@@ -1630,12 +1630,14 @@ def chat_with_ai(ai_name, password, video_id, trascript_state, user_message, cha
|
|
1630 |
chatbot_config = {
|
1631 |
"video_id": video_id,
|
1632 |
"trascript": simple_transcript,
|
|
|
1633 |
"content_subject": content_subject,
|
1634 |
"content_grade": content_grade,
|
1635 |
"jutor_chat_key": JUTOR_CHAT_KEY,
|
1636 |
"ai_name": ai_name,
|
1637 |
"ai_client": ai_client
|
1638 |
}
|
|
|
1639 |
chatbot = Chatbot(chatbot_config)
|
1640 |
response_completion = chatbot.chat(user_message, chat_history, socratic_mode, ai_name)
|
1641 |
|
@@ -2314,13 +2316,13 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2314 |
# ai_chatbot 模式
|
2315 |
ai_send_button.click(
|
2316 |
chat_with_ai,
|
2317 |
-
inputs=[ai_name, password, video_id, trascript_state, ai_msg, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn],
|
2318 |
outputs=[ai_msg, ai_chatbot]
|
2319 |
)
|
2320 |
# ai_chatbot 连接按钮点击事件
|
2321 |
-
ai_chatbot_question_1_chat_with_ai_input =[ai_name, password, video_id, trascript_state, ai_chatbot_question_1, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
|
2322 |
-
ai_chatbot_question_2_chat_with_ai_input =[ai_name, password, video_id, trascript_state, ai_chatbot_question_2, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
|
2323 |
-
ai_chatbot_question_3_chat_with_ai_input =[ai_name, password, video_id, trascript_state, ai_chatbot_question_3, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
|
2324 |
ai_chatbot_question_1.click(
|
2325 |
chat_with_ai,
|
2326 |
inputs=ai_chatbot_question_1_chat_with_ai_input,
|
|
|
1609 |
return word_path
|
1610 |
|
1611 |
# ---- Chatbot ----
|
1612 |
+
def chat_with_ai(ai_name, password, video_id, trascript_state, key_moments, user_message, chat_history, content_subject, content_grade, socratic_mode=False):
|
1613 |
verify_password(password)
|
1614 |
|
1615 |
if chat_history is not None and len(chat_history) > 10:
|
|
|
1630 |
chatbot_config = {
|
1631 |
"video_id": video_id,
|
1632 |
"trascript": simple_transcript,
|
1633 |
+
"key_moments": key_moments,
|
1634 |
"content_subject": content_subject,
|
1635 |
"content_grade": content_grade,
|
1636 |
"jutor_chat_key": JUTOR_CHAT_KEY,
|
1637 |
"ai_name": ai_name,
|
1638 |
"ai_client": ai_client
|
1639 |
}
|
1640 |
+
|
1641 |
chatbot = Chatbot(chatbot_config)
|
1642 |
response_completion = chatbot.chat(user_message, chat_history, socratic_mode, ai_name)
|
1643 |
|
|
|
2316 |
# ai_chatbot 模式
|
2317 |
ai_send_button.click(
|
2318 |
chat_with_ai,
|
2319 |
+
inputs=[ai_name, password, video_id, trascript_state, key_moments, ai_msg, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn],
|
2320 |
outputs=[ai_msg, ai_chatbot]
|
2321 |
)
|
2322 |
# ai_chatbot 连接按钮点击事件
|
2323 |
+
ai_chatbot_question_1_chat_with_ai_input =[ai_name, password, video_id, trascript_state, key_moments, ai_chatbot_question_1, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
|
2324 |
+
ai_chatbot_question_2_chat_with_ai_input =[ai_name, password, video_id, trascript_state, key_moments, ai_chatbot_question_2, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
|
2325 |
+
ai_chatbot_question_3_chat_with_ai_input =[ai_name, password, video_id, trascript_state, key_moments, ai_chatbot_question_3, ai_chatbot, content_subject, content_grade, ai_chatbot_socratic_mode_btn]
|
2326 |
ai_chatbot_question_1.click(
|
2327 |
chat_with_ai,
|
2328 |
inputs=ai_chatbot_question_1_chat_with_ai_input,
|
chatbot.py
CHANGED
@@ -9,6 +9,7 @@ class Chatbot:
|
|
9 |
self.content_grade = config.get('content_grade')
|
10 |
self.jutor_chat_key = config.get('jutor_chat_key')
|
11 |
self.transcript_text = self.get_transcript_text(config.get('trascript'))
|
|
|
12 |
self.ai_name = config.get('ai_name')
|
13 |
self.ai_client = config.get('ai_client')
|
14 |
|
@@ -19,6 +20,15 @@ class Chatbot:
|
|
19 |
transcript_json = transcript_data
|
20 |
transcript_text = json.dumps(transcript_json, ensure_ascii=False)
|
21 |
return transcript_text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
def chat(self, user_message, chat_history, socratic_mode=False, service_type='jutor'):
|
24 |
messages = self.prepare_messages(chat_history, user_message)
|
@@ -34,12 +44,23 @@ class Chatbot:
|
|
34 |
content_grade = self.content_grade
|
35 |
video_id = self.video_id
|
36 |
trascript_text = self.transcript_text
|
|
|
37 |
socratic_mode = str(socratic_mode)
|
38 |
ai_name = self.ai_name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
system_prompt = f"""
|
40 |
科目:{content_subject}
|
41 |
年級:{content_grade}
|
42 |
-
逐字稿資料:{
|
43 |
-------------------------------------
|
44 |
你是一個專業的{content_subject}老師, user 為{content_grade}的學生
|
45 |
socratic_mode = {socratic_mode}
|
|
|
9 |
self.content_grade = config.get('content_grade')
|
10 |
self.jutor_chat_key = config.get('jutor_chat_key')
|
11 |
self.transcript_text = self.get_transcript_text(config.get('trascript'))
|
12 |
+
self.key_moments_text = self.get_key_moments_text(config.get('key_moments'))
|
13 |
self.ai_name = config.get('ai_name')
|
14 |
self.ai_client = config.get('ai_client')
|
15 |
|
|
|
20 |
transcript_json = transcript_data
|
21 |
transcript_text = json.dumps(transcript_json, ensure_ascii=False)
|
22 |
return transcript_text
|
23 |
+
|
24 |
+
def get_key_moments_text(self, key_moments_data):
|
25 |
+
if isinstance(key_moments_data, str):
|
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 |
+
|
32 |
|
33 |
def chat(self, user_message, chat_history, socratic_mode=False, service_type='jutor'):
|
34 |
messages = self.prepare_messages(chat_history, user_message)
|
|
|
44 |
content_grade = self.content_grade
|
45 |
video_id = self.video_id
|
46 |
trascript_text = self.transcript_text
|
47 |
+
key_moments_text = self.key_moments_text
|
48 |
socratic_mode = str(socratic_mode)
|
49 |
ai_name = self.ai_name
|
50 |
+
|
51 |
+
# string with maximum length 32768
|
52 |
+
# if trascript_text is too long, replace by key_moments_text
|
53 |
+
if len(trascript_text) > 25000:
|
54 |
+
content_text = key_moments_text
|
55 |
+
print("=== transcript_text is too long, replace by key_moments_text ===")
|
56 |
+
else:
|
57 |
+
content_text = trascript_text
|
58 |
+
print("=== transcript_text is used ===")
|
59 |
+
|
60 |
system_prompt = f"""
|
61 |
科目:{content_subject}
|
62 |
年級:{content_grade}
|
63 |
+
逐字稿資料:{content_text}
|
64 |
-------------------------------------
|
65 |
你是一個專業的{content_subject}老師, user 為{content_grade}的學生
|
66 |
socratic_mode = {socratic_mode}
|