From 68e4313d7187cb56585827cd0aa0bc4e8751fc85 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Thu, 2 Mar 2023 00:41:49 +0000 Subject: [PATCH] Format Python code with psf/black push --- cogs/commands.py | 5 ++++- cogs/prompt_optimizer_cog.py | 6 +++++- models/openai_model.py | 34 ++++++++++++++++++++++++++-------- services/text_service.py | 31 +++++++++++++++++++++++++------ 4 files changed, 60 insertions(+), 16 deletions(-) diff --git a/cogs/commands.py b/cogs/commands.py index f1e7bae..dc1a24e 100644 --- a/cogs/commands.py +++ b/cogs/commands.py @@ -310,7 +310,10 @@ class Commands(discord.Cog, name="Commands"): name="prompt", description="The prompt to send to GPT3", required=True ) @discord.option( - name="model", description="The model to use for the request", required=False, autocomplete=Settings_autocompleter.get_models + name="model", + description="The model to use for the request", + required=False, + autocomplete=Settings_autocompleter.get_models, ) @discord.option( name="private", description="Will only be visible to you", required=False diff --git a/cogs/prompt_optimizer_cog.py b/cogs/prompt_optimizer_cog.py index 324801c..0d6bd1f 100644 --- a/cogs/prompt_optimizer_cog.py +++ b/cogs/prompt_optimizer_cog.py @@ -102,7 +102,11 @@ class ImgPromptOptimizer(discord.Cog, name="ImgPromptOptimizer"): # twice because of the best_of_override=2 parameter. This is to ensure that the model does a lot of analysis, but is # also relatively cost-effective - response_text = str(response["choices"][0]["text"]) if not self.model.model in Models.CHATGPT_MODELS else response["choices"][0]["message"]["content"] + response_text = ( + str(response["choices"][0]["text"]) + if not self.model.model in Models.CHATGPT_MODELS + else response["choices"][0]["message"]["content"] + ) # escape any mentions response_text = discord.utils.escape_mentions(response_text) diff --git a/models/openai_model.py b/models/openai_model.py index bdd5b48..7b15c6c 100644 --- a/models/openai_model.py +++ b/models/openai_model.py @@ -65,7 +65,16 @@ class Models: TURBO_DEV = "gpt-3.5-turbo-0301" # Model collections - TEXT_MODELS = [DAVINCI, CURIE, BABBAGE, ADA, CODE_DAVINCI, CODE_CUSHMAN, TURBO, TURBO_DEV] + TEXT_MODELS = [ + DAVINCI, + CURIE, + BABBAGE, + ADA, + CODE_DAVINCI, + CODE_CUSHMAN, + TURBO, + TURBO_DEV, + ] CHATGPT_MODELS = [TURBO, TURBO_DEV] EDIT_MODELS = [EDIT, CODE_EDIT] @@ -841,7 +850,6 @@ class Model: ): # The response, and a boolean indicating whether or not the context limit was reached. # Validate that all the parameters are in a good state before we send the request - # Clean up the user display name user_displayname_clean = self.cleanse_username(user_displayname) @@ -950,7 +958,9 @@ class Model: "model": self.model if model is None else model, "prompt": prompt, "stop": "" if stop is None else stop, - "temperature": self.temp if temp_override is None else temp_override, + "temperature": self.temp + if temp_override is None + else temp_override, "top_p": self.top_p if top_p_override is None else top_p_override, "max_tokens": self.max_tokens - tokens if max_tokens_override is None @@ -961,13 +971,17 @@ class Model: "frequency_penalty": self.frequency_penalty if frequency_penalty_override is None else frequency_penalty_override, - "best_of": self.best_of if not best_of_override else best_of_override, + "best_of": self.best_of + if not best_of_override + else best_of_override, } headers = { "Authorization": f"Bearer {self.openai_key if not custom_api_key else custom_api_key}" } async with session.post( - "https://api.openai.com/v1/completions", json=payload, headers=headers + "https://api.openai.com/v1/completions", + json=payload, + headers=headers, ) as resp: response = await resp.json() # print(f"Payload -> {payload}") @@ -976,13 +990,15 @@ class Model: print(f"Response -> {response}") return response - else: # ChatGPT Simple completion + else: # ChatGPT Simple completion async with aiohttp.ClientSession(raise_for_status=False) as session: payload = { "model": self.model if not model else model, "messages": [{"role": "user", "content": prompt}], "stop": "" if stop is None else stop, - "temperature": self.temp if temp_override is None else temp_override, + "temperature": self.temp + if temp_override is None + else temp_override, "top_p": self.top_p if top_p_override is None else top_p_override, "presence_penalty": self.presence_penalty if presence_penalty_override is None @@ -995,7 +1011,9 @@ class Model: "Authorization": f"Bearer {self.openai_key if not custom_api_key else custom_api_key}" } async with session.post( - "https://api.openai.com/v1/chat/completions", json=payload, headers=headers + "https://api.openai.com/v1/chat/completions", + json=payload, + headers=headers, ) as resp: response = await resp.json() # print(f"Payload -> {payload}") diff --git a/services/text_service.py b/services/text_service.py index 590d1bb..f3cf460 100644 --- a/services/text_service.py +++ b/services/text_service.py @@ -277,12 +277,28 @@ class TextService: return # Send the request to the model - is_chatgpt_conversation = ctx.channel.id in converser_cog.conversation_threads and not from_ask_command and not from_edit_command and ((model is not None and (model in Models.CHATGPT_MODELS or model == "chatgpt")) or (model is None and converser_cog.model.model in Models.CHATGPT_MODELS)) + is_chatgpt_conversation = ( + ctx.channel.id in converser_cog.conversation_threads + and not from_ask_command + and not from_edit_command + and ( + ( + model is not None + and (model in Models.CHATGPT_MODELS or model == "chatgpt") + ) + or ( + model is None + and converser_cog.model.model in Models.CHATGPT_MODELS + ) + ) + ) delegator = model or converser_cog.model.model is_chatgpt_request = delegator in Models.CHATGPT_MODELS if is_chatgpt_conversation: - _prompt_with_history = converser_cog.conversation_threads[ctx.channel.id].history + _prompt_with_history = converser_cog.conversation_threads[ + ctx.channel.id + ].history response = await converser_cog.model.send_chatgpt_chat_request( _prompt_with_history, bot_name=BOT_NAME, @@ -320,10 +336,13 @@ class TextService: # Clean the request response - response_text = converser_cog.cleanse_response( - str(response["choices"][0]["text"]) - ) if not is_chatgpt_request and not is_chatgpt_conversation else converser_cog.cleanse_response(str(response["choices"][0]["message"]["content"])) - + response_text = ( + converser_cog.cleanse_response(str(response["choices"][0]["text"])) + if not is_chatgpt_request and not is_chatgpt_conversation + else converser_cog.cleanse_response( + str(response["choices"][0]["message"]["content"]) + ) + ) if from_message_context: response_text = f"{response_text}"