From 4b21ebdba6ee6f7cf92f5dc1442d0bec507152e2 Mon Sep 17 00:00:00 2001 From: okabe <923048992@qq.com> Date: Wed, 29 Mar 2023 14:53:53 +0800 Subject: [PATCH 1/3] feat: support stop generate button (#53) --- main.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index 6359d36..5c25d96 100644 --- a/main.py +++ b/main.py @@ -52,6 +52,7 @@ with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: with gr.Row(): resetBtn = gr.Button("重置", variant="secondary") submitBtn = gr.Button("提交", variant="primary") + stopBtn = gr.Button("停止", variant="stop") with gr.Row(): from check_proxy import check_proxy statusDisplay = gr.Markdown(f"Tip: 按Enter提交, 按Shift+Enter换行. \nNetwork: {check_proxy(proxies)}\nModel: {LLM_MODEL}") @@ -79,9 +80,10 @@ with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: txt.submit(**predict_args) txt.submit(**empty_txt_args) - submitBtn.click(**predict_args) + submit_event = submitBtn.click(**predict_args) submitBtn.click(**empty_txt_args) resetBtn.click(lambda: ([], [], "已重置"), None, [chatbot, history, statusDisplay]) + stopBtn.click(fn=None, inputs=None, outputs=None, cancels=[submit_event]) for k in functional: functional[k]["Button"].click(predict, [txt, top_p, temperature, chatbot, history, system_prompt, gr.State(True), gr.State(k)], [chatbot, history, statusDisplay], show_progress=True) From c78254cd865fef421871865be6dc2b5062a8ded0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 29 Mar 2023 20:07:38 +0800 Subject: [PATCH 2/3] Merge branch 'master' of https://github.com/Okabe-Rintarou-0/chatgpt_academic into Okabe-Rintarou-0-master --- config.py | 2 +- main.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/config.py b/config.py index badcd49..644bd4d 100644 --- a/config.py +++ b/config.py @@ -20,7 +20,7 @@ else: print('网络代理状态:未配置。无代理状态下很可能无法访问。') # 发送请求到OpenAI后,等待多久判定为超时 -TIMEOUT_SECONDS = 20 +TIMEOUT_SECONDS = 25 # 网页的端口, -1代表随机端口 WEB_PORT = -1 diff --git a/main.py b/main.py index 50ccf30..8a6db8f 100644 --- a/main.py +++ b/main.py @@ -36,6 +36,7 @@ gr.Chatbot.postprocess = format_io from theme import adjust_theme set_theme = adjust_theme() +can_cancel_events = [] with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: gr.HTML(title_html) with gr.Row(): @@ -52,6 +53,7 @@ with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: with gr.Row(): resetBtn = gr.Button("重置", variant="secondary") submitBtn = gr.Button("提交", variant="primary") + stopBtn = gr.Button("停止", variant="stop") with gr.Row(): from check_proxy import check_proxy statusDisplay = gr.Markdown(f"Tip: 按Enter提交, 按Shift+Enter换行. \nNetwork: {check_proxy(proxies)}\nModel: {LLM_MODEL}") @@ -77,14 +79,15 @@ with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: predict_args = dict(fn=predict, inputs=[txt, top_p, temperature, chatbot, history, system_prompt], outputs=[chatbot, history, statusDisplay], show_progress=True) empty_txt_args = dict(fn=lambda: "", inputs=[], outputs=[txt]) - txt.submit(**predict_args) + can_cancel_events.append(txt.submit(**predict_args)) txt.submit(**empty_txt_args) - submitBtn.click(**predict_args) + can_cancel_events.append(submitBtn.click(**predict_args)) submitBtn.click(**empty_txt_args) resetBtn.click(lambda: ([], [], "已重置"), None, [chatbot, history, statusDisplay]) for k in functional: - functional[k]["Button"].click(predict, + click_handle = functional[k]["Button"].click(predict, [txt, top_p, temperature, chatbot, history, system_prompt, gr.State(True), gr.State(k)], [chatbot, history, statusDisplay], show_progress=True) + can_cancel_events.append(click_handle) file_upload.upload(on_file_uploaded, [file_upload, chatbot, txt], [chatbot, txt]) for k in crazy_functional: click_handle = crazy_functional[k]["Button"].click(crazy_functional[k]["Function"], @@ -92,6 +95,8 @@ with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: ) try: click_handle.then(on_report_generated, [file_upload, chatbot], [file_upload, chatbot]) except: pass + can_cancel_events.append(click_handle) + stopBtn.click(fn=None, inputs=None, outputs=None, cancels=can_cancel_events) # gradio的inbrowser触发不太稳定,回滚代码到原始的浏览器打开函数 def auto_opentab_delay(): From e79b0c0835554136efe98508ddfe865fda146e80 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 29 Mar 2023 20:36:58 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=90=8E=E4=B8=8D?= =?UTF-8?q?=E6=B8=85=E7=A9=BA=E8=BE=93=E5=85=A5=E6=A0=8F=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=81=9C=E6=AD=A2=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index 5f02a38..acd8d4f 100644 --- a/main.py +++ b/main.py @@ -36,7 +36,7 @@ gr.Chatbot.postprocess = format_io from theme import adjust_theme set_theme = adjust_theme() -can_cancel_events = [] +cancel_handles = [] with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: gr.HTML(title_html) with gr.Row(): @@ -77,18 +77,18 @@ with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: temperature = gr.Slider(minimum=-0, maximum=2.0, value=1.0, step=0.01, interactive=True, label="Temperature",) predict_args = dict(fn=predict, inputs=[txt, top_p, temperature, chatbot, history, system_prompt], outputs=[chatbot, history, statusDisplay], show_progress=True) - empty_txt_args = dict(fn=lambda: "", inputs=[], outputs=[txt]) + empty_txt_args = dict(fn=lambda: "", inputs=[], outputs=[txt]) # 用于在提交后清空输入栏 - can_cancel_events.append(txt.submit(**predict_args)) - txt.submit(**empty_txt_args) - can_cancel_events.append(submitBtn.click(**predict_args)) - submitBtn.click(**empty_txt_args) + cancel_handles.append(txt.submit(**predict_args)) + # txt.submit(**empty_txt_args) 在提交后清空输入栏 + cancel_handles.append(submitBtn.click(**predict_args)) + # submitBtn.click(**empty_txt_args) 在提交后清空输入栏 resetBtn.click(lambda: ([], [], "已重置"), None, [chatbot, history, statusDisplay]) stopBtn.click(fn=None, inputs=None, outputs=None, cancels=[submit_event]) for k in functional: click_handle = functional[k]["Button"].click(predict, [txt, top_p, temperature, chatbot, history, system_prompt, gr.State(True), gr.State(k)], [chatbot, history, statusDisplay], show_progress=True) - can_cancel_events.append(click_handle) + cancel_handles.append(click_handle) file_upload.upload(on_file_uploaded, [file_upload, chatbot, txt], [chatbot, txt]) for k in crazy_functional: click_handle = crazy_functional[k]["Button"].click(crazy_functional[k]["Function"], @@ -96,8 +96,8 @@ with gr.Blocks(theme=set_theme, analytics_enabled=False) as demo: ) try: click_handle.then(on_report_generated, [file_upload, chatbot], [file_upload, chatbot]) except: pass - can_cancel_events.append(click_handle) - stopBtn.click(fn=None, inputs=None, outputs=None, cancels=can_cancel_events) + cancel_handles.append(click_handle) + stopBtn.click(fn=None, inputs=None, outputs=None, cancels=cancel_handles) # gradio的inbrowser触发不太稳定,回滚代码到原始的浏览器打开函数 def auto_opentab_delay():