Your Name commited on
Commit
1139d39
1 Parent(s): 3236fcc

将高级参数输入通用化(默认隐藏),应用到所有的下拉菜单函数插件中

Browse files
crazy_functional.py CHANGED
@@ -196,6 +196,8 @@ def get_crazy_functions():
196
  "解析任意code项目": {
197
  "Color": "stop",
198
  "AsButton": False,
 
 
199
  "Function": HotReload(解析任意code项目)
200
  },
201
  })
 
196
  "解析任意code项目": {
197
  "Color": "stop",
198
  "AsButton": False,
199
+ "AdvancedArgs": True, # 调用时,唤起高级参数输入区(默认False)
200
+ "ArgsReminder": "输入时用逗号隔开, `*`代表通配符, 加了`^`代表不匹配<br>例如: `*.c, ^*.cpp, config.toml, ^README.md`", # 高级参数输入区的显示提示
201
  "Function": HotReload(解析任意code项目)
202
  },
203
  })
crazy_functions/解析项目源代码.py CHANGED
@@ -268,7 +268,7 @@ def 解析一个CSharp项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, s
268
 
269
  @CatchException
270
  def 解析任意code项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
271
- txt_pattern = plugin_kwargs.get("txt_pattern")
272
  txt_pattern = txt_pattern.replace(",", ",")
273
  # 将要匹配的模式(例如: *.c, *.cpp, *.py, config.toml)
274
  pattern_include = [_.lstrip(" ,").rstrip(" ,") for _ in txt_pattern.split(",") if _ != "" and not _.strip().startswith("^")]
 
268
 
269
  @CatchException
270
  def 解析任意code项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
271
+ txt_pattern = plugin_kwargs.get("advanced_arg")
272
  txt_pattern = txt_pattern.replace(",", ",")
273
  # 将要匹配的模式(例如: *.c, *.cpp, *.py, config.toml)
274
  pattern_include = [_.lstrip(" ,").rstrip(" ,") for _ in txt_pattern.split(",") if _ != "" and not _.strip().startswith("^")]
main.py CHANGED
@@ -85,21 +85,15 @@ def main():
85
  variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
86
  crazy_fns[k]["Button"] = gr.Button(k, variant=variant)
87
  crazy_fns[k]["Button"].style(size="sm")
88
- with gr.Row():
89
- with gr.Accordion("解析任意code项目", open=False):
90
- gr.Markdown("输入时用逗号隔开, `*`代表通配符, 加了`^`代表不匹配<br>例如: `*.c, ^*.cpp, config.toml, ^README.md`")
91
- with gr.Row():
92
- txt_pattern = gr.Textbox(show_label=False, placeholder="输入框为空则代表匹配所有文件").style(container=False)
93
- code_plugin_name = "解析任意code项目"
94
- variant = crazy_fns[code_plugin_name]["Color"] if "Color" in crazy_fns[code_plugin_name] else "secondary"
95
- crazy_fns[code_plugin_name]["Button"] = gr.Button(code_plugin_name, variant=variant)
96
- crazy_fns[code_plugin_name]["Button"].style(size="sm")
97
  with gr.Row():
98
  with gr.Accordion("更多函数插件", open=True):
99
  dropdown_fn_list = [k for k in crazy_fns.keys() if not crazy_fns[k].get("AsButton", True)]
100
- with gr.Column(scale=1):
101
  dropdown = gr.Dropdown(dropdown_fn_list, value=r"打开插件列表", label="").style(container=False)
102
- with gr.Column(scale=1):
 
 
 
103
  switchy_bt = gr.Button(r"请先从插件列表中选择", variant="secondary")
104
  with gr.Row():
105
  with gr.Accordion("点击展开“文件上传区”。上传本地文件可供红色函数插件调用。", open=False) as area_file_up:
@@ -109,7 +103,7 @@ def main():
109
  top_p = gr.Slider(minimum=-0, maximum=1.0, value=1.0, step=0.01,interactive=True, label="Top-p (nucleus sampling)",)
110
  temperature = gr.Slider(minimum=-0, maximum=2.0, value=1.0, step=0.01, interactive=True, label="Temperature",)
111
  max_length_sl = gr.Slider(minimum=256, maximum=4096, value=512, step=1, interactive=True, label="Local LLM MaxLength",)
112
- checkboxes = gr.CheckboxGroup(["基础功能区", "函数插件区", "底部输入区", "输入清除键"], value=["基础功能区", "函数插件区"], label="显示/隐藏功能区")
113
  md_dropdown = gr.Dropdown(AVAIL_LLM_MODELS, value=LLM_MODEL, label="更换LLM模型/请求源").style(container=False)
114
 
115
  gr.Markdown(description)
@@ -131,11 +125,12 @@ def main():
131
  ret.update({area_input_secondary: gr.update(visible=("底部输入区" in a))})
132
  ret.update({clearBtn: gr.update(visible=("输入清除键" in a))})
133
  ret.update({clearBtn2: gr.update(visible=("输入清除键" in a))})
 
134
  if "底部输入区" in a: ret.update({txt: gr.update(value="")})
135
  return ret
136
- checkboxes.select(fn_area_visibility, [checkboxes], [area_basic_fn, area_crazy_fn, area_input_primary, area_input_secondary, txt, txt2, clearBtn, clearBtn2] )
137
  # 整理反复出现的控件句柄组合
138
- input_combo = [cookies, max_length_sl, md_dropdown, txt, txt2, top_p, temperature, chatbot, history, system_prompt, txt_pattern]
139
  output_combo = [cookies, chatbot, history, status]
140
  predict_args = dict(fn=ArgsGeneralWrapper(predict), inputs=input_combo, outputs=output_combo)
141
  # 提交按钮、重置按钮
@@ -159,15 +154,16 @@ def main():
159
  click_handle = crazy_fns[k]["Button"].click(ArgsGeneralWrapper(crazy_fns[k]["Function"]), [*input_combo, gr.State(PORT)], output_combo)
160
  click_handle.then(on_report_generated, [file_upload, chatbot], [file_upload, chatbot])
161
  cancel_handles.append(click_handle)
162
- # 函数插件-解析任意code项目
163
- click_handle = crazy_fns[code_plugin_name]["Button"].click(ArgsGeneralWrapper(crazy_fns[code_plugin_name]["Function"]), [*input_combo, gr.State(PORT)], output_combo)
164
- click_handle.then(on_report_generated, [file_upload, chatbot], [file_upload, chatbot])
165
- cancel_handles.append(click_handle)
166
  # 函数插件-下拉菜单与随变按钮的互动
167
  def on_dropdown_changed(k):
168
  variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
169
- return {switchy_bt: gr.update(value=k, variant=variant)}
170
- dropdown.select(on_dropdown_changed, [dropdown], [switchy_bt] )
 
 
 
 
 
171
  def on_md_dropdown_changed(k):
172
  return {chatbot: gr.update(label="当前模型:"+k)}
173
  md_dropdown.select(on_md_dropdown_changed, [md_dropdown], [chatbot] )
 
85
  variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
86
  crazy_fns[k]["Button"] = gr.Button(k, variant=variant)
87
  crazy_fns[k]["Button"].style(size="sm")
 
 
 
 
 
 
 
 
 
88
  with gr.Row():
89
  with gr.Accordion("更多函数插件", open=True):
90
  dropdown_fn_list = [k for k in crazy_fns.keys() if not crazy_fns[k].get("AsButton", True)]
91
+ with gr.Row():
92
  dropdown = gr.Dropdown(dropdown_fn_list, value=r"打开插件列表", label="").style(container=False)
93
+ with gr.Row():
94
+ with gr.Accordion("高级函数插件参数区:", open=True, visible=False) as area_fn_kwargs:
95
+ plugin_advanced_arg = gr.Textbox(show_label=False, placeholder="输入框为空则代表匹配所有文件").style(container=False)
96
+ with gr.Row():
97
  switchy_bt = gr.Button(r"请先从插件列表中选择", variant="secondary")
98
  with gr.Row():
99
  with gr.Accordion("点击展开“文件上传区”。上传本地文件可供红色函数插件调用。", open=False) as area_file_up:
 
103
  top_p = gr.Slider(minimum=-0, maximum=1.0, value=1.0, step=0.01,interactive=True, label="Top-p (nucleus sampling)",)
104
  temperature = gr.Slider(minimum=-0, maximum=2.0, value=1.0, step=0.01, interactive=True, label="Temperature",)
105
  max_length_sl = gr.Slider(minimum=256, maximum=4096, value=512, step=1, interactive=True, label="Local LLM MaxLength",)
106
+ checkboxes = gr.CheckboxGroup(["基础功能区", "函数插件区", "底部输入区", "输入清除键", "插件参数区"], value=["基础功能区", "函数插件区"], label="显示/隐藏功能区")
107
  md_dropdown = gr.Dropdown(AVAIL_LLM_MODELS, value=LLM_MODEL, label="更换LLM模型/请求源").style(container=False)
108
 
109
  gr.Markdown(description)
 
125
  ret.update({area_input_secondary: gr.update(visible=("底部输入区" in a))})
126
  ret.update({clearBtn: gr.update(visible=("输入清除键" in a))})
127
  ret.update({clearBtn2: gr.update(visible=("输入清除键" in a))})
128
+ ret.update({area_fn_kwargs: gr.update(visible=("插件参数区" in a))})
129
  if "底部输入区" in a: ret.update({txt: gr.update(value="")})
130
  return ret
131
+ checkboxes.select(fn_area_visibility, [checkboxes], [area_basic_fn, area_crazy_fn, area_input_primary, area_input_secondary, txt, txt2, clearBtn, clearBtn2, area_fn_kwargs] )
132
  # 整理反复出现的控件句柄组合
133
+ input_combo = [cookies, max_length_sl, md_dropdown, txt, txt2, top_p, temperature, chatbot, history, system_prompt, plugin_advanced_arg]
134
  output_combo = [cookies, chatbot, history, status]
135
  predict_args = dict(fn=ArgsGeneralWrapper(predict), inputs=input_combo, outputs=output_combo)
136
  # 提交按钮、重置按钮
 
154
  click_handle = crazy_fns[k]["Button"].click(ArgsGeneralWrapper(crazy_fns[k]["Function"]), [*input_combo, gr.State(PORT)], output_combo)
155
  click_handle.then(on_report_generated, [file_upload, chatbot], [file_upload, chatbot])
156
  cancel_handles.append(click_handle)
 
 
 
 
157
  # 函数插件-下拉菜单与随变按钮的互动
158
  def on_dropdown_changed(k):
159
  variant = crazy_fns[k]["Color"] if "Color" in crazy_fns[k] else "secondary"
160
+ ret = {switchy_bt: gr.update(value=k, variant=variant)}
161
+ if crazy_fns[k].get("AdvancedArgs", False): # 是否唤起高级插件参数区
162
+ ret.update({area_fn_kwargs: gr.update(visible=True, label=f"插件{k}的高级参数说明:" + crazy_fns[k].get("ArgsReminder", [f"没有提供高级参数功能说明"]))})
163
+ else:
164
+ ret.update({area_fn_kwargs: gr.update(visible=False, label=f"插件{k}不需要高级参数。")})
165
+ return ret
166
+ dropdown.select(on_dropdown_changed, [dropdown], [switchy_bt, area_fn_kwargs] )
167
  def on_md_dropdown_changed(k):
168
  return {chatbot: gr.update(label="当前模型:"+k)}
169
  md_dropdown.select(on_md_dropdown_changed, [md_dropdown], [chatbot] )
toolbox.py CHANGED
@@ -24,7 +24,7 @@ def ArgsGeneralWrapper(f):
24
  """
25
  装饰器函数,用于重组输入参数,改变输入参数的顺序与结构。
26
  """
27
- def decorated(cookies, max_length, llm_model, txt, txt2, top_p, temperature, chatbot, history, system_prompt, txt_pattern, *args):
28
  txt_passon = txt
29
  if txt == "" and txt2 != "": txt_passon = txt2
30
  # 引入一个有cookie的chatbot
@@ -39,10 +39,9 @@ def ArgsGeneralWrapper(f):
39
  'max_length': max_length,
40
  'temperature':temperature,
41
  }
42
- # plugin_kwargs = {
43
- # # 目前还没有
44
- # }
45
- plugin_kwargs = dict(txt_pattern = txt_pattern)
46
  chatbot_with_cookie = ChatBotWithCookies(cookies)
47
  chatbot_with_cookie.write_list(chatbot)
48
  yield from f(txt_passon, llm_kwargs, plugin_kwargs, chatbot_with_cookie, history, system_prompt, *args)
 
24
  """
25
  装饰器函数,用于重组输入参数,改变输入参数的顺序与结构。
26
  """
27
+ def decorated(cookies, max_length, llm_model, txt, txt2, top_p, temperature, chatbot, history, system_prompt, plugin_advanced_arg, *args):
28
  txt_passon = txt
29
  if txt == "" and txt2 != "": txt_passon = txt2
30
  # 引入一个有cookie的chatbot
 
39
  'max_length': max_length,
40
  'temperature':temperature,
41
  }
42
+ plugin_kwargs = {
43
+ "advanced_arg": plugin_advanced_arg,
44
+ }
 
45
  chatbot_with_cookie = ChatBotWithCookies(cookies)
46
  chatbot_with_cookie.write_list(chatbot)
47
  yield from f(txt_passon, llm_kwargs, plugin_kwargs, chatbot_with_cookie, history, system_prompt, *args)