WebUI增加回复意愿模式选择功能

This commit is contained in:
DrSmoothl
2025-03-20 19:38:10 +08:00
parent 03db6d3bb8
commit 3cda0fa745

205
webui.py
View File

@@ -66,6 +66,16 @@ else:
HAVE_ONLINE_STATUS_VERSION = version.parse("0.0.9") HAVE_ONLINE_STATUS_VERSION = version.parse("0.0.9")
#定义意愿模式可选项
WILLING_MODE_CHOICES = [
"classical",
"dynamic",
"custom",
]
#添加WebUI配置文件版本 #添加WebUI配置文件版本
WEBUI_VERSION = version.parse("0.0.9") WEBUI_VERSION = version.parse("0.0.9")
@@ -321,19 +331,19 @@ def format_list_to_str(lst):
# env保存函数 # env保存函数
def save_trigger( def save_trigger(
server_address, server_address,
server_port, server_port,
final_result_list, final_result_list,
t_mongodb_host, t_mongodb_host,
t_mongodb_port, t_mongodb_port,
t_mongodb_database_name, t_mongodb_database_name,
t_console_log_level, t_console_log_level,
t_file_log_level, t_file_log_level,
t_default_console_log_level, t_default_console_log_level,
t_default_file_log_level, t_default_file_log_level,
t_api_provider, t_api_provider,
t_api_base_url, t_api_base_url,
t_api_key, t_api_key,
): ):
final_result_lists = format_list_to_str(final_result_list) final_result_lists = format_list_to_str(final_result_list)
env_config_data["env_HOST"] = server_address env_config_data["env_HOST"] = server_address
@@ -402,12 +412,12 @@ def save_bot_config(t_qqbot_qq, t_nickname, t_nickname_final_result):
# 监听滑块的值变化,确保总和不超过 1并显示警告 # 监听滑块的值变化,确保总和不超过 1并显示警告
def adjust_personality_greater_probabilities( def adjust_personality_greater_probabilities(
t_personality_1_probability, t_personality_2_probability, t_personality_3_probability t_personality_1_probability, t_personality_2_probability, t_personality_3_probability
): ):
total = ( total = (
Decimal(str(t_personality_1_probability)) Decimal(str(t_personality_1_probability))
+ Decimal(str(t_personality_2_probability)) + Decimal(str(t_personality_2_probability))
+ Decimal(str(t_personality_3_probability)) + Decimal(str(t_personality_3_probability))
) )
if total > Decimal("1.0"): if total > Decimal("1.0"):
warning_message = ( warning_message = (
@@ -418,12 +428,12 @@ def adjust_personality_greater_probabilities(
def adjust_personality_less_probabilities( def adjust_personality_less_probabilities(
t_personality_1_probability, t_personality_2_probability, t_personality_3_probability t_personality_1_probability, t_personality_2_probability, t_personality_3_probability
): ):
total = ( total = (
Decimal(str(t_personality_1_probability)) Decimal(str(t_personality_1_probability))
+ Decimal(str(t_personality_2_probability)) + Decimal(str(t_personality_2_probability))
+ Decimal(str(t_personality_3_probability)) + Decimal(str(t_personality_3_probability))
) )
if total < Decimal("1.0"): if total < Decimal("1.0"):
warning_message = ( warning_message = (
@@ -435,7 +445,7 @@ def adjust_personality_less_probabilities(
def adjust_model_greater_probabilities(t_model_1_probability, t_model_2_probability, t_model_3_probability): def adjust_model_greater_probabilities(t_model_1_probability, t_model_2_probability, t_model_3_probability):
total = ( total = (
Decimal(str(t_model_1_probability)) + Decimal(str(t_model_2_probability)) + Decimal(str(t_model_3_probability)) Decimal(str(t_model_1_probability)) + Decimal(str(t_model_2_probability)) + Decimal(str(t_model_3_probability))
) )
if total > Decimal("1.0"): if total > Decimal("1.0"):
warning_message = ( warning_message = (
@@ -447,7 +457,7 @@ def adjust_model_greater_probabilities(t_model_1_probability, t_model_2_probabil
def adjust_model_less_probabilities(t_model_1_probability, t_model_2_probability, t_model_3_probability): def adjust_model_less_probabilities(t_model_1_probability, t_model_2_probability, t_model_3_probability):
total = ( total = (
Decimal(str(t_model_1_probability)) + Decimal(str(t_model_2_probability)) + Decimal(str(t_model_3_probability)) Decimal(str(t_model_1_probability)) + Decimal(str(t_model_2_probability)) + Decimal(str(t_model_3_probability))
) )
if total < Decimal("1.0"): if total < Decimal("1.0"):
warning_message = ( warning_message = (
@@ -460,13 +470,13 @@ def adjust_model_less_probabilities(t_model_1_probability, t_model_2_probability
# ============================================== # ==============================================
# 人格保存函数 # 人格保存函数
def save_personality_config( def save_personality_config(
t_prompt_personality_1, t_prompt_personality_1,
t_prompt_personality_2, t_prompt_personality_2,
t_prompt_personality_3, t_prompt_personality_3,
t_prompt_schedule, t_prompt_schedule,
t_personality_1_probability, t_personality_1_probability,
t_personality_2_probability, t_personality_2_probability,
t_personality_3_probability, t_personality_3_probability,
): ):
# 保存人格提示词 # 保存人格提示词
config_data["personality"]["prompt_personality"][0] = t_prompt_personality_1 config_data["personality"]["prompt_personality"][0] = t_prompt_personality_1
@@ -487,20 +497,20 @@ def save_personality_config(
def save_message_and_emoji_config( def save_message_and_emoji_config(
t_min_text_length, t_min_text_length,
t_max_context_size, t_max_context_size,
t_emoji_chance, t_emoji_chance,
t_thinking_timeout, t_thinking_timeout,
t_response_willing_amplifier, t_response_willing_amplifier,
t_response_interested_rate_amplifier, t_response_interested_rate_amplifier,
t_down_frequency_rate, t_down_frequency_rate,
t_ban_words_final_result, t_ban_words_final_result,
t_ban_msgs_regex_final_result, t_ban_msgs_regex_final_result,
t_check_interval, t_check_interval,
t_register_interval, t_register_interval,
t_auto_save, t_auto_save,
t_enable_check, t_enable_check,
t_check_prompt, t_check_prompt,
): ):
config_data["message"]["min_text_length"] = t_min_text_length config_data["message"]["min_text_length"] = t_min_text_length
config_data["message"]["max_context_size"] = t_max_context_size config_data["message"]["max_context_size"] = t_max_context_size
@@ -522,27 +532,30 @@ def save_message_and_emoji_config(
def save_response_model_config( def save_response_model_config(
t_model_r1_probability, t_willing_mode,
t_model_r2_probability, t_model_r1_probability,
t_model_r3_probability, t_model_r2_probability,
t_max_response_length, t_model_r3_probability,
t_model1_name, t_max_response_length,
t_model1_provider, t_model1_name,
t_model1_pri_in, t_model1_provider,
t_model1_pri_out, t_model1_pri_in,
t_model2_name, t_model1_pri_out,
t_model2_provider, t_model2_name,
t_model3_name, t_model2_provider,
t_model3_provider, t_model3_name,
t_emotion_model_name, t_model3_provider,
t_emotion_model_provider, t_emotion_model_name,
t_topic_judge_model_name, t_emotion_model_provider,
t_topic_judge_model_provider, t_topic_judge_model_name,
t_summary_by_topic_model_name, t_topic_judge_model_provider,
t_summary_by_topic_model_provider, t_summary_by_topic_model_name,
t_vlm_model_name, t_summary_by_topic_model_provider,
t_vlm_model_provider, t_vlm_model_name,
t_vlm_model_provider,
): ):
if PARSED_CONFIG_VERSION >= version.parse("0.0.10"):
config_data["willing"]["willing_mode"] = t_willing_mode
config_data["response"]["model_r1_probability"] = t_model_r1_probability config_data["response"]["model_r1_probability"] = t_model_r1_probability
config_data["response"]["model_v3_probability"] = t_model_r2_probability config_data["response"]["model_v3_probability"] = t_model_r2_probability
config_data["response"]["model_r1_distill_probability"] = t_model_r3_probability config_data["response"]["model_r1_distill_probability"] = t_model_r3_probability
@@ -569,15 +582,15 @@ def save_response_model_config(
def save_memory_mood_config( def save_memory_mood_config(
t_build_memory_interval, t_build_memory_interval,
t_memory_compress_rate, t_memory_compress_rate,
t_forget_memory_interval, t_forget_memory_interval,
t_memory_forget_time, t_memory_forget_time,
t_memory_forget_percentage, t_memory_forget_percentage,
t_memory_ban_words_final_result, t_memory_ban_words_final_result,
t_mood_update_interval, t_mood_update_interval,
t_mood_decay_rate, t_mood_decay_rate,
t_mood_intensity_factor, t_mood_intensity_factor,
): ):
config_data["memory"]["build_memory_interval"] = t_build_memory_interval config_data["memory"]["build_memory_interval"] = t_build_memory_interval
config_data["memory"]["memory_compress_rate"] = t_memory_compress_rate config_data["memory"]["memory_compress_rate"] = t_memory_compress_rate
@@ -594,17 +607,17 @@ def save_memory_mood_config(
def save_other_config( def save_other_config(
t_keywords_reaction_enabled, t_keywords_reaction_enabled,
t_enable_advance_output, t_enable_advance_output,
t_enable_kuuki_read, t_enable_kuuki_read,
t_enable_debug_output, t_enable_debug_output,
t_enable_friend_chat, t_enable_friend_chat,
t_chinese_typo_enabled, t_chinese_typo_enabled,
t_error_rate, t_error_rate,
t_min_freq, t_min_freq,
t_tone_error_rate, t_tone_error_rate,
t_word_replace_rate, t_word_replace_rate,
t_remote_status, t_remote_status,
): ):
config_data["keywords_reaction"]["enable"] = t_keywords_reaction_enabled config_data["keywords_reaction"]["enable"] = t_keywords_reaction_enabled
config_data["others"]["enable_advance_output"] = t_enable_advance_output config_data["others"]["enable_advance_output"] = t_enable_advance_output
@@ -624,9 +637,9 @@ def save_other_config(
def save_group_config( def save_group_config(
t_talk_allowed_final_result, t_talk_allowed_final_result,
t_talk_frequency_down_final_result, t_talk_frequency_down_final_result,
t_ban_user_id_final_result, t_ban_user_id_final_result,
): ):
config_data["groups"]["talk_allowed"] = t_talk_allowed_final_result config_data["groups"]["talk_allowed"] = t_talk_allowed_final_result
config_data["groups"]["talk_frequency_down"] = t_talk_frequency_down_final_result config_data["groups"]["talk_frequency_down"] = t_talk_frequency_down_final_result
@@ -1182,6 +1195,23 @@ with gr.Blocks(title="MaimBot配置文件编辑") as app:
with gr.Column(scale=3): with gr.Column(scale=3):
with gr.Row(): with gr.Row():
gr.Markdown("""### 回复设置""") gr.Markdown("""### 回复设置""")
if PARSED_CONFIG_VERSION >= version.parse("0.0.10"):
with gr.Row():
gr.Markdown("""#### 回复意愿模式""")
with gr.Row():
gr.Markdown("""回复意愿模式说明:\n
classical为经典回复意愿管理器\n
dynamic为动态意愿管理器\n
custom为自定义意愿管理器
""")
with gr.Row():
willing_mode = gr.Dropdown(
choices=WILLING_MODE_CHOICES,
value=config_data["willing"]["willing_mode"],
label="回复意愿模式"
)
else:
willing_mode = gr.Textbox(visible=False,value="disabled")
with gr.Row(): with gr.Row():
model_r1_probability = gr.Slider( model_r1_probability = gr.Slider(
minimum=0, minimum=0,
@@ -1355,6 +1385,7 @@ with gr.Blocks(title="MaimBot配置文件编辑") as app:
save_model_btn.click( save_model_btn.click(
save_response_model_config, save_response_model_config,
inputs=[ inputs=[
willing_mode,
model_r1_probability, model_r1_probability,
model_r2_probability, model_r2_probability,
model_r3_probability, model_r3_probability,