镜像自地址
https://github.com/binary-husky/gpt_academic.git
已同步 2025-12-08 23:46:48 +00:00
unify plugin calling
这个提交包含在:
@@ -1706,6 +1706,7 @@ function register_plugin_init(key, base64String){
|
||||
}
|
||||
plugin_init_info_lib[key].info = guiJsonData.Info;
|
||||
plugin_init_info_lib[key].color = guiJsonData.Color;
|
||||
plugin_init_info_lib[key].elem_id = guiJsonData.ButtonElemId;
|
||||
plugin_init_info_lib[key].label = guiJsonData.Label
|
||||
plugin_init_info_lib[key].enable_advanced_arg = guiJsonData.AdvancedArgs;
|
||||
plugin_init_info_lib[key].arg_reminder = guiJsonData.ArgsReminder;
|
||||
@@ -1753,4 +1754,36 @@ async function run_dropdown_shift(dropdown){
|
||||
__type__: 'update'
|
||||
}, "advance_arg_input_legacy", "obj");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function run_classic_plugin_via_id(plugin_elem_id){
|
||||
// find elementid
|
||||
for (key in plugin_init_info_lib){
|
||||
if (plugin_init_info_lib[key].elem_id == plugin_elem_id){
|
||||
let current_btn_name = await get_data_from_gradio_component(plugin_elem_id);
|
||||
console.log(current_btn_name);
|
||||
|
||||
gui_args = {}
|
||||
// 关闭菜单 (如果处于开启状态)
|
||||
push_data_to_gradio_component({
|
||||
visible: false,
|
||||
__type__: 'update'
|
||||
}, "plugin_arg_menu", "obj");
|
||||
hide_all_elem();
|
||||
// 为了与旧插件兼容,生成菜单时,自动加载旧高级参数输入区的值
|
||||
let advance_arg_input_legacy = await get_data_from_gradio_component('advance_arg_input_legacy');
|
||||
if (advance_arg_input_legacy.length != 0){
|
||||
gui_args = {
|
||||
"advanced_arg": advance_arg_input_legacy
|
||||
}
|
||||
}
|
||||
// execute the plugin
|
||||
push_data_to_gradio_component(JSON.stringify(gui_args), "invisible_current_pop_up_plugin_arg_final", "string");
|
||||
push_data_to_gradio_component(current_btn_name, "invisible_callback_btn_for_plugin_exe", "string");
|
||||
document.getElementById("invisible_callback_btn_for_plugin_exe").click();
|
||||
return;
|
||||
}
|
||||
}
|
||||
// console.log('unable to find function');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -31,18 +31,27 @@ def define_gui_advanced_plugin_class(plugins):
|
||||
invisible_callback_btn_for_plugin_exe = gr.Button(r"未选定任何插件", variant="secondary", visible=False, elem_id="invisible_callback_btn_for_plugin_exe").style(size="sm")
|
||||
# 随变按钮的回调函数注册
|
||||
def route_switchy_bt_with_arg(request: gr.Request, input_order, *arg):
|
||||
arguments = {k:v for k,v in zip(input_order, arg)}
|
||||
which_plugin = arguments.pop('new_plugin_callback')
|
||||
arguments = {k:v for k,v in zip(input_order, arg)} # 重新梳理输入参数,转化为kwargs字典
|
||||
which_plugin = arguments.pop('new_plugin_callback') # 获取需要执行的插件名称
|
||||
if which_plugin in [r"未选定任何插件"]: return
|
||||
usr_confirmed_arg = arguments.pop('usr_confirmed_arg')
|
||||
usr_confirmed_arg = arguments.pop('usr_confirmed_arg') # 获取插件参数
|
||||
arg_confirm: dict = {}
|
||||
usr_confirmed_arg_dict = json.loads(usr_confirmed_arg)
|
||||
usr_confirmed_arg_dict = json.loads(usr_confirmed_arg) # 读取插件参数
|
||||
for arg_name in usr_confirmed_arg_dict:
|
||||
arg_confirm.update({arg_name: str(usr_confirmed_arg_dict[arg_name]['user_confirmed_value'])})
|
||||
plugin_obj = plugins[which_plugin]["Class"]
|
||||
arguments['plugin_advanced_arg'] = arg_confirm
|
||||
if arg_confirm.get('main_input', None) is not None:
|
||||
|
||||
if plugins[which_plugin].get("Class", None) is not None: # 获取插件执行函数
|
||||
plugin_obj = plugins[which_plugin]["Class"]
|
||||
plugin_exe = plugin_obj.execute
|
||||
else:
|
||||
plugin_exe = plugins[which_plugin]["Function"]
|
||||
|
||||
arguments['plugin_advanced_arg'] = arg_confirm # 更新高级参数输入区的参数
|
||||
if arg_confirm.get('main_input', None) is not None: # 更新主输入区的参数
|
||||
arguments['txt'] = arg_confirm['main_input']
|
||||
yield from ArgsGeneralWrapper(plugin_obj.execute)(request, *arguments.values())
|
||||
|
||||
# 万事俱备,开始执行
|
||||
yield from ArgsGeneralWrapper(plugin_exe)(request, *arguments.values())
|
||||
|
||||
return invisible_callback_btn_for_plugin_exe, route_switchy_bt_with_arg, usr_confirmed_arg
|
||||
|
||||
|
||||
在新工单中引用
屏蔽一个用户