From 363a3a124471217e723d57b084122ae1ca41ab2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20K=C3=B6pf?= Date: Tue, 7 Feb 2023 16:40:25 +0100 Subject: [PATCH] Ignore up/down votes (emojis) for own messages (#1302) * ignore up/down votes (emojis) for own messages * add 'user_is_author' bool porperty to protocol.ConversationMessage --- backend/oasst_backend/api/v1/utils.py | 2 ++ backend/oasst_backend/models/message.py | 5 +++++ backend/oasst_backend/prompt_repository.py | 8 ++++++++ oasst-shared/oasst_shared/schemas/protocol.py | 1 + 4 files changed, 16 insertions(+) diff --git a/backend/oasst_backend/api/v1/utils.py b/backend/oasst_backend/api/v1/utils.py index 245114ef..0b7749e2 100644 --- a/backend/oasst_backend/api/v1/utils.py +++ b/backend/oasst_backend/api/v1/utils.py @@ -17,6 +17,7 @@ def prepare_message(m: Message) -> protocol.Message: created_date=m.created_date, emojis=m.emojis or {}, user_emojis=m.user_emojis or [], + user_is_author=m.user_is_author, review_result=m.review_result, review_count=m.review_count, ) @@ -36,6 +37,7 @@ def prepare_conversation_message(message: Message) -> protocol.ConversationMessa is_assistant=(message.role == "assistant"), emojis=message.emojis or {}, user_emojis=message.user_emojis or [], + user_is_author=message.user_is_author, ) diff --git a/backend/oasst_backend/models/message.py b/backend/oasst_backend/models/message.py index 2cf3b7bb..5e77ec74 100644 --- a/backend/oasst_backend/models/message.py +++ b/backend/oasst_backend/models/message.py @@ -64,6 +64,7 @@ class Message(SQLModel, table=True): emojis: Optional[dict[str, int]] = Field(default=None, sa_column=sa.Column(pg.JSONB), nullable=False) _user_emojis: Optional[list[str]] = PrivateAttr(default=None) + _user_is_author: Optional[bool] = PrivateAttr(default=None) def ensure_is_message(self) -> None: if not self.payload or not isinstance(self.payload.payload, MessagePayload): @@ -83,3 +84,7 @@ class Message(SQLModel, table=True): @property def user_emojis(self) -> str: return self._user_emojis + + @property + def user_is_author(self) -> str: + return self._user_is_author diff --git a/backend/oasst_backend/prompt_repository.py b/backend/oasst_backend/prompt_repository.py index 5ac9d85d..71e7ab68 100644 --- a/backend/oasst_backend/prompt_repository.py +++ b/backend/oasst_backend/prompt_repository.py @@ -876,6 +876,7 @@ class PromptRepository: user_emojis = x["user_emojis"] if user_emojis: m._user_emojis = user_emojis.split(",") + m._user_is_author = self.user_id and self.user_id == m.user_id messages.append(m) return messages @@ -1090,6 +1091,13 @@ WHERE message.id = cc.id; message_id, protocol_schema.EmojiOp.remove, protocol_schema.EmojiCode.thumbs_up ) + if message.user_id == self.user_id and emoji in ( + protocol_schema.EmojiCode.thumbs_up, + protocol_schema.EmojiCode.thumbs_down, + ): + logger.debug(f"Ignoring add emoji op for user's own message ({emoji=})") + return message + # insert emoji record & increment count message_emoji = MessageEmoji(message_id=message.id, user_id=self.user_id, emoji=emoji) self.db.add(message_emoji) diff --git a/oasst-shared/oasst_shared/schemas/protocol.py b/oasst-shared/oasst_shared/schemas/protocol.py index a237b0c9..7d1d256a 100644 --- a/oasst-shared/oasst_shared/schemas/protocol.py +++ b/oasst-shared/oasst_shared/schemas/protocol.py @@ -76,6 +76,7 @@ class ConversationMessage(BaseModel): is_assistant: bool emojis: Optional[dict[str, int]] = None user_emojis: Optional[list[str]] = None + user_is_author: Optional[bool] = None class Conversation(BaseModel):