From 9c0779a0c7cd57eba58173d36399eda401d32268 Mon Sep 17 00:00:00 2001 From: jeffser Date: Fri, 28 Jun 2024 16:30:47 -0600 Subject: [PATCH] Chat title generation! (yes finally) --- src/window.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/window.py b/src/window.py index 0187311..734e55e 100644 --- a/src/window.py +++ b/src/window.py @@ -231,6 +231,9 @@ class AlpacaWindow(Adw.ApplicationWindow): thread = threading.Thread(target=self.run_message, args=(data['messages'], data['model'], bot_id)) thread.start() + if len(data['messages']) == 1: + generate_title_thread = threading.Thread(target=self.generate_chat_title, args=(data['messages'][0], self.chat_list_box.get_selected_row().get_child())) + generate_title_thread.start() @Gtk.Template.Callback() def manage_models_button_activate(self, button=None): @@ -457,6 +460,24 @@ class AlpacaWindow(Adw.ApplicationWindow): messages.append(new_message) return messages + def generate_chat_title(self, message, label_element): + prompt = f""" +Generate a title following these rules: + - The title should be based on the prompt at the end + - Keep it in the same language as the prompt + - The title needs to be less than 30 characters + - Use only alphanumeric characters + - Just write the title, nothing else + +```PROMPT +{message} +```""" + current_model = self.model_drop_down.get_selected_item().get_string() + current_model = current_model.replace(' (', ':')[:-1] + response = connection_handler.simple_post(f"{connection_handler.url}/api/generate", data=json.dumps({"model": current_model, "prompt": prompt, "stream": False})) + new_chat_name = json.loads(response['text'])["response"].replace('"', '').replace("'", "") + new_chat_name = self.generate_numbered_name(new_chat_name, self.chats["chats"].keys()) + self.rename_chat(label_element.get_parent().get_name(), new_chat_name, label_element) def show_message(self, msg:str, bot:bool, footer:str=None, images:list=None, files:dict=None, id:str=None): message_text = Gtk.TextView(