From 3624ee0dc92d6388f6605cced9a88f14baa47aa7 Mon Sep 17 00:00:00 2001 From: Karim Iskakov Date: Wed, 8 Mar 2023 04:49:50 -0600 Subject: [PATCH] Make bot truly async --- bot/bot.py | 3 ++- bot/chatgpt.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bot/bot.py b/bot/bot.py index f04ab67..ccf3396 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -110,7 +110,7 @@ async def message_handle(update: Update, context: CallbackContext, message=None, message = message or update.message.text chatgpt_instance = chatgpt.ChatGPT(use_chatgpt_api=config.use_chatgpt_api) - answer, n_used_tokens, n_first_dialog_messages_removed = chatgpt_instance.send_message( + answer, n_used_tokens, n_first_dialog_messages_removed = await chatgpt_instance.send_message( message, dialog_messages=db.get_dialog_messages(user_id, dialog_id=None), chat_mode=db.get_user_attribute(user_id, "current_chat_mode"), @@ -241,6 +241,7 @@ def run_bot() -> None: application = ( ApplicationBuilder() .token(config.telegram_token) + .concurrent_updates(True) .build() ) diff --git a/bot/chatgpt.py b/bot/chatgpt.py index 4df2a9f..5de94e6 100644 --- a/bot/chatgpt.py +++ b/bot/chatgpt.py @@ -43,7 +43,7 @@ class ChatGPT: def __init__(self, use_chatgpt_api=True): self.use_chatgpt_api = use_chatgpt_api - def send_message(self, message, dialog_messages=[], chat_mode="assistant"): + async def send_message(self, message, dialog_messages=[], chat_mode="assistant"): if chat_mode not in CHAT_MODES.keys(): raise ValueError(f"Chat mode {chat_mode} is not supported") @@ -53,7 +53,7 @@ class ChatGPT: try: if self.use_chatgpt_api: messages = self._generate_prompt_messages_for_chatgpt_api(message, dialog_messages, chat_mode) - r = openai.ChatCompletion.create( + r = await openai.ChatCompletion.acreate( model="gpt-3.5-turbo", messages=messages, **OPENAI_COMPLETION_OPTIONS @@ -61,7 +61,7 @@ class ChatGPT: answer = r.choices[0].message["content"] else: prompt = self._generate_prompt(message, dialog_messages, chat_mode) - r = openai.Completion.create( + r = await openai.Completion.acreate( engine="text-davinci-003", prompt=prompt, **OPENAI_COMPLETION_OPTIONS