make bot fully async!

Kaveen Kumarasinghe 1 year ago
parent 3ea5f544e8
commit 510f294c76

@ -57,7 +57,7 @@ class DrawDallEService(commands.Cog, name="DrawDallEService"):
):
await asyncio.sleep(0)
# send the prompt to the model
file, image_urls = self.model.send_image_request(
file, image_urls = await self.model.send_image_request(
prompt, vary=vary if not draw_from_optimizer else None
)

@ -418,7 +418,7 @@ class GPT3ComCon(commands.Cog, name="GPT3ComCon"):
return
# REQUEST!!!!
response = self.model.send_request(new_prompt, message, tokens=tokens)
response = await self.model.send_request(new_prompt, message, tokens=tokens)
response_text = response["choices"][0]["text"]

@ -11,6 +11,7 @@ import openai
import requests
from PIL import Image
from discord import File
from asgiref.sync import sync_to_async
class Mode:
@ -289,7 +290,7 @@ class Model:
)
self._prompt_min_length = value
def send_summary_request(self, message, prompt):
async def send_summary_request(self, message, prompt):
"""
Sends a summary request to the OpenAI API
"""
@ -304,7 +305,7 @@ class Model:
tokens = self.usage_service.count_tokens(summary_request_text)
response = openai.Completion.create(
response = await sync_to_async(openai.Completion.create)(
model=Models.DAVINCI,
prompt=summary_request_text,
temperature=0.5,
@ -321,7 +322,7 @@ class Model:
self.usage_service.update_usage(tokens_used)
return response
def send_request(
async def send_request(
self,
prompt,
message,
@ -346,7 +347,7 @@ class Model:
print("The prompt about to be sent is " + prompt)
response = openai.Completion.create(
response = await sync_to_async(openai.Completion.create)(
model=Models.DAVINCI
if any(role.name in self.DAVINCI_ROLES for role in message.author.roles)
else self.model, # Davinci override for admin users
@ -372,7 +373,7 @@ class Model:
return response
def send_image_request(self, prompt, vary=None) -> tuple[File, list[Any]]:
async def send_image_request(self, prompt, vary=None) -> tuple[File, list[Any]]:
# Validate that all the parameters are in a good state before we send the request
words = len(prompt.split(" "))
if words < 3 or words > 75:
@ -385,13 +386,13 @@ class Model:
self.usage_service.update_usage_image(self.image_size)
if not vary:
response = openai.Image.create(
response = await sync_to_async(openai.Image.create)(
prompt=prompt,
n=self.num_images,
size=self.image_size,
)
else:
response = openai.Image.create_variation(
response = await sync_to_async(openai.Image.create_variation)(
image=open(vary, "rb"),
n=self.num_images,
size=self.image_size,

@ -3,4 +3,5 @@ openai==0.25.0
Pillow==9.3.0
python-dotenv==0.21.0
requests==2.28.1
transformers==4.25.1
transformers==4.25.1
asgiref==3.6.0
Loading…
Cancel
Save