Spaces:
Sleeping
Sleeping
Tuchuanhuhuhu
commited on
Commit
·
2c7dccc
1
Parent(s):
76a432f
feat: 从配置文件加载保存的参数
Browse files- ChuanhuChatbot.py +18 -20
- modules/models/OpenAI.py +1 -0
- modules/models/base_model.py +91 -21
- modules/utils.py +1 -0
ChuanhuChatbot.py
CHANGED
|
@@ -499,14 +499,12 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
|
|
| 499 |
model_name=MODELS[DEFAULT_MODEL], access_key=my_api_key)[0]
|
| 500 |
current_model.set_user_identifier(user_name)
|
| 501 |
if not hide_history_when_not_logged_in or user_name:
|
| 502 |
-
|
| 503 |
else:
|
| 504 |
-
|
| 505 |
-
|
| 506 |
-
chatbot = gr.Chatbot.update(label=MODELS[DEFAULT_MODEL])
|
| 507 |
-
return user_info, user_name, current_model, toggle_like_btn_visibility(DEFAULT_MODEL), filename, system_prompt, chatbot, init_history_list(user_name)
|
| 508 |
demo.load(create_greeting, inputs=None, outputs=[
|
| 509 |
-
user_info, user_name, current_model, like_dislike_area, saveFileName, systemPromptTxt, chatbot, historySelectList], api_name="load")
|
| 510 |
chatgpt_predict_args = dict(
|
| 511 |
fn=predict,
|
| 512 |
inputs=[
|
|
@@ -550,7 +548,7 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
|
|
| 550 |
load_history_from_file_args = dict(
|
| 551 |
fn=load_chat_history,
|
| 552 |
inputs=[current_model, historySelectList],
|
| 553 |
-
outputs=[saveFileName, systemPromptTxt, chatbot]
|
| 554 |
)
|
| 555 |
|
| 556 |
refresh_history_args = dict(
|
|
@@ -587,7 +585,7 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
|
|
| 587 |
emptyBtn.click(
|
| 588 |
reset,
|
| 589 |
inputs=[current_model, retain_system_prompt_checkbox],
|
| 590 |
-
outputs=[chatbot, status_display, historySelectList, systemPromptTxt],
|
| 591 |
show_progress=True,
|
| 592 |
_js='(a,b)=>{return clearChatbot(a,b);}',
|
| 593 |
)
|
|
@@ -693,7 +691,7 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
|
|
| 693 |
)
|
| 694 |
historySelectList.input(**load_history_from_file_args)
|
| 695 |
uploadFileBtn.upload(upload_chat_history, [current_model, uploadFileBtn], [
|
| 696 |
-
saveFileName, systemPromptTxt, chatbot]).then(**refresh_history_args)
|
| 697 |
historyDownloadBtn.click(None, [
|
| 698 |
user_name, historySelectList], None, _js='(a,b)=>{return downloadHistory(a,b,".json");}')
|
| 699 |
historyMarkdownDownloadBtn.click(None, [
|
|
@@ -725,24 +723,24 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
|
|
| 725 |
cancel_all_jobs, [], [openai_train_status], show_progress=True)
|
| 726 |
|
| 727 |
# Advanced
|
| 728 |
-
max_context_length_slider.
|
| 729 |
set_token_upper_limit, [current_model, max_context_length_slider], None)
|
| 730 |
-
temperature_slider.
|
| 731 |
set_temperature, [current_model, temperature_slider], None)
|
| 732 |
-
top_p_slider.
|
| 733 |
-
n_choices_slider.
|
| 734 |
set_n_choices, [current_model, n_choices_slider], None)
|
| 735 |
-
stop_sequence_txt.
|
| 736 |
set_stop_sequence, [current_model, stop_sequence_txt], None)
|
| 737 |
-
max_generation_slider.
|
| 738 |
set_max_tokens, [current_model, max_generation_slider], None)
|
| 739 |
-
presence_penalty_slider.
|
| 740 |
set_presence_penalty, [current_model, presence_penalty_slider], None)
|
| 741 |
-
frequency_penalty_slider.
|
| 742 |
set_frequency_penalty, [current_model, frequency_penalty_slider], None)
|
| 743 |
-
logit_bias_txt.
|
| 744 |
set_logit_bias, [current_model, logit_bias_txt], None)
|
| 745 |
-
user_identifier_txt.
|
| 746 |
current_model, user_identifier_txt], None)
|
| 747 |
|
| 748 |
default_btn.click(
|
|
@@ -784,7 +782,7 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
|
|
| 784 |
historySelectBtn.click( # This is an experimental feature... Not actually used.
|
| 785 |
fn=load_chat_history,
|
| 786 |
inputs=[current_model, historySelectList],
|
| 787 |
-
outputs=[saveFileName, systemPromptTxt, chatbot],
|
| 788 |
_js='(a,b)=>{return bgSelectHistory(a,b);}'
|
| 789 |
)
|
| 790 |
|
|
|
|
| 499 |
model_name=MODELS[DEFAULT_MODEL], access_key=my_api_key)[0]
|
| 500 |
current_model.set_user_identifier(user_name)
|
| 501 |
if not hide_history_when_not_logged_in or user_name:
|
| 502 |
+
loaded_stuff = current_model.auto_load()
|
| 503 |
else:
|
| 504 |
+
loaded_stuff = [gr.update(), gr.update(), gr.Chatbot.update(label=MODELS[DEFAULT_MODEL]), current_model.single_turn, current_model.temperature, current_model.top_p, current_model.n_choices, current_model.stop_sequence, current_model.token_upper_limit, current_model.max_generation_token, current_model.presence_penalty, current_model.frequency_penalty, current_model.logit_bias, current_model.user_identifier]
|
| 505 |
+
return user_info, user_name, current_model, toggle_like_btn_visibility(DEFAULT_MODEL), *loaded_stuff, init_history_list(user_name)
|
|
|
|
|
|
|
| 506 |
demo.load(create_greeting, inputs=None, outputs=[
|
| 507 |
+
user_info, user_name, current_model, like_dislike_area, saveFileName, systemPromptTxt, chatbot, single_turn_checkbox, temperature_slider, top_p_slider, n_choices_slider, stop_sequence_txt, max_context_length_slider, max_generation_slider, presence_penalty_slider, frequency_penalty_slider, logit_bias_txt, user_identifier_txt, historySelectList], api_name="load")
|
| 508 |
chatgpt_predict_args = dict(
|
| 509 |
fn=predict,
|
| 510 |
inputs=[
|
|
|
|
| 548 |
load_history_from_file_args = dict(
|
| 549 |
fn=load_chat_history,
|
| 550 |
inputs=[current_model, historySelectList],
|
| 551 |
+
outputs=[saveFileName, systemPromptTxt, chatbot, single_turn_checkbox, temperature_slider, top_p_slider, n_choices_slider, stop_sequence_txt, max_context_length_slider, max_generation_slider, presence_penalty_slider, frequency_penalty_slider, logit_bias_txt, user_identifier_txt],
|
| 552 |
)
|
| 553 |
|
| 554 |
refresh_history_args = dict(
|
|
|
|
| 585 |
emptyBtn.click(
|
| 586 |
reset,
|
| 587 |
inputs=[current_model, retain_system_prompt_checkbox],
|
| 588 |
+
outputs=[chatbot, status_display, historySelectList, systemPromptTxt, single_turn_checkbox, temperature_slider, top_p_slider, n_choices_slider, stop_sequence_txt, max_context_length_slider, max_generation_slider, presence_penalty_slider, frequency_penalty_slider, logit_bias_txt, user_identifier_txt],
|
| 589 |
show_progress=True,
|
| 590 |
_js='(a,b)=>{return clearChatbot(a,b);}',
|
| 591 |
)
|
|
|
|
| 691 |
)
|
| 692 |
historySelectList.input(**load_history_from_file_args)
|
| 693 |
uploadFileBtn.upload(upload_chat_history, [current_model, uploadFileBtn], [
|
| 694 |
+
saveFileName, systemPromptTxt, chatbot, single_turn_checkbox, temperature_slider, top_p_slider, n_choices_slider, stop_sequence_txt, max_context_length_slider, max_generation_slider, presence_penalty_slider, frequency_penalty_slider, logit_bias_txt, user_identifier_txt]).then(**refresh_history_args)
|
| 695 |
historyDownloadBtn.click(None, [
|
| 696 |
user_name, historySelectList], None, _js='(a,b)=>{return downloadHistory(a,b,".json");}')
|
| 697 |
historyMarkdownDownloadBtn.click(None, [
|
|
|
|
| 723 |
cancel_all_jobs, [], [openai_train_status], show_progress=True)
|
| 724 |
|
| 725 |
# Advanced
|
| 726 |
+
max_context_length_slider.input(
|
| 727 |
set_token_upper_limit, [current_model, max_context_length_slider], None)
|
| 728 |
+
temperature_slider.input(
|
| 729 |
set_temperature, [current_model, temperature_slider], None)
|
| 730 |
+
top_p_slider.input(set_top_p, [current_model, top_p_slider], None)
|
| 731 |
+
n_choices_slider.input(
|
| 732 |
set_n_choices, [current_model, n_choices_slider], None)
|
| 733 |
+
stop_sequence_txt.input(
|
| 734 |
set_stop_sequence, [current_model, stop_sequence_txt], None)
|
| 735 |
+
max_generation_slider.input(
|
| 736 |
set_max_tokens, [current_model, max_generation_slider], None)
|
| 737 |
+
presence_penalty_slider.input(
|
| 738 |
set_presence_penalty, [current_model, presence_penalty_slider], None)
|
| 739 |
+
frequency_penalty_slider.input(
|
| 740 |
set_frequency_penalty, [current_model, frequency_penalty_slider], None)
|
| 741 |
+
logit_bias_txt.input(
|
| 742 |
set_logit_bias, [current_model, logit_bias_txt], None)
|
| 743 |
+
user_identifier_txt.input(set_user_identifier, [
|
| 744 |
current_model, user_identifier_txt], None)
|
| 745 |
|
| 746 |
default_btn.click(
|
|
|
|
| 782 |
historySelectBtn.click( # This is an experimental feature... Not actually used.
|
| 783 |
fn=load_chat_history,
|
| 784 |
inputs=[current_model, historySelectList],
|
| 785 |
+
outputs=[saveFileName, systemPromptTxt, chatbot, single_turn_checkbox, temperature_slider, top_p_slider, n_choices_slider, stop_sequence_txt, max_context_length_slider, max_generation_slider, presence_penalty_slider, frequency_penalty_slider, logit_bias_txt, user_identifier_txt],
|
| 786 |
_js='(a,b)=>{return bgSelectHistory(a,b);}'
|
| 787 |
)
|
| 788 |
|
modules/models/OpenAI.py
CHANGED
|
@@ -32,6 +32,7 @@ class OpenAIClient(BaseLLMModel):
|
|
| 32 |
system_prompt=system_prompt,
|
| 33 |
user=user_name
|
| 34 |
)
|
|
|
|
| 35 |
self.api_key = api_key
|
| 36 |
self.need_api_key = True
|
| 37 |
self._refresh_header()
|
|
|
|
| 32 |
system_prompt=system_prompt,
|
| 33 |
user=user_name
|
| 34 |
)
|
| 35 |
+
logging.info(f"TEMPERATURE: {self.temperature}")
|
| 36 |
self.api_key = api_key
|
| 37 |
self.need_api_key = True
|
| 38 |
self._refresh_header()
|
modules/models/base_model.py
CHANGED
|
@@ -214,6 +214,7 @@ class BaseLLMModel:
|
|
| 214 |
frequency_penalty=0,
|
| 215 |
logit_bias=None,
|
| 216 |
user="",
|
|
|
|
| 217 |
) -> None:
|
| 218 |
self.history = []
|
| 219 |
self.all_token_counts = []
|
|
@@ -230,10 +231,21 @@ class BaseLLMModel:
|
|
| 230 |
self.system_prompt = system_prompt
|
| 231 |
self.api_key = None
|
| 232 |
self.need_api_key = False
|
| 233 |
-
self.single_turn = False
|
| 234 |
self.history_file_path = get_first_history_name(user)
|
| 235 |
self.user_name = user
|
| 236 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
self.temperature = temperature
|
| 238 |
self.top_p = top_p
|
| 239 |
self.n_choices = n_choices
|
|
@@ -251,7 +263,9 @@ class BaseLLMModel:
|
|
| 251 |
Conversations are stored in self.history, with the most recent question in OpenAI format.
|
| 252 |
Should return a generator that yields the next word (str) in the answer.
|
| 253 |
"""
|
| 254 |
-
logging.warning(
|
|
|
|
|
|
|
| 255 |
response, _ = self.get_answer_at_once()
|
| 256 |
yield response
|
| 257 |
|
|
@@ -749,11 +763,34 @@ class BaseLLMModel:
|
|
| 749 |
history_name = self.history_file_path[:-5]
|
| 750 |
choices = [history_name] + get_history_names(self.user_name)
|
| 751 |
system_prompt = self.system_prompt if remain_system_prompt else ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 752 |
return (
|
| 753 |
[],
|
| 754 |
self.token_message([0]),
|
| 755 |
gr.Radio.update(choices=choices, value=history_name),
|
| 756 |
system_prompt,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 757 |
)
|
| 758 |
|
| 759 |
def delete_first_conversation(self):
|
|
@@ -877,30 +914,67 @@ class BaseLLMModel:
|
|
| 877 |
pass
|
| 878 |
if len(saved_json["chatbot"]) < len(saved_json["history"]) // 2:
|
| 879 |
logging.info("Trimming corrupted history...")
|
| 880 |
-
saved_json["history"] = saved_json["history"][
|
|
|
|
|
|
|
| 881 |
logging.info(f"Trimmed history: {saved_json['history']}")
|
| 882 |
logging.debug(f"{self.user_name} 加载对话历史完毕")
|
| 883 |
self.history = saved_json["history"]
|
| 884 |
-
self.single_turn = saved_json.get("single_turn",
|
| 885 |
-
self.temperature = saved_json.get("temperature",
|
| 886 |
-
self.top_p = saved_json.get("top_p",
|
| 887 |
-
self.n_choices = saved_json.get("n_choices",
|
| 888 |
-
self.stop_sequence = saved_json.get("stop_sequence",
|
| 889 |
-
self.
|
| 890 |
-
|
| 891 |
-
|
| 892 |
-
self.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 893 |
self.user_identifier = saved_json.get("user_identifier", self.user_name)
|
| 894 |
-
self.metadata = saved_json.get("metadata",
|
| 895 |
return (
|
| 896 |
-
os.path.basename(self.history_file_path),
|
| 897 |
saved_json["system"],
|
| 898 |
saved_json["chatbot"],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 899 |
)
|
| 900 |
except:
|
| 901 |
# 没有对话历史或者对话历史解析失败
|
| 902 |
logging.info(f"没有找到对话历史记录 {self.history_file_path}")
|
| 903 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 904 |
|
| 905 |
def delete_chat_history(self, filename):
|
| 906 |
if filename == "CANCELED":
|
|
@@ -910,9 +984,7 @@ class BaseLLMModel:
|
|
| 910 |
if not filename.endswith(".json"):
|
| 911 |
filename += ".json"
|
| 912 |
if filename == os.path.basename(filename):
|
| 913 |
-
history_file_path = os.path.join(
|
| 914 |
-
HISTORY_DIR, self.user_name, filename
|
| 915 |
-
)
|
| 916 |
else:
|
| 917 |
history_file_path = filename
|
| 918 |
md_history_file_path = history_file_path[:-5] + ".md"
|
|
@@ -934,9 +1006,7 @@ class BaseLLMModel:
|
|
| 934 |
self.history_file_path = new_auto_history_filename(self.user_name)
|
| 935 |
else:
|
| 936 |
self.history_file_path = filepath
|
| 937 |
-
|
| 938 |
-
filename = filename[:-5]
|
| 939 |
-
return filename, system_prompt, chatbot
|
| 940 |
|
| 941 |
def like(self):
|
| 942 |
"""like the last response, implement if needed"""
|
|
|
|
| 214 |
frequency_penalty=0,
|
| 215 |
logit_bias=None,
|
| 216 |
user="",
|
| 217 |
+
single_turn=False,
|
| 218 |
) -> None:
|
| 219 |
self.history = []
|
| 220 |
self.all_token_counts = []
|
|
|
|
| 231 |
self.system_prompt = system_prompt
|
| 232 |
self.api_key = None
|
| 233 |
self.need_api_key = False
|
|
|
|
| 234 |
self.history_file_path = get_first_history_name(user)
|
| 235 |
self.user_name = user
|
| 236 |
|
| 237 |
+
self.default_single_turn = single_turn
|
| 238 |
+
self.default_temperature = temperature
|
| 239 |
+
self.default_top_p = top_p
|
| 240 |
+
self.default_n_choices = n_choices
|
| 241 |
+
self.default_stop_sequence = stop
|
| 242 |
+
self.default_max_generation_token = max_generation_token
|
| 243 |
+
self.default_presence_penalty = presence_penalty
|
| 244 |
+
self.default_frequency_penalty = frequency_penalty
|
| 245 |
+
self.default_logit_bias = logit_bias
|
| 246 |
+
self.default_user_identifier = user
|
| 247 |
+
|
| 248 |
+
self.single_turn = single_turn
|
| 249 |
self.temperature = temperature
|
| 250 |
self.top_p = top_p
|
| 251 |
self.n_choices = n_choices
|
|
|
|
| 263 |
Conversations are stored in self.history, with the most recent question in OpenAI format.
|
| 264 |
Should return a generator that yields the next word (str) in the answer.
|
| 265 |
"""
|
| 266 |
+
logging.warning(
|
| 267 |
+
"Stream prediction is not implemented. Using at once prediction instead."
|
| 268 |
+
)
|
| 269 |
response, _ = self.get_answer_at_once()
|
| 270 |
yield response
|
| 271 |
|
|
|
|
| 763 |
history_name = self.history_file_path[:-5]
|
| 764 |
choices = [history_name] + get_history_names(self.user_name)
|
| 765 |
system_prompt = self.system_prompt if remain_system_prompt else ""
|
| 766 |
+
|
| 767 |
+
self.single_turn = self.default_single_turn
|
| 768 |
+
self.temperature = self.default_temperature
|
| 769 |
+
self.top_p = self.default_top_p
|
| 770 |
+
self.n_choices = self.default_n_choices
|
| 771 |
+
self.stop_sequence = self.default_stop_sequence
|
| 772 |
+
self.max_generation_token = self.default_max_generation_token
|
| 773 |
+
self.presence_penalty = self.default_presence_penalty
|
| 774 |
+
self.frequency_penalty = self.default_frequency_penalty
|
| 775 |
+
self.logit_bias = self.default_logit_bias
|
| 776 |
+
self.user_identifier = self.default_user_identifier
|
| 777 |
+
|
| 778 |
return (
|
| 779 |
[],
|
| 780 |
self.token_message([0]),
|
| 781 |
gr.Radio.update(choices=choices, value=history_name),
|
| 782 |
system_prompt,
|
| 783 |
+
self.single_turn,
|
| 784 |
+
self.temperature,
|
| 785 |
+
self.top_p,
|
| 786 |
+
self.n_choices,
|
| 787 |
+
self.stop_sequence,
|
| 788 |
+
self.token_upper_limit,
|
| 789 |
+
self.max_generation_token,
|
| 790 |
+
self.presence_penalty,
|
| 791 |
+
self.frequency_penalty,
|
| 792 |
+
self.logit_bias,
|
| 793 |
+
self.user_identifier,
|
| 794 |
)
|
| 795 |
|
| 796 |
def delete_first_conversation(self):
|
|
|
|
| 914 |
pass
|
| 915 |
if len(saved_json["chatbot"]) < len(saved_json["history"]) // 2:
|
| 916 |
logging.info("Trimming corrupted history...")
|
| 917 |
+
saved_json["history"] = saved_json["history"][
|
| 918 |
+
-len(saved_json["chatbot"]) :
|
| 919 |
+
]
|
| 920 |
logging.info(f"Trimmed history: {saved_json['history']}")
|
| 921 |
logging.debug(f"{self.user_name} 加载对话历史完毕")
|
| 922 |
self.history = saved_json["history"]
|
| 923 |
+
self.single_turn = saved_json.get("single_turn", self.single_turn)
|
| 924 |
+
self.temperature = saved_json.get("temperature", self.temperature)
|
| 925 |
+
self.top_p = saved_json.get("top_p", self.top_p)
|
| 926 |
+
self.n_choices = saved_json.get("n_choices", self.n_choices)
|
| 927 |
+
self.stop_sequence = saved_json.get("stop_sequence", self.stop_sequence)
|
| 928 |
+
self.token_upper_limit = saved_json.get(
|
| 929 |
+
"token_upper_limit", self.token_upper_limit
|
| 930 |
+
)
|
| 931 |
+
self.max_generation_token = saved_json.get(
|
| 932 |
+
"max_generation_token", self.max_generation_token
|
| 933 |
+
)
|
| 934 |
+
self.presence_penalty = saved_json.get(
|
| 935 |
+
"presence_penalty", self.presence_penalty
|
| 936 |
+
)
|
| 937 |
+
self.frequency_penalty = saved_json.get(
|
| 938 |
+
"frequency_penalty", self.frequency_penalty
|
| 939 |
+
)
|
| 940 |
+
self.logit_bias = saved_json.get("logit_bias", self.logit_bias)
|
| 941 |
self.user_identifier = saved_json.get("user_identifier", self.user_name)
|
| 942 |
+
self.metadata = saved_json.get("metadata", self.metadata)
|
| 943 |
return (
|
| 944 |
+
os.path.basename(self.history_file_path)[:-5],
|
| 945 |
saved_json["system"],
|
| 946 |
saved_json["chatbot"],
|
| 947 |
+
self.single_turn,
|
| 948 |
+
self.temperature,
|
| 949 |
+
self.top_p,
|
| 950 |
+
self.n_choices,
|
| 951 |
+
self.stop_sequence,
|
| 952 |
+
self.token_upper_limit,
|
| 953 |
+
self.max_generation_token,
|
| 954 |
+
self.presence_penalty,
|
| 955 |
+
self.frequency_penalty,
|
| 956 |
+
self.logit_bias,
|
| 957 |
+
self.user_identifier,
|
| 958 |
)
|
| 959 |
except:
|
| 960 |
# 没有对话历史或者对话历史解析失败
|
| 961 |
logging.info(f"没有找到对话历史记录 {self.history_file_path}")
|
| 962 |
+
return (
|
| 963 |
+
os.path.basename(self.history_file_path),
|
| 964 |
+
"",
|
| 965 |
+
[],
|
| 966 |
+
self.single_turn,
|
| 967 |
+
self.temperature,
|
| 968 |
+
self.top_p,
|
| 969 |
+
self.n_choices,
|
| 970 |
+
self.stop_sequence,
|
| 971 |
+
self.token_upper_limit,
|
| 972 |
+
self.max_generation_token,
|
| 973 |
+
self.presence_penalty,
|
| 974 |
+
self.frequency_penalty,
|
| 975 |
+
self.logit_bias,
|
| 976 |
+
self.user_identifier,
|
| 977 |
+
)
|
| 978 |
|
| 979 |
def delete_chat_history(self, filename):
|
| 980 |
if filename == "CANCELED":
|
|
|
|
| 984 |
if not filename.endswith(".json"):
|
| 985 |
filename += ".json"
|
| 986 |
if filename == os.path.basename(filename):
|
| 987 |
+
history_file_path = os.path.join(HISTORY_DIR, self.user_name, filename)
|
|
|
|
|
|
|
| 988 |
else:
|
| 989 |
history_file_path = filename
|
| 990 |
md_history_file_path = history_file_path[:-5] + ".md"
|
|
|
|
| 1006 |
self.history_file_path = new_auto_history_filename(self.user_name)
|
| 1007 |
else:
|
| 1008 |
self.history_file_path = filepath
|
| 1009 |
+
return self.load_chat_history()
|
|
|
|
|
|
|
| 1010 |
|
| 1011 |
def like(self):
|
| 1012 |
"""like the last response, implement if needed"""
|
modules/utils.py
CHANGED
|
@@ -389,6 +389,7 @@ def save_file(filename, model, chatbot):
|
|
| 389 |
"top_p": model.top_p,
|
| 390 |
"n_choices": model.n_choices,
|
| 391 |
"stop_sequence": model.stop_sequence,
|
|
|
|
| 392 |
"max_generation_token": model.max_generation_token,
|
| 393 |
"presence_penalty": model.presence_penalty,
|
| 394 |
"frequency_penalty": model.frequency_penalty,
|
|
|
|
| 389 |
"top_p": model.top_p,
|
| 390 |
"n_choices": model.n_choices,
|
| 391 |
"stop_sequence": model.stop_sequence,
|
| 392 |
+
"token_upper_limit": model.token_upper_limit,
|
| 393 |
"max_generation_token": model.max_generation_token,
|
| 394 |
"presence_penalty": model.presence_penalty,
|
| 395 |
"frequency_penalty": model.frequency_penalty,
|