Spaces:
Sleeping
Sleeping
with gr.Accordion("選擇 AI 小精靈", open=True) as chatbot_select_accordion:
Browse files
app.py
CHANGED
@@ -2008,6 +2008,21 @@ def create_thread_id():
|
|
2008 |
print(f"create new thread_id: {thread_id}")
|
2009 |
return thread_id
|
2010 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011 |
# --- Slide mode ---
|
2012 |
def update_slide(direction):
|
2013 |
global TRANSCRIPTS
|
@@ -2056,6 +2071,10 @@ def init_params(text, request: gr.Request):
|
|
2056 |
lesson_plan_accordion = gr.update(visible=True)
|
2057 |
exit_ticket_accordion = gr.update(visible=True)
|
2058 |
|
|
|
|
|
|
|
|
|
2059 |
# if youtube_link in query_params
|
2060 |
if "youtube_id" in request.query_params:
|
2061 |
youtube_id = request.query_params["youtube_id"]
|
@@ -2076,7 +2095,8 @@ def init_params(text, request: gr.Request):
|
|
2076 |
|
2077 |
return admin, reading_passage_admin, summary_admin, see_detail, \
|
2078 |
worksheet_accordion, lesson_plan_accordion, exit_ticket_accordion, \
|
2079 |
-
password_text, youtube_link
|
|
|
2080 |
|
2081 |
def update_state(content_subject, content_grade, trascript, key_moments, question_1, question_2, question_3):
|
2082 |
# inputs=[content_subject, content_grade, df_string_output],
|
@@ -2177,50 +2197,48 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2177 |
key_moments_state = gr.State() # 使用 gr.State 存储 key_moments
|
2178 |
streaming_chat_thread_id_state = gr.State() # 使用 gr.State 存储 streaming_chat_thread_id
|
2179 |
with gr.Tab("AI小精靈"):
|
2180 |
-
with gr.Accordion("選擇 AI 小精靈", open=True):
|
2181 |
with gr.Row():
|
2182 |
-
with gr.Column(scale=1):
|
2183 |
chatbot_avatar_url = "https://junyitopicimg.s3.amazonaws.com/s4byy--icon.jpe?v=20200513013523726"
|
2184 |
-
chatbot_description = """Hi,我是你的AI
|
2185 |
-
🤔
|
2186 |
-
🗣️
|
2187 |
-
🔠
|
2188 |
-
💤
|
2189 |
-
🦄
|
2190 |
"""
|
2191 |
-
|
2192 |
gr.Image(value=chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2193 |
-
gr.Button("👆選擇【飛特精靈】", elem_id="chatbot_btn", visible=True, variant="primary")
|
2194 |
-
gr.
|
2195 |
-
with gr.Column(scale=1):
|
2196 |
-
streaming_chatbot_avatar_url = "https://
|
2197 |
-
streaming_chatbot_description = """Hi
|
2198 |
-
|
2199 |
-
|
2200 |
-
🔠
|
2201 |
-
💤
|
2202 |
-
🦄 如果達到上限,或是遇到精靈很累,請問問其他朋友,像是飛特音速說話的速度比較快,你是否跟得上呢?你也可以和其他精靈互動看看喔!
|
2203 |
"""
|
|
|
2204 |
gr.Image(value=streaming_chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2205 |
-
gr.Button("👆選擇【飛特音速】", elem_id="streaming_chatbot_btn", visible=True, variant="primary")
|
2206 |
-
gr.
|
2207 |
-
with gr.Column(scale=1):
|
2208 |
-
jutor_chatbot_avatar_url = "https://
|
2209 |
-
jutor_chatbot_description = """Hi
|
2210 |
-
🤔
|
2211 |
-
🗣️
|
2212 |
-
🔠
|
2213 |
-
💤
|
2214 |
-
🦄 如果達到上限,或是遇到精靈很累,請問問其他朋友,像是飛特音速說話的速度比較快,你是否跟得上呢?你也可以和其他精靈互動看看喔!
|
2215 |
"""
|
|
|
2216 |
gr.Image(value=jutor_chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2217 |
-
gr.Button("
|
2218 |
-
gr.
|
2219 |
|
2220 |
-
|
2221 |
-
|
2222 |
-
with gr.Row():
|
2223 |
-
with gr.Tab("飛特精靈"):
|
2224 |
user_avatar = "https://em-content.zobj.net/source/google/263/flushed-face_1f633.png"
|
2225 |
bot_avatar = "https://junyitopicimg.s3.amazonaws.com/s4byy--icon.jpe?v=20200513013523726"
|
2226 |
latex_delimiters = [{"left": "$", "right": "$", "display": False}]
|
@@ -2234,9 +2252,11 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2234 |
🦄 如果達到上限,或是遇到精靈很累,請問問其他朋友,像是飛特音速說話的速度比較快,你是否跟得上呢?你也可以和其他精靈互動看看喔!
|
2235 |
""",
|
2236 |
]]
|
2237 |
-
|
2238 |
-
|
2239 |
-
|
|
|
|
|
2240 |
with gr.Row():
|
2241 |
with gr.Accordion("你也有類似的問題想問嗎?", open=False) as ask_questions_accordion:
|
2242 |
btn_1 = gr.Button("問題一")
|
@@ -2248,7 +2268,10 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2248 |
with gr.Row():
|
2249 |
msg = gr.Textbox(label="訊息",scale=3)
|
2250 |
send_button = gr.Button("送出", variant="primary", scale=1)
|
2251 |
-
|
|
|
|
|
|
|
2252 |
streaming_chat_greeting = """
|
2253 |
Hi,我是【飛特音速】,說話比較快,但有什麼問題都可以問我喔! \n
|
2254 |
🚀 我沒有預設問題、也沒有語音輸入,適合快問快答的你 \n
|
@@ -2265,8 +2288,9 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2265 |
clear_btn="🗑️ 清除全部",
|
2266 |
stop_btn=None,
|
2267 |
description=streaming_chat_greeting
|
2268 |
-
)
|
2269 |
-
|
|
|
2270 |
ai_chatbot_greeting = [[
|
2271 |
None,
|
2272 |
"""Hi,我是飛特精靈的朋友們【梨梨、麥麥、狐狸貓】,也可以陪你一起學習本次的內容,有什麼問題都可以問我喔!
|
@@ -2447,6 +2471,23 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2447 |
mind_map_html = gr.HTML()
|
2448 |
|
2449 |
# --- Event ---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2450 |
# OPENAI ASSISTANT CHATBOT 模式
|
2451 |
send_button.click(
|
2452 |
chat_with_opan_ai_assistant,
|
@@ -2777,7 +2818,10 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue=gr.themes.colors.orange, seconda
|
|
2777 |
lesson_plan_accordion,
|
2778 |
exit_ticket_accordion,
|
2779 |
password,
|
2780 |
-
youtube_link
|
|
|
|
|
|
|
2781 |
]
|
2782 |
demo.load(
|
2783 |
init_params,
|
|
|
2008 |
print(f"create new thread_id: {thread_id}")
|
2009 |
return thread_id
|
2010 |
|
2011 |
+
def chatbot_select(chatbot_name):
|
2012 |
+
chatbot_select_accordion_visible = gr.update(open=False)
|
2013 |
+
chatbot_open_ai_visible = gr.update(visible=False)
|
2014 |
+
chatbot_open_ai_streaming_visible = gr.update(visible=False)
|
2015 |
+
chatbot_jutor_visible = gr.update(visible=False)
|
2016 |
+
|
2017 |
+
if chatbot_name == "chatbot_open_ai":
|
2018 |
+
chatbot_open_ai_visible = gr.update(visible=True)
|
2019 |
+
elif chatbot_name == "chatbot_open_ai_streaming":
|
2020 |
+
chatbot_open_ai_streaming_visible = gr.update(visible=True)
|
2021 |
+
elif chatbot_name == "chatbot_jutor":
|
2022 |
+
chatbot_jutor_visible = gr.update(visible=True)
|
2023 |
+
|
2024 |
+
return chatbot_select_accordion_visible, chatbot_open_ai_visible, chatbot_open_ai_streaming_visible, chatbot_jutor_visible
|
2025 |
+
|
2026 |
# --- Slide mode ---
|
2027 |
def update_slide(direction):
|
2028 |
global TRANSCRIPTS
|
|
|
2071 |
lesson_plan_accordion = gr.update(visible=True)
|
2072 |
exit_ticket_accordion = gr.update(visible=True)
|
2073 |
|
2074 |
+
chatbot_open_ai = gr.update(visible=False)
|
2075 |
+
chatbot_open_ai_streaming = gr.update(visible=False)
|
2076 |
+
chatbot_jutor = gr.update(visible=False)
|
2077 |
+
|
2078 |
# if youtube_link in query_params
|
2079 |
if "youtube_id" in request.query_params:
|
2080 |
youtube_id = request.query_params["youtube_id"]
|
|
|
2095 |
|
2096 |
return admin, reading_passage_admin, summary_admin, see_detail, \
|
2097 |
worksheet_accordion, lesson_plan_accordion, exit_ticket_accordion, \
|
2098 |
+
password_text, youtube_link, \
|
2099 |
+
chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor
|
2100 |
|
2101 |
def update_state(content_subject, content_grade, trascript, key_moments, question_1, question_2, question_3):
|
2102 |
# inputs=[content_subject, content_grade, df_string_output],
|
|
|
2197 |
key_moments_state = gr.State() # 使用 gr.State 存储 key_moments
|
2198 |
streaming_chat_thread_id_state = gr.State() # 使用 gr.State 存储 streaming_chat_thread_id
|
2199 |
with gr.Tab("AI小精靈"):
|
2200 |
+
with gr.Accordion("選擇 AI 小精靈", open=True) as chatbot_select_accordion:
|
2201 |
with gr.Row():
|
2202 |
+
with gr.Column(scale=1, variant="panel"):
|
2203 |
chatbot_avatar_url = "https://junyitopicimg.s3.amazonaws.com/s4byy--icon.jpe?v=20200513013523726"
|
2204 |
+
chatbot_description = """Hi,我是你的AI學伴【飛特精靈】,我可以陪你一起學習本次的內容,有什麼問題都可以問我喔!\n
|
2205 |
+
🤔 如果你不知道怎麼發問,可以點擊左下方的問題一、問題二、問題三,我會幫你生成問題!\n
|
2206 |
+
🗣️ 也可以點擊右下方用語音輸入,我會幫你轉換成文字,厲害吧!\n
|
2207 |
+
🔠 或是直接鍵盤輸入你的問題,我會盡力回答你的問題喔!\n
|
2208 |
+
💤 但我還在成長,體力有限,每一次學習只能回答十個問題,請讓我休息一下再問問題喔!\n
|
2209 |
+
🦄 如果達到上限,或是遇到精靈很累,請問問其他朋友,像是飛特音速說話的速度比較快,你是否跟得上呢?你也可以和其他精靈互動看看喔!\n
|
2210 |
"""
|
2211 |
+
chatbot_open_ai_name = gr.State("chatbot_open_ai")
|
2212 |
gr.Image(value=chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2213 |
+
chatbot_open_ai_select_btn = gr.Button("👆選擇【飛特精靈】", elem_id="chatbot_btn", visible=True, variant="primary")
|
2214 |
+
gr.Markdown(value=chatbot_description, visible=True)
|
2215 |
+
with gr.Column(scale=1, variant="panel"):
|
2216 |
+
streaming_chatbot_avatar_url = "https://storage.googleapis.com/wpassets.junyiacademy.org/1/2020/11/1-%E6%98%9F%E7%A9%BA%E9%A0%AD%E8%B2%BC-%E5%A4%AA%E7%A9%BA%E7%8B%90%E7%8B%B8%E8%B2%93-150x150.png"
|
2217 |
+
streaming_chatbot_description = """Hi,我是【飛特音速】, \n
|
2218 |
+
說話比較快,但有什麼問題都可以問我喔! \n
|
2219 |
+
🚀 我沒有預設問題、也沒有語音輸入,適合快問快答 \n
|
2220 |
+
🔠 擅長用文字表達的你,可以用鍵盤輸入你的問題,我會盡力回答你的問題喔!\n
|
2221 |
+
💤 我還在成長,體力有限,每一次學習只能回答十個問題,請讓我休息一下再問問題喔!
|
|
|
2222 |
"""
|
2223 |
+
chatbot_open_ai_streaming_name = gr.State("chatbot_open_ai_streaming")
|
2224 |
gr.Image(value=streaming_chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2225 |
+
chatbot_open_ai_streaming_select_btn = gr.Button("👆選擇【飛特音速】", elem_id="streaming_chatbot_btn", visible=True, variant="primary")
|
2226 |
+
gr.Markdown(value=streaming_chatbot_description, visible=True)
|
2227 |
+
with gr.Column(scale=1, variant="panel"):
|
2228 |
+
jutor_chatbot_avatar_url = "https://storage.googleapis.com/wpassets.junyiacademy.org/1/2019/11/%E5%9B%9B%E6%A0%BC%E6%95%85%E4%BA%8B-04.jpg"
|
2229 |
+
jutor_chatbot_description = """Hi,我是飛特精靈的朋友們【梨梨、麥麥、狐狸貓】,也可以陪你一起學習本次的內容,有什麼問題都可以問我喔!\n
|
2230 |
+
🤔 如果你不知道怎麼發問,可以點擊左下方的問題一、問題二、問題三,我會幫你生成問題!\n
|
2231 |
+
🗣️ 也可以點擊右下方用語音輸入,我會幫你轉換成文字,厲害吧!\n
|
2232 |
+
🔠 或是直接鍵盤輸入你的問題,我會盡力回答你的問題喔!\n
|
2233 |
+
💤 精靈們體力都有限,每一次學習只能回答十個問題,請讓我休息一下再問問題喔!\n
|
|
|
2234 |
"""
|
2235 |
+
chatbot_jutor_name = gr.State("chatbot_jutor")
|
2236 |
gr.Image(value=jutor_chatbot_avatar_url, height=100, width=100, show_label=False, show_download_button=False)
|
2237 |
+
chatbot_jutor_select_btn = gr.Button("👆選擇【梨梨、麥麥、狐狸貓】", elem_id="jutor_chatbot_btn", visible=True, variant="primary")
|
2238 |
+
gr.Markdown(value=jutor_chatbot_description, visible=True)
|
2239 |
|
2240 |
+
with gr.Row("飛特精靈") as chatbot_open_ai:
|
2241 |
+
with gr.Column():
|
|
|
|
|
2242 |
user_avatar = "https://em-content.zobj.net/source/google/263/flushed-face_1f633.png"
|
2243 |
bot_avatar = "https://junyitopicimg.s3.amazonaws.com/s4byy--icon.jpe?v=20200513013523726"
|
2244 |
latex_delimiters = [{"left": "$", "right": "$", "display": False}]
|
|
|
2252 |
🦄 如果達到上限,或是遇到精靈很累,請問問其他朋友,像是飛特音速說話的速度比較快,你是否跟得上呢?你也可以和其他精靈互動看看喔!
|
2253 |
""",
|
2254 |
]]
|
2255 |
+
with gr.Row():
|
2256 |
+
chatbot = gr.Chatbot(avatar_images=[user_avatar, bot_avatar], label="OPEN AI", show_share_button=False, likeable=True, show_label=False, latex_delimiters=latex_delimiters,value=chatbot_greeting)
|
2257 |
+
with gr.Row():
|
2258 |
+
thread_id = gr.Textbox(label="thread_id", visible=False)
|
2259 |
+
socratic_mode_btn = gr.Checkbox(label="蘇格拉底家教助理模式", value=True, visible=False)
|
2260 |
with gr.Row():
|
2261 |
with gr.Accordion("你也有類似的問題想問嗎?", open=False) as ask_questions_accordion:
|
2262 |
btn_1 = gr.Button("問題一")
|
|
|
2268 |
with gr.Row():
|
2269 |
msg = gr.Textbox(label="訊息",scale=3)
|
2270 |
send_button = gr.Button("送出", variant="primary", scale=1)
|
2271 |
+
|
2272 |
+
|
2273 |
+
with gr.Row("飛特音速") as chatbot_open_ai_streaming:
|
2274 |
+
with gr.Column():
|
2275 |
streaming_chat_greeting = """
|
2276 |
Hi,我是【飛特音速】,說話比較快,但有什麼問題都可以問我喔! \n
|
2277 |
🚀 我沒有預設問題、也沒有語音輸入,適合快問快答的你 \n
|
|
|
2288 |
clear_btn="🗑️ 清除全部",
|
2289 |
stop_btn=None,
|
2290 |
description=streaming_chat_greeting
|
2291 |
+
)
|
2292 |
+
with gr.Row("其他精靈") as chatbot_jutor:
|
2293 |
+
with gr.Column():
|
2294 |
ai_chatbot_greeting = [[
|
2295 |
None,
|
2296 |
"""Hi,我是飛特精靈的朋友們【梨梨、麥麥、狐狸貓】,也可以陪你一起學習本次的內容,有什麼問題都可以問我喔!
|
|
|
2471 |
mind_map_html = gr.HTML()
|
2472 |
|
2473 |
# --- Event ---
|
2474 |
+
# CHATBOT SELECT
|
2475 |
+
chatbot_open_ai_select_btn.click(
|
2476 |
+
chatbot_select,
|
2477 |
+
inputs=[chatbot_open_ai_name],
|
2478 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor]
|
2479 |
+
)
|
2480 |
+
chatbot_open_ai_streaming_select_btn.click(
|
2481 |
+
chatbot_select,
|
2482 |
+
inputs=[chatbot_open_ai_streaming_name],
|
2483 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor]
|
2484 |
+
)
|
2485 |
+
chatbot_jutor_select_btn.click(
|
2486 |
+
chatbot_select,
|
2487 |
+
inputs=[chatbot_jutor_name],
|
2488 |
+
outputs=[chatbot_select_accordion, chatbot_open_ai, chatbot_open_ai_streaming, chatbot_jutor]
|
2489 |
+
)
|
2490 |
+
|
2491 |
# OPENAI ASSISTANT CHATBOT 模式
|
2492 |
send_button.click(
|
2493 |
chat_with_opan_ai_assistant,
|
|
|
2818 |
lesson_plan_accordion,
|
2819 |
exit_ticket_accordion,
|
2820 |
password,
|
2821 |
+
youtube_link,
|
2822 |
+
chatbot_open_ai,
|
2823 |
+
chatbot_open_ai_streaming,
|
2824 |
+
chatbot_jutor
|
2825 |
]
|
2826 |
demo.load(
|
2827 |
init_params,
|