diff --git a/crazy_functional.py b/crazy_functional.py index 45d54d39..f63bca26 100644 --- a/crazy_functional.py +++ b/crazy_functional.py @@ -23,6 +23,7 @@ def get_crazy_functions(): from crazy_functions.总结word文档 import 总结word文档 from crazy_functions.解析JupyterNotebook import 解析ipynb文件 from crazy_functions.Conversation_To_File import 载入对话历史存档 + from crazy_functions.Conversation_To_File import 对话历史存档 from crazy_functions.Conversation_To_File import Conversation_To_File_Wrap from crazy_functions.Conversation_To_File import 删除所有本地对话历史记录 from crazy_functions.辅助功能 import 清除缓存 @@ -198,9 +199,8 @@ def get_crazy_functions(): "Group": "对话", "AsButton": True, "Info": "保存当前的对话 | 不需要输入参数", - # "Function": HotReload(Conversation_To_File), - "Function": None, - "Class": Conversation_To_File_Wrap + "Function": HotReload(对话历史存档), # 当注册Class后,Function旧接口仅会在“虚空终端”中起作用 + "Class": Conversation_To_File_Wrap # 新一代插件需要注册Class }, "[多线程Demo]解析此项目本身(源码自译解)": { "Group": "对话|编程", @@ -213,15 +213,15 @@ def get_crazy_functions(): "AsButton": True, "Info": "查看历史上的今天事件 (这是一个面向开发者的插件Demo) | 不需要输入参数", "Function": None, - "Class": Demo_Wrap, + "Class": Demo_Wrap, # 新一代插件需要注册Class }, "精准翻译PDF论文": { "Group": "学术", "Color": "stop", "AsButton": True, "Info": "精准翻译PDF论文为中文 | 输入参数为路径", - "Function": None, - "Class": PDF_Tran, # 新一代插件都会写成 class + "Function": HotReload(批量翻译PDF文档), # 当注册Class后,Function旧接口仅会在“虚空终端”中起作用 + "Class": PDF_Tran, # 新一代插件需要注册Class }, "询问多个GPT模型": { "Group": "对话", @@ -313,8 +313,8 @@ def get_crazy_functions(): r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " r'If the term "agent" is used in this section, it should be translated to "智能体". ', "Info": "Arixv论文精细翻译 | 输入参数arxiv论文的ID,比如1812.10695", - "Function": None, - "Class": Arxiv_Localize, + "Function": HotReload(Latex翻译中文并重新编译PDF), # 当注册Class后,Function旧接口仅会在“虚空终端”中起作用 + "Class": Arxiv_Localize, # 新一代插件需要注册Class }, "本地Latex论文精细翻译(上传Latex项目)[需Latex]": { "Group": "学术", @@ -336,9 +336,8 @@ def get_crazy_functions(): r"例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " r'If the term "agent" is used in this section, it should be translated to "智能体". ', "Info": "PDF翻译中文,并重新编译PDF | 输入参数为路径", - "Function": None, - "Class": PDF_Localize - + "Function": HotReload(PDF翻译中文并重新编译PDF), # 当注册Class后,Function旧接口仅会在“虚空终端”中起作用 + "Class": PDF_Localize # 新一代插件需要注册Class } } diff --git a/crazy_functions/vt_fns/vt_call_plugin.py b/crazy_functions/vt_fns/vt_call_plugin.py index 5824d068..48da299b 100644 --- a/crazy_functions/vt_fns/vt_call_plugin.py +++ b/crazy_functions/vt_fns/vt_call_plugin.py @@ -10,7 +10,7 @@ def read_avail_plugin_enum(): from crazy_functional import get_crazy_functions plugin_arr = get_crazy_functions() # remove plugins with out explaination - plugin_arr = {k:v for k, v in plugin_arr.items() if 'Info' in v} + plugin_arr = {k:v for k, v in plugin_arr.items() if ('Info' in v) and ('Function' in v)} plugin_arr_info = {"F_{:04d}".format(i):v["Info"] for i, v in enumerate(plugin_arr.values(), start=1)} plugin_arr_dict = {"F_{:04d}".format(i):v for i, v in enumerate(plugin_arr.values(), start=1)} plugin_arr_dict_parse = {"F_{:04d}".format(i):v for i, v in enumerate(plugin_arr.values(), start=1)} diff --git a/main.py b/main.py index f59703e2..fc53e12a 100644 --- a/main.py +++ b/main.py @@ -222,11 +222,12 @@ def main(): plugins[k]["JsMenu"] = plugins[k]["Class"]().get_js_code_for_generating_menu(k) register_advanced_plugin_init_code_arr += """register_advanced_plugin_init_code("{k}","{gui_js}");""".format(k=k, gui_js=plugins[k]["JsMenu"]) if not plugins[k].get("AsButton", True): continue - if plugins[k].get("Function", None): + if plugins[k].get("Class", None) is None: + assert plugins[k].get("Function", None) is not None click_handle = plugins[k]["Button"].click(ArgsGeneralWrapper(plugins[k]["Function"]), [*input_combo], output_combo) click_handle.then(on_report_generated, [cookies, file_upload, chatbot], [cookies, file_upload, chatbot]).then(None, [plugins[k]["Button"]], None, _js=r"(fn)=>on_plugin_exe_complete(fn)") cancel_handles.append(click_handle) - elif "Class" in plugins[k]: + else: click_handle = plugins[k]["Button"].click(None, inputs=[], outputs=None, _js=f"""()=>run_advanced_plugin_launch_code("{k}")""") # 函数插件-下拉菜单与随变按钮的互动 @@ -266,7 +267,8 @@ def main(): # 随变按钮的回调函数注册 def route(request: gr.Request, k, *args, **kwargs): if k not in [r"点击这里搜索插件列表", r"请先从插件列表中选择"]: - if plugins[k].get("Function", None): + if plugins[k].get("Class", None) is None: + assert plugins[k].get("Function", None) is not None yield from ArgsGeneralWrapper(plugins[k]["Function"])(request, *args, **kwargs) # 旧插件的高级参数区确认按钮(隐藏) old_plugin_callback = gr.Button(r"未选定任何插件", variant="secondary", visible=False, elem_id="old_callback_btn_for_plugin_exe")