diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..f758a93 Binary files /dev/null and b/.DS_Store differ diff --git a/bot/bot.py b/bot/bot.py index 2d9a758..0336397 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -429,7 +429,7 @@ async def message_handle(update: Update, context: CallbackContext, message=None, prev_answer = answer # update user data - new_dialog_message = {"user": _message, "bot": answer, "date": datetime.now()} + new_dialog_message = {"user": [{"type": "text", "text": _message}], "bot": answer, "date": datetime.now()} db.set_dialog_messages( user_id, diff --git a/bot/openai_utils.py b/bot/openai_utils.py index cf19257..005f801 100644 --- a/bot/openai_utils.py +++ b/bot/openai_utils.py @@ -254,25 +254,32 @@ class ChatGPT: prompt = config.chat_modes[chat_mode]["prompt_start"] messages = [{"role": "system", "content": prompt}] - user_messages = {"role": "user", "content": []} for dialog_message in dialog_messages: - user_messages["content"].extend(dialog_message["user"]) + messages.append({"role": "user", "content": dialog_message["user"]}) messages.append({"role": "assistant", "content": dialog_message["bot"]}) - - - user_messages["content"].append({"type": "text", "text": message}) - + if image_buffer is not None: - user_messages["content"].append( + messages.append( { - "type": "image", - "image": self._encode_image(image_buffer), + "role": "user", + "content": [ + { + "type": "text", + "text": message, + }, + { + "type": "image", + "image": self._encode_image(image_buffer), + } + ] } + ) + else: + messages.append({"role": "user", "content": message}) - response = messages + ([user_messages] if len(user_messages["content"]) > 0 else []) - return response + return messages def _postprocess_answer(self, answer): answer = answer.strip()