修复embedding失误导入成llm的问题

This commit is contained in:
YILING0013
2025-02-16 23:10:32 +08:00
parent ba10e6dd66
commit f5691f268f
4 changed files with 143 additions and 26 deletions
+66 -2
View File
@@ -131,8 +131,11 @@ def generate_chapter_draft_ui(self):
embedding_model_name = self.embedding_model_name_var.get().strip()
embedding_k = self.safe_get_int(self.embedding_retrieval_k_var, 4)
self.safe_log(f"开始生成第{chap_num}章草稿...")
draft_text = generate_chapter_draft(
self.safe_log(f"生成第{chap_num}章草稿:准备生成请求提示词...")
# 调用新添加的 build_chapter_prompt 函数构造初始提示词
from novel_generator.chapter import build_chapter_prompt
prompt_text = build_chapter_prompt(
api_key=api_key,
base_url=base_url,
model_name=model_name,
@@ -154,6 +157,67 @@ def generate_chapter_draft_ui(self):
max_tokens=max_tokens,
timeout=timeout_val
)
# 弹出可编辑提示词对话框,等待用户确认或取消
result = {"prompt": None}
event = threading.Event()
def create_dialog():
dialog = ctk.CTkToplevel(self.master)
dialog.title("当前章节请求提示词(可编辑)")
dialog.geometry("600x400")
text_box = ctk.CTkTextbox(dialog, wrap="word", font=("Microsoft YaHei", 12))
text_box.pack(fill="both", expand=True, padx=10, pady=10)
text_box.insert("0.0", prompt_text)
button_frame = ctk.CTkFrame(dialog)
button_frame.pack(pady=10)
def on_confirm():
result["prompt"] = text_box.get("1.0", "end").strip()
dialog.destroy()
event.set()
def on_cancel():
result["prompt"] = None
dialog.destroy()
event.set()
btn_confirm = ctk.CTkButton(button_frame, text="确认使用", font=("Microsoft YaHei", 12), command=on_confirm)
btn_confirm.pack(side="left", padx=10)
btn_cancel = ctk.CTkButton(button_frame, text="取消请求", font=("Microsoft YaHei", 12), command=on_cancel)
btn_cancel.pack(side="left", padx=10)
# 若用户直接关闭弹窗,则调用 on_cancel 处理
dialog.protocol("WM_DELETE_WINDOW", on_cancel)
dialog.grab_set()
self.master.after(0, create_dialog)
event.wait() # 等待用户操作完成
edited_prompt = result["prompt"]
if edited_prompt is None:
self.safe_log("❌ 用户取消了草稿生成请求。")
return
self.safe_log("开始生成章节草稿...")
from novel_generator.chapter import generate_chapter_draft
draft_text = generate_chapter_draft(
api_key=api_key,
base_url=base_url,
model_name=model_name,
filepath=filepath,
novel_number=chap_num,
word_number=word_number,
temperature=temperature,
user_guidance=user_guidance,
characters_involved=char_inv,
key_items=key_items,
scene_location=scene_loc,
time_constraint=time_constr,
embedding_api_key=embedding_api_key,
embedding_url=embedding_url,
embedding_interface_format=embedding_interface_format,
embedding_model_name=embedding_model_name,
embedding_retrieval_k=embedding_k,
interface_format=interface_format,
max_tokens=max_tokens,
timeout=timeout_val,
custom_prompt_text=edited_prompt # 使用用户编辑后的提示词
)
if draft_text:
self.safe_log(f"✅ 第{chap_num}章草稿生成完成。请在左侧查看或编辑。")
self.master.after(0, lambda: self.show_chapter_in_textbox(draft_text))