From b2fba014871f8c17d61cd81320be4b764a0e9f80 Mon Sep 17 00:00:00 2001 From: qingxu fu <505030475@qq.com> Date: Fri, 14 Apr 2023 12:52:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=8A=E5=87=BD=E6=95=B0=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=B9=B6=E8=A1=8C=E6=95=B0=E9=87=8F=E9=99=90=E5=88=B6=E6=94=BE?= =?UTF-8?q?=E5=88=B0config=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 3 +++ crazy_functions/Latex全文润色.py | 2 +- crazy_functions/Latex全文翻译.py | 2 +- crazy_functions/crazy_utils.py | 13 ++++++++----- crazy_functions/批量Markdown翻译.py | 2 +- crazy_functions/批量翻译PDF文档_多线程.py | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/config.py b/config.py index 176d934..597b059 100644 --- a/config.py +++ b/config.py @@ -33,6 +33,9 @@ LAYOUT = "LEFT-RIGHT" # "LEFT-RIGHT"(左右布局) # "TOP-DOWN"(上下布 # 发送请求到OpenAI后,等待多久判定为超时 TIMEOUT_SECONDS = 30 +# 多线程函数插件中,默认允许多少路线程同时访问OpenAI。OpenAI的限制是不能超过20 +DEFAULT_WORKER_NUM = 8 + # 网页的端口, -1代表随机端口 WEB_PORT = -1 diff --git a/crazy_functions/Latex全文润色.py b/crazy_functions/Latex全文润色.py index ff6d45d..46026fb 100644 --- a/crazy_functions/Latex全文润色.py +++ b/crazy_functions/Latex全文润色.py @@ -92,7 +92,7 @@ def 多文件润色(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch chatbot=chatbot, history_array=[[""] for _ in range(n_split)], sys_prompt_array=sys_prompt_array, - max_workers=5, # 并行任务数量限制,最多同时执行5个,其他的排队等待 + # max_workers=5, # 并行任务数量限制,最多同时执行5个,其他的排队等待 scroller_max_len = 80 ) diff --git a/crazy_functions/Latex全文翻译.py b/crazy_functions/Latex全文翻译.py index d234d88..06b4502 100644 --- a/crazy_functions/Latex全文翻译.py +++ b/crazy_functions/Latex全文翻译.py @@ -90,7 +90,7 @@ def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch chatbot=chatbot, history_array=[[""] for _ in range(n_split)], sys_prompt_array=sys_prompt_array, - max_workers=5, # OpenAI所允许的最大并行过载 + # max_workers=5, # OpenAI所允许的最大并行过载 scroller_max_len = 80 ) diff --git a/crazy_functions/crazy_utils.py b/crazy_functions/crazy_utils.py index 27d58c7..2e6f277 100644 --- a/crazy_functions/crazy_utils.py +++ b/crazy_functions/crazy_utils.py @@ -1,10 +1,9 @@ import traceback -from toolbox import update_ui +from toolbox import update_ui, get_conf def input_clipping(inputs, history, max_token_limit): import tiktoken import numpy as np - from toolbox import get_conf enc = tiktoken.encoding_for_model(*get_conf('LLM_MODEL')) def get_token_num(txt): return len(enc.encode(txt, disallowed_special=())) @@ -132,7 +131,7 @@ def request_gpt_model_in_new_thread_with_ui_alive( def request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency( inputs_array, inputs_show_user_array, llm_kwargs, chatbot, history_array, sys_prompt_array, - refresh_interval=0.2, max_workers=5, scroller_max_len=30, + refresh_interval=0.2, max_workers=-1, scroller_max_len=30, handle_token_exceed=True, show_user_at_complete=False, retry_times_at_unknown_error=2, ): @@ -153,7 +152,7 @@ def request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency( history_array (list): List of chat history (历史对话输入,双层列表,第一层列表是子任务分解,第二层列表是对话历史) sys_prompt_array (list): List of system prompts (系统输入,列表,用于输入给GPT的前提提示,比如你是翻译官怎样怎样) refresh_interval (float, optional): Refresh interval for UI (default: 0.2) (刷新时间间隔频率,建议低于1,不可高于3,仅仅服务于视觉效果) - max_workers (int, optional): Maximum number of threads (default: 10) (最大线程数,如果子任务非常多,需要用此选项防止高频地请求openai导致错误) + max_workers (int, optional): Maximum number of threads (default: see config.py) (最大线程数,如果子任务非常多,需要用此选项防止高频地请求openai导致错误) scroller_max_len (int, optional): Maximum length for scroller (default: 30)(数据流的显示最后收到的多少个字符,仅仅服务于视觉效果) handle_token_exceed (bool, optional): (是否在输入过长时,自动缩减文本) handle_token_exceed:是否自动处理token溢出的情况,如果选择自动处理,则会在溢出时暴力截断,默认开启 @@ -168,6 +167,10 @@ def request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency( from request_llm.bridge_chatgpt import predict_no_ui_long_connection assert len(inputs_array) == len(history_array) assert len(inputs_array) == len(sys_prompt_array) + if max_workers == -1: # 读取配置文件 + try: max_workers, = get_conf('DEFAULT_WORKER_NUM') + except: max_workers = 8 + if max_workers <= 0 or max_workers >= 20: max_workers = 8 executor = ThreadPoolExecutor(max_workers=max_workers) n_frag = len(inputs_array) # 用户反馈 @@ -176,7 +179,7 @@ def request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency( # 跨线程传递 mutable = [["", time.time(), "等待中"] for _ in range(n_frag)] - # + # 子线程任务 def _req_gpt(index, inputs, history, sys_prompt): gpt_say = "" retry_op = retry_times_at_unknown_error diff --git a/crazy_functions/批量Markdown翻译.py b/crazy_functions/批量Markdown翻译.py index 6852512..119d3a5 100644 --- a/crazy_functions/批量Markdown翻译.py +++ b/crazy_functions/批量Markdown翻译.py @@ -73,7 +73,7 @@ def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch chatbot=chatbot, history_array=[[""] for _ in range(n_split)], sys_prompt_array=sys_prompt_array, - max_workers=5, # OpenAI所允许的最大并行过载 + # max_workers=5, # OpenAI所允许的最大并行过载 scroller_max_len = 80 ) diff --git a/crazy_functions/批量翻译PDF文档_多线程.py b/crazy_functions/批量翻译PDF文档_多线程.py index b3f9aaf..79c1253 100644 --- a/crazy_functions/批量翻译PDF文档_多线程.py +++ b/crazy_functions/批量翻译PDF文档_多线程.py @@ -98,7 +98,7 @@ def 解析PDF(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history_array=[[paper_meta] for _ in paper_fragments], sys_prompt_array=[ "请你作为一个学术翻译,负责把学术论文的片段准确翻译成中文。" for _ in paper_fragments], - max_workers=5 # OpenAI所允许的最大并行过载 + # max_workers=5 # OpenAI所允许的最大并行过载 ) # 整理报告的格式