Spaces:
Sleeping
Sleeping
Tuchuanhuhuhu
commited on
Commit
•
f4b17c4
1
Parent(s):
2572cda
bugfix: 第一次启动时报错
Browse files- ChuanhuChatbot.py +1 -1
- modules/models/base_model.py +9 -5
- modules/utils.py +14 -11
ChuanhuChatbot.py
CHANGED
@@ -76,7 +76,7 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
|
|
76 |
historySelectList = gr.Radio(
|
77 |
label=i18n("从列表中加载对话"),
|
78 |
choices=get_history_names(),
|
79 |
-
value=
|
80 |
# multiselect=False,
|
81 |
container=False,
|
82 |
elem_id="history-select-dropdown"
|
|
|
76 |
historySelectList = gr.Radio(
|
77 |
label=i18n("从列表中加载对话"),
|
78 |
choices=get_history_names(),
|
79 |
+
value=get_first_history_name(),
|
80 |
# multiselect=False,
|
81 |
container=False,
|
82 |
elem_id="history-select-dropdown"
|
modules/models/base_model.py
CHANGED
@@ -208,7 +208,7 @@ class BaseLLMModel:
|
|
208 |
self.api_key = None
|
209 |
self.need_api_key = False
|
210 |
self.single_turn = False
|
211 |
-
self.history_file_path =
|
212 |
|
213 |
self.temperature = temperature
|
214 |
self.top_p = top_p
|
@@ -625,8 +625,7 @@ class BaseLLMModel:
|
|
625 |
self.history = []
|
626 |
self.all_token_counts = []
|
627 |
self.interrupted = False
|
628 |
-
self.history_file_path = new_auto_history_filename(
|
629 |
-
os.path.join(HISTORY_DIR, self.user_identifier))
|
630 |
history_name = self.history_file_path[:-5]
|
631 |
choices = [history_name] + get_history_names(self.user_identifier)
|
632 |
return [], self.token_message([0]), gr.Radio.update(choices=choices, value=history_name)
|
@@ -671,7 +670,7 @@ class BaseLLMModel:
|
|
671 |
self.history_file_path = filename
|
672 |
save_file(filename, self.system_prompt, self.history, chatbot, user_name)
|
673 |
return init_history_list(user_name)
|
674 |
-
|
675 |
def auto_name_chat_history(self, user_question, chatbot, user_name):
|
676 |
if chatbot == []:
|
677 |
filename = user_question[:12] + ".json"
|
@@ -753,7 +752,12 @@ class BaseLLMModel:
|
|
753 |
return i18n("对话历史")+filename+i18n("已经被删除啦"), get_history_list(user_name), []
|
754 |
|
755 |
def auto_load(self):
|
756 |
-
|
|
|
|
|
|
|
|
|
|
|
757 |
filename, system_prompt, chatbot = self.load_chat_history()
|
758 |
filename = filename[:-5]
|
759 |
return filename, system_prompt, chatbot
|
|
|
208 |
self.api_key = None
|
209 |
self.need_api_key = False
|
210 |
self.single_turn = False
|
211 |
+
self.history_file_path = get_first_history_name(user)
|
212 |
|
213 |
self.temperature = temperature
|
214 |
self.top_p = top_p
|
|
|
625 |
self.history = []
|
626 |
self.all_token_counts = []
|
627 |
self.interrupted = False
|
628 |
+
self.history_file_path = new_auto_history_filename(self.user_identifier)
|
|
|
629 |
history_name = self.history_file_path[:-5]
|
630 |
choices = [history_name] + get_history_names(self.user_identifier)
|
631 |
return [], self.token_message([0]), gr.Radio.update(choices=choices, value=history_name)
|
|
|
670 |
self.history_file_path = filename
|
671 |
save_file(filename, self.system_prompt, self.history, chatbot, user_name)
|
672 |
return init_history_list(user_name)
|
673 |
+
|
674 |
def auto_name_chat_history(self, user_question, chatbot, user_name):
|
675 |
if chatbot == []:
|
676 |
filename = user_question[:12] + ".json"
|
|
|
752 |
return i18n("对话历史")+filename+i18n("已经被删除啦"), get_history_list(user_name), []
|
753 |
|
754 |
def auto_load(self):
|
755 |
+
filepath = get_history_filepath(self.user_identifier)
|
756 |
+
if not filepath:
|
757 |
+
self.history_file_path = new_auto_history_filename(
|
758 |
+
self.user_identifier)
|
759 |
+
else:
|
760 |
+
self.history_file_path = filepath
|
761 |
filename, system_prompt, chatbot = self.load_chat_history()
|
762 |
filename = filename[:-5]
|
763 |
return filename, system_prompt, chatbot
|
modules/utils.py
CHANGED
@@ -339,6 +339,8 @@ def save_file(filename, system, history, chatbot, user_name):
|
|
339 |
filename = filename[:-3]
|
340 |
if not filename.endswith(".json") and not filename.endswith(".md"):
|
341 |
filename += ".json"
|
|
|
|
|
342 |
|
343 |
json_s = {"system": system, "history": history, "chatbot": chatbot}
|
344 |
if "/" in filename or "\\" in filename:
|
@@ -367,11 +369,8 @@ def sorted_by_last_modified_time(list, dir):
|
|
367 |
def get_file_names_by_type(dir, filetypes=[".json"]):
|
368 |
logging.debug(f"获取文件名列表,目录为{dir},文件类型为{filetypes}")
|
369 |
files = []
|
370 |
-
|
371 |
-
for
|
372 |
-
files += [f for f in os.listdir(dir) if f.endswith(type)]
|
373 |
-
except FileNotFoundError:
|
374 |
-
files = [""]
|
375 |
logging.debug(f"files are:{files}")
|
376 |
return files
|
377 |
|
@@ -397,12 +396,16 @@ def get_file_names_by_last_modified_time(dir, filetypes=[".json"]):
|
|
397 |
def get_history_names(user_name=""):
|
398 |
logging.debug(f"从用户 {user_name} 中获取历史记录文件名列表")
|
399 |
if user_name == "" and hide_history_when_not_logged_in:
|
400 |
-
return [
|
401 |
else:
|
402 |
history_files = get_file_names_by_last_modified_time(os.path.join(HISTORY_DIR, user_name))
|
403 |
history_files = [f[:f.rfind(".")] for f in history_files]
|
404 |
return history_files
|
405 |
|
|
|
|
|
|
|
|
|
406 |
def get_history_list(user_name=""):
|
407 |
history_names = get_history_names(user_name)
|
408 |
return gr.Radio.update(choices=history_names)
|
@@ -657,10 +660,10 @@ def toggle_like_btn_visibility(selected_model_name):
|
|
657 |
else:
|
658 |
return gr.update(visible=False)
|
659 |
|
660 |
-
def new_auto_history_filename(
|
661 |
-
latest_file =
|
662 |
if latest_file:
|
663 |
-
with open(os.path.join(
|
664 |
if len(f.read()) == 0:
|
665 |
return latest_file
|
666 |
now = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
|
@@ -669,9 +672,9 @@ def new_auto_history_filename(dirname):
|
|
669 |
def get_history_filepath(username):
|
670 |
dirname = os.path.join(HISTORY_DIR, username)
|
671 |
os.makedirs(dirname, exist_ok=True)
|
672 |
-
latest_file =
|
673 |
if not latest_file:
|
674 |
-
latest_file = new_auto_history_filename(
|
675 |
|
676 |
latest_file = os.path.join(dirname, latest_file)
|
677 |
return latest_file
|
|
|
339 |
filename = filename[:-3]
|
340 |
if not filename.endswith(".json") and not filename.endswith(".md"):
|
341 |
filename += ".json"
|
342 |
+
if filename == ".json":
|
343 |
+
raise Exception("文件名不能为空")
|
344 |
|
345 |
json_s = {"system": system, "history": history, "chatbot": chatbot}
|
346 |
if "/" in filename or "\\" in filename:
|
|
|
369 |
def get_file_names_by_type(dir, filetypes=[".json"]):
|
370 |
logging.debug(f"获取文件名列表,目录为{dir},文件类型为{filetypes}")
|
371 |
files = []
|
372 |
+
for type in filetypes:
|
373 |
+
files += [f for f in os.listdir(dir) if f.endswith(type)]
|
|
|
|
|
|
|
374 |
logging.debug(f"files are:{files}")
|
375 |
return files
|
376 |
|
|
|
396 |
def get_history_names(user_name=""):
|
397 |
logging.debug(f"从用户 {user_name} 中获取历史记录文件名列表")
|
398 |
if user_name == "" and hide_history_when_not_logged_in:
|
399 |
+
return []
|
400 |
else:
|
401 |
history_files = get_file_names_by_last_modified_time(os.path.join(HISTORY_DIR, user_name))
|
402 |
history_files = [f[:f.rfind(".")] for f in history_files]
|
403 |
return history_files
|
404 |
|
405 |
+
def get_first_history_name(user_name=""):
|
406 |
+
history_names = get_history_names(user_name)
|
407 |
+
return history_names[0] if history_names else None
|
408 |
+
|
409 |
def get_history_list(user_name=""):
|
410 |
history_names = get_history_names(user_name)
|
411 |
return gr.Radio.update(choices=history_names)
|
|
|
660 |
else:
|
661 |
return gr.update(visible=False)
|
662 |
|
663 |
+
def new_auto_history_filename(username):
|
664 |
+
latest_file = get_first_history_name(username)
|
665 |
if latest_file:
|
666 |
+
with open(os.path.join(HISTORY_DIR, username, latest_file + ".json"), 'r', encoding="utf-8") as f:
|
667 |
if len(f.read()) == 0:
|
668 |
return latest_file
|
669 |
now = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
|
|
|
672 |
def get_history_filepath(username):
|
673 |
dirname = os.path.join(HISTORY_DIR, username)
|
674 |
os.makedirs(dirname, exist_ok=True)
|
675 |
+
latest_file = get_first_history_name(username)
|
676 |
if not latest_file:
|
677 |
+
latest_file = new_auto_history_filename(username)
|
678 |
|
679 |
latest_file = os.path.join(dirname, latest_file)
|
680 |
return latest_file
|