diff --git a/app.py b/app.py index a1fd701c..7df7ea7b 100644 --- a/app.py +++ b/app.py @@ -178,7 +178,7 @@ class Gpt4AllWebUI(GPT4AllAPI): return jsonify(self.db.export_to_json()) def export_discussion(self): - return jsonify(self.full_message) + return jsonify({"discussion_text":self.get_discussion_to()}) @stream_with_context diff --git a/pyGpt4All/api.py b/pyGpt4All/api.py index b9617ff1..a72ac0b8 100644 --- a/pyGpt4All/api.py +++ b/pyGpt4All/api.py @@ -133,7 +133,27 @@ class GPT4AllAPI(): discussion_messages += link_text + self.personality["ai_message_prefix"] return discussion_messages # Removes the last return - + + def get_discussion_to(self, message_id=-1): + messages = self.current_discussion.get_messages() + self.full_message_list = [] + for message in messages: + if message["id"]<= message_id or message_id==-1: + if message["type"]!=self.db.MSG_TYPE_CONDITIONNING: + if message["sender"]==self.personality["name"]: + self.full_message_list.append(self.personality["ai_message_prefix"]+message["content"]) + else: + self.full_message_list.append(self.personality["user_message_prefix"] + message["content"]) + + link_text = self.personality["link_text"] + + if len(self.full_message_list) > self.config["nb_messages_to_remember"]: + discussion_messages = self.personality["personality_conditionning"]+ link_text.join(self.full_message_list[-self.config["nb_messages_to_remember"]:]) + else: + discussion_messages = self.personality["personality_conditionning"]+ link_text.join(self.full_message_list) + + return discussion_messages # Removes the last return + def new_text_callback(self, text: str): print(text, end="") sys.stdout.flush() diff --git a/static/js/discussions.js b/static/js/discussions.js index a72b985a..39e278a3 100644 --- a/static/js/discussions.js +++ b/static/js/discussions.js @@ -184,11 +184,13 @@ function populate_menu(){ exportDiscussionButton.title = "Export discussion to a file"; exportDiscussionButton.addEventListener('click', () => { fetch(`/export_discussion`) - .then(response => response.text()) + .then(response => response.json()) .then(data => { + discussion_text = data["discussion_text"] + copyToClipboard(discussion_text) const filename = window.prompt('Please enter a filename:', 'discussion.txt'); if (filename !== null) { - const text = data.replace(/\n/g, "\r\n"); + const text = discussion_text; const blob = new Blob([text], { type: 'text/plain' }); const url = URL.createObjectURL(blob); const link = document.createElement('a');