diff --git a/cogs/gpt_3_commands_and_converser.py b/cogs/gpt_3_commands_and_converser.py index afd051c..5e85028 100644 --- a/cogs/gpt_3_commands_and_converser.py +++ b/cogs/gpt_3_commands_and_converser.py @@ -1267,16 +1267,6 @@ class GPT3ComCon(discord.Cog, name="GPT3ComCon"): self.conversation_threads[thread.id] = Thread(thread.id) - # Append the starter text for gpt3 to the user's history so it gets concatenated with the prompt later - if minimal or opener_file: - self.conversation_threads[thread.id].history.append( - self.CONVERSATION_STARTER_TEXT_MINIMAL - ) - elif not minimal: - self.conversation_threads[thread.id].history.append( - self.CONVERSATION_STARTER_TEXT - ) - if not opener and not opener_file: user_id_normalized = user.id else: @@ -1284,28 +1274,45 @@ class GPT3ComCon(discord.Cog, name="GPT3ComCon"): if not opener_file: pass else: - if opener_file.endswith((".txt", ".json")): + if not opener_file.endswith((".txt", ".json")): + opener_file = None + else: # Load the file and read it into opener - opener_file = EnvService.find_shared_file( - f"openers{separator}{opener_file}" - ) - opener_file = await self.load_file(opener_file, ctx) try: - opener_file = json.loads(opener_file) # Try opening as json, if it fails it'll do it as a str - temperature=None if not opener_file["temperature"] else opener_file["temperature"] - top_p=None if not opener_file["top_p"] else opener_file["top_p"] - frequency_penalty=None if not opener_file["frequency_penalty"] else opener_file["frequency_penalty"] - presence_penalty=None if not opener_file["presence_penalty"] else opener_file["presence_penalty"] - self.conversation_threads[thread.id].set_overrides(temperature, top_p, frequency_penalty, presence_penalty) # set overrides - if not opener: # if we only use opener_file then only pass on opener_file for the opening prompt - opener = opener_file["text"] - else: - opener = opener_file["text"] + opener + opener_file = re.sub(".+(?=[\\//])", "", opener_file) # remove paths from the opener file + opener_file = EnvService.find_shared_file( + f"openers{separator}{opener_file}" + ) + opener_file = await self.load_file(opener_file, ctx) + try: # Try opening as json, if it fails it'll do it as a str + opener_file = json.loads(opener_file) + temperature=None if not opener_file["temperature"] else opener_file["temperature"] + top_p=None if not opener_file["top_p"] else opener_file["top_p"] + frequency_penalty=None if not opener_file["frequency_penalty"] else opener_file["frequency_penalty"] + presence_penalty=None if not opener_file["presence_penalty"] else opener_file["presence_penalty"] + self.conversation_threads[thread.id].set_overrides(temperature, top_p, frequency_penalty, presence_penalty) # set overrides + if not opener: # if we only use opener_file then only pass on opener_file for the opening prompt + opener = opener_file["text"] + else: + opener = opener_file["text"] + opener + except: # Parse as just regular text + if not opener: + opener = opener_file + else: + opener = opener_file + opener except: - if not opener: # if we only use opener_file then only pass on opener_file for the opening prompt - opener = opener_file - else: - opener = opener_file + opener + opener_file = None + + + # Append the starter text for gpt3 to the user's history so it gets concatenated with the prompt later + if minimal or opener_file: + self.conversation_threads[thread.id].history.append( + self.CONVERSATION_STARTER_TEXT_MINIMAL + ) + elif not minimal: + self.conversation_threads[thread.id].history.append( + self.CONVERSATION_STARTER_TEXT + ) # Set user as owner before sending anything that can error and leave the thread unowned self.conversation_thread_owners[user_id_normalized] = thread.id