From f9c447deab592a165eeeff589e545a81352e5b7d Mon Sep 17 00:00:00 2001 From: acomic <60683977+ahhhhhhhman@users.noreply.github.com> Date: Mon, 25 Aug 2025 18:27:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=BB=E9=99=A4=E5=86=97=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE=E9=80=89=E9=A1=B9=E5=92=8C=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/config_tab.py | 210 +------------------------------------- ui/generation_handlers.py | 38 +------ ui/main_window.py | 11 -- 3 files changed, 3 insertions(+), 256 deletions(-) diff --git a/ui/config_tab.py b/ui/config_tab.py index 75ae8b9..4d0aa46 100644 --- a/ui/config_tab.py +++ b/ui/config_tab.py @@ -50,18 +50,6 @@ def build_config_tabview(self): build_embeddings_config_tab(self) build_config_choose_tab(self) - # # 底部的"保存配置"和"加载配置"按钮 - # self.btn_frame_config = ctk.CTkFrame(self.config_frame) - # self.btn_frame_config.grid(row=1, column=0, padx=5, pady=5, sticky="ew") - # self.btn_frame_config.columnconfigure(0, weight=1) - # self.btn_frame_config.columnconfigure(1, weight=1) - - # save_config_btn = ctk.CTkButton(self.btn_frame_config, text="保存当前选择接口配置到文件", command=self.save_config_btn, font=("Microsoft YaHei", 12)) - # save_config_btn.grid(row=0, column=0, padx=5, pady=5, sticky="ew") - - # load_config_btn = ctk.CTkButton(self.btn_frame_config, text="加载当前选择接口配置到程序", command=self.load_config_btn, font=("Microsoft YaHei", 12)) - # load_config_btn.grid(row=0, column=1, padx=5, pady=5, sticky="ew") - def build_ai_config_tab(self): def refresh_config_dropdown(): """刷新配置下拉菜单""" @@ -419,105 +407,6 @@ def build_ai_config_tab(self): # 初始化当前配置 on_config_selected(config_names[0]) - # def refresh_config_dropdown(): - # """刷新配置下拉菜单""" - # config_names = list(self.loaded_config.get("llm_configs", {}).keys()) - # interface_config_dropdown.configure(values=config_names) - # if config_names and self.interface_config_var.get() not in config_names: - # self.interface_config_var.set(config_names[0]) - - # def on_config_selected(new_value): - # """当选择不同配置时的回调""" - # if new_value in self.loaded_config.get("llm_configs", {}): - # config = self.loaded_config["llm_configs"][new_value] - # self.api_key_var.set(config.get("api_key", "")) - # self.base_url_var.set(config.get("base_url", "")) - # self.model_name_var.set(config.get("model_name", "")) - # self.temperature_var.set(config.get("temperature", 0.7)) - # self.max_tokens_var.set(config.get("max_tokens", 8192)) - # self.timeout_var.set(config.get("timeout", 600)) - # self.interface_format_var.set(config.get("interface_format", "OpenAI")) - - # def add_new_config(): - # """添加新配置 - 弹出对话框让用户输入名称""" - # # 创建输入对话框 - # dialog = ctk.CTkInputDialog( - # text="请输入新配置名称:", - # title="新增配置" - # ) - # new_name = dialog.get_input() # 获取用户输入 - - # if not new_name: - # return # 用户取消输入 - - # new_name = new_name.strip() - - # # 检查名称是否已存在 - # if new_name in self.loaded_config.get("llm_configs", {}): - # messagebox.showerror("错误", f"配置名称 '{new_name}' 已存在!") - # return - - # # 添加到配置字典 - # if "llm_configs" not in self.loaded_config: - # self.loaded_config["llm_configs"] = {} - - # self.loaded_config["llm_configs"][new_name] = { - # "id": str(uuid.uuid4()), # 生成唯一ID - # "api_key": "", - # "base_url": "", - # "model_name": "", - # "temperature": 0.7, - # "max_tokens": 8192, - # "timeout": 600, - # "interface_format": "OpenAI", - # "created_at": datetime.datetime.now().isoformat() # 添加创建时间 - # } - - # refresh_config_dropdown() - # self.interface_config_var.set(new_name) - # messagebox.showinfo("提示", f"已成功创建新配置: {new_name}") - - # def delete_current_config(): - # """删除当前选中的配置""" - # selected_config = self.interface_config_var.get() - # if selected_config in self.loaded_config.get("llm_configs", {}): - # if len(self.loaded_config["llm_configs"]) <= 1: - # messagebox.showerror("错误", "至少需要保留一个配置!") - # return - - # # 确认对话框 - # confirm = messagebox.askyesno( - # "确认删除", - # f"确定要删除配置 '{selected_config}' 吗?\n此操作不可撤销!" - # ) - # if not confirm: - # return - - # del self.loaded_config["llm_configs"][selected_config] - # refresh_config_dropdown() - # messagebox.showinfo("提示", f"已删除配置: {selected_config}") - # else: - # messagebox.showerror("错误", "未找到选中的配置!") - - # def save_current_config(): - # """保存当前配置""" - # config_name = self.interface_config_var.get() - # if config_name not in self.loaded_config.get("llm_configs", {}): - # messagebox.showerror("错误", "配置不存在!") - # return - - # config = self.loaded_config["llm_configs"][config_name] - # config.update({ - # "api_key": self.api_key_var.get(), - # "base_url": self.base_url_var.get(), - # "model_name": self.model_name_var.get(), - # "temperature": self.temperature_var.get(), - # "max_tokens": self.max_tokens_var.get(), - # "timeout": self.timeout_var.get(), - # "interface_format": self.interface_format_var.get(), - # "updated_at": datetime.datetime.now().isoformat() # 添加更新时间 - # }) - # messagebox.showinfo("提示", f"配置 {config_name} 已更新") # 初始化UI布局 for i in range(10): # 增加一行给按钮组 @@ -554,46 +443,6 @@ def build_ai_config_tab(self): ) interface_config_dropdown.grid(row=0, column=1, columnspan=2, padx=5, pady=5, sticky="nsew") - # # 配置管理按钮组 - # btn_frame = ctk.CTkFrame(self.ai_config_tab) - # btn_frame.grid(row=1, column=0, columnspan=3, padx=5, pady=5, sticky="ew") - # btn_frame.columnconfigure(0, weight=1) - # btn_frame.columnconfigure(1, weight=1) - # btn_frame.columnconfigure(2, weight=1) - - # add_btn = ctk.CTkButton( - # btn_frame, - # text="➕ 新增配置", - # command=add_new_config, - # font=("Microsoft YaHei", 12), - # fg_color="#2E8B57", # 绿色 - # hover_color="#3CB371" - # ) - # add_btn.grid(row=0, column=0, padx=5, pady=5, sticky="ew") - - # del_btn = ctk.CTkButton( - # btn_frame, - # text="🗑️ 删除配置", - # command=delete_current_config, - # font=("Microsoft YaHei", 12), - # fg_color="#8B0000", # 红色 - # hover_color="#CD5C5C" - # ) - # del_btn.grid(row=0, column=1, padx=5, pady=5, sticky="ew") - - # save_btn = ctk.CTkButton( - # btn_frame, - # text="💾 保存配置", - # command=save_current_config, - # font=("Microsoft YaHei", 12), - # fg_color="#1E90FF", # 蓝色 - # hover_color="#6495ED" - # ) - # save_btn.grid(row=0, column=2, padx=5, pady=5, sticky="ew") - - # 其余配置项保持不变... - # API Key, Base URL等配置项的创建代码... - def build_embeddings_config_tab(self): def on_embedding_interface_changed(new_value): self.embedding_interface_format_var.set(new_value) @@ -665,12 +514,7 @@ def build_embeddings_config_tab(self): test_btn.grid(row=5, column=0, columnspan=2, padx=5, pady=5, sticky="ew") def build_config_choose_tab(self): - # def on_core_seed_llm_changed(new_value): - # self.core_seed_llm_var.set(new_value) - # config_data = load_config(self.config_file) - # if config_data: - # config_data["core_seed_llm"] = new_value - # save_config(config_data, self.config_file) + self.config_choose.grid_rowconfigure(0, weight=0) self.config_choose.grid_columnconfigure(0, weight=0) @@ -696,62 +540,10 @@ def build_config_choose_tab(self): consistency_review_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.consistency_review_llm_var, font=("Microsoft YaHei", 12)) consistency_review_dropdown.grid(row=4, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成核心种子所用大模型", tooltip_key="core_seed_llm_config", row=0, column=0, font=("Microsoft YaHei", 12)) - - # core_seed_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.core_seed_llm_var, font=("Microsoft YaHei", 12), command=on_core_seed_llm_changed) - # core_seed_dropdown.grid(row=0, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成角色动力学所用大模型", tooltip_key="role_dynamics_llm_config", row=1, column=0, font=("Microsoft YaHei", 12)) - # role_dynamics_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.role_dynamics_llm_var, font=("Microsoft YaHei", 12)) - # role_dynamics_dropdown.grid(row=1, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成世界观设定所用大模型", tooltip_key="world_building_llm_config", row=2, column=0, font=("Microsoft YaHei", 12)) - # world_building_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.world_building_llm_var, font=("Microsoft YaHei", 12)) - # world_building_dropdown.grid(row=2, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成三幕式情节所用大模型", tooltip_key="three_scene_llm_config", row=3, column=0, font=("Microsoft YaHei", 12)) - # three_scene_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.three_scene_llm_var, font=("Microsoft YaHei", 12)) - # three_scene_dropdown.grid(row=3, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成章节目录所用大模型", tooltip_key="chapter_outline_llm_config", row=4, column=0, font=("Microsoft YaHei", 12)) - # chapter_outline_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.chapter_outline_llm_var, font=("Microsoft YaHei", 12)) - # chapter_outline_dropdown.grid(row=4, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成前文摘要所用大模型", tooltip_key="summary_llm_config", row=5, column=0, font=("Microsoft YaHei", 12)) - # summary_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.summary_llm_var, font=("Microsoft YaHei", 12)) - # summary_dropdown.grid(row=5, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成角色状态所用大模型", tooltip_key="character_state_llm_config", row=6, column=0, font=("Microsoft YaHei", 12)) - # character_state_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.character_state_llm_var, font=("Microsoft YaHei", 12)) - # character_state_dropdown.grid(row=6, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成章节内容所用大模型", tooltip_key="chapter_content_llm_config", row=7, column=0, font=("Microsoft YaHei", 12)) - # chapter_content_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.chapter_content_llm_var, font=("Microsoft YaHei", 12)) - # chapter_content_dropdown.grid(row=7, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="生成提示草稿所用大模型", tooltip_key="prompt_draft_llm_config", row=8, column=0, font=("Microsoft YaHei", 12)) - # prompt_draft_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.prompt_draft_llm_var, font=("Microsoft YaHei", 12)) - # prompt_draft_dropdown.grid(row=8, column=1, padx=5, pady=5, sticky="nsew") - - # create_label_with_help(self, parent=self.config_choose, label_text="分析角色信息所用大模型", tooltip_key="analyze_character_llm_config", row=9, column=0, font=("Microsoft YaHei", 12)) - # analyze_character_dropdown = ctk.CTkOptionMenu(self.config_choose, values=config_choose_options, variable=self.analyze_character_llm_var, font=("Microsoft YaHei", 12)) - # analyze_character_dropdown.grid(row=9, column=1, padx=5, pady=5, sticky="nsew") - def save_config_choose(): config_data = load_config(self.config_file)["choose_configs"] if not config_data: config_data = {} - # config_data["core_seed_llm"] = self.core_seed_llm_var.get() - # config_data["role_dynamics_llm"] = self.role_dynamics_llm_var.get() - # config_data["world_building_llm"] = self.world_building_llm_var.get() - # config_data["three_scene_llm"] = self.three_scene_llm_var.get() - # config_data["chapter_outline_llm"] = self.chapter_outline_llm_var.get() - # config_data["summary_llm"] = self.summary_llm_var.get() - # config_data["character_state_llm"] = self.character_state_llm_var.get() - # config_data["chapter_content_llm"] = self.chapter_content_llm_var.get() - # config_data["prompt_draft_llm"] = self.prompt_draft_llm_var.get() - # config_data["analyze_character_llm"] = self.analyze_character_llm_var.get() config_data["architecture_llm"] = self.architecture_llm_var.get() config_data["chapter_outline_llm"] = self.chapter_outline_llm_var.get() config_data["prompt_draft_llm"] = self.prompt_draft_llm_var.get() diff --git a/ui/generation_handlers.py b/ui/generation_handlers.py index bc79e17..c43fdce 100644 --- a/ui/generation_handlers.py +++ b/ui/generation_handlers.py @@ -32,13 +32,7 @@ def generate_novel_architecture_ui(self): self.disable_button_safe(self.btn_generate_architecture) try: - # interface_format = self.interface_format_var.get().strip() - # api_key = self.api_key_var.get().strip() - # base_url = self.base_url_var.get().strip() - # model_name = self.model_name_var.get().strip() - # temperature = self.temperature_var.get() - # max_tokens = self.max_tokens_var.get() - # timeout_val = self.safe_get_int(self.timeout_var, 600) + interface_format = self.loaded_config["llm_configs"][self.architecture_llm_var.get()]["interface_format"] api_key = self.loaded_config["llm_configs"][self.architecture_llm_var.get()]["api_key"] @@ -92,14 +86,8 @@ def generate_chapter_blueprint_ui(self): return self.disable_button_safe(self.btn_generate_directory) try: - # interface_format = self.interface_format_var.get().strip() - # api_key = self.api_key_var.get().strip() - # base_url = self.base_url_var.get().strip() - # model_name = self.model_name_var.get().strip() + number_of_chapters = self.safe_get_int(self.num_chapters_var, 10) - # temperature = self.temperature_var.get() - # max_tokens = self.max_tokens_var.get() - # timeout_val = self.safe_get_int(self.timeout_var, 600) interface_format = self.loaded_config["llm_configs"][self.chapter_outline_llm_var.get()]["interface_format"] api_key = self.loaded_config["llm_configs"][self.chapter_outline_llm_var.get()]["api_key"] @@ -141,13 +129,6 @@ def generate_chapter_draft_ui(self): def task(): self.disable_button_safe(self.btn_generate_chapter) try: - # interface_format = self.interface_format_var.get().strip() - # api_key = self.api_key_var.get().strip() - # base_url = self.base_url_var.get().strip() - # model_name = self.model_name_var.get().strip() - # temperature = self.temperature_var.get() - # max_tokens = self.max_tokens_var.get() - # timeout_val = self.safe_get_int(self.timeout_var, 600) interface_format = self.loaded_config["llm_configs"][self.prompt_draft_llm_var.get()]["interface_format"] api_key = self.loaded_config["llm_configs"][self.prompt_draft_llm_var.get()]["api_key"] @@ -341,13 +322,6 @@ def finalize_chapter_ui(self): self.disable_button_safe(self.btn_finalize_chapter) try: - # interface_format = self.interface_format_var.get().strip() - # api_key = self.api_key_var.get().strip() - # base_url = self.base_url_var.get().strip() - # model_name = self.model_name_var.get().strip() - # temperature = self.temperature_var.get() - # max_tokens = self.max_tokens_var.get() - # timeout_val = self.safe_get_int(self.timeout_var, 600) interface_format = self.loaded_config["llm_configs"][self.final_chapter_llm_var.get()]["interface_format"] api_key = self.loaded_config["llm_configs"][self.final_chapter_llm_var.get()]["api_key"] @@ -430,14 +404,6 @@ def do_consistency_check(self): def task(): self.disable_button_safe(self.btn_check_consistency) try: - # api_key = self.api_key_var.get().strip() - # base_url = self.base_url_var.get().strip() - # model_name = self.model_name_var.get().strip() - # temperature = self.temperature_var.get() - # interface_format = self.interface_format_var.get() - # max_tokens = self.max_tokens_var.get() - # timeout = self.timeout_var.get() - interface_format = self.loaded_config["llm_configs"][self.consistency_review_llm_var.get()]["interface_format"] api_key = self.loaded_config["llm_configs"][self.consistency_review_llm_var.get()]["api_key"] base_url = self.loaded_config["llm_configs"][self.consistency_review_llm_var.get()]["base_url"] diff --git a/ui/main_window.py b/ui/main_window.py index 84f0b43..11cdf88 100644 --- a/ui/main_window.py +++ b/ui/main_window.py @@ -107,17 +107,6 @@ class NovelGeneratorGUI: # -- 生成配置相关 -- - # self.core_seed_llm_var = ctk.StringVar(value=choose_configs.get("core_seed_llm", "DeepSeek")) - # self.role_dynamics_llm_var = ctk.StringVar(value=choose_configs.get("role_dynamics_llm", "DeepSeek")) - # self.world_building_llm_var = ctk.StringVar(value=choose_configs.get("world_building_llm", "DeepSeek")) - # self.three_scene_llm_var = ctk.StringVar(value=choose_configs.get("three_scene_llm", "DeepSeek")) - # self.chapter_outline_llm_var = ctk.StringVar(value=choose_configs.get("chapter_outline_llm", "DeepSeek")) - # self.summary_llm_var = ctk.StringVar(value=choose_configs.get("summary_llm", "DeepSeek")) - # self.character_state_llm_var = ctk.StringVar(value=choose_configs.get("character_state_llm", "DeepSeek")) - # self.chapter_content_llm_var = ctk.StringVar(value=choose_configs.get("chapter_content_llm", "DeepSeek")) - # self.prompt_draft_llm_var = ctk.StringVar(value=choose_configs.get("prompt_draft_llm", "DeepSeek")) - # self.analyze_character_llm_var = ctk.StringVar(value=choose_configs.get("analyze_character_llm", "DeepSeek")) - self.architecture_llm_var = ctk.StringVar(value=choose_configs.get("architecture_llm", "DeepSeek")) self.chapter_outline_llm_var = ctk.StringVar(value=choose_configs.get("chapter_outline_llm", "DeepSeek")) self.final_chapter_llm_var = ctk.StringVar(value=choose_configs.get("final_chapter_llm", "DeepSeek"))