From f1ae49c82dffd4c135a9434f9c2dab3b9af03b0a Mon Sep 17 00:00:00 2001 From: Kirill Kirilenko Date: Fri, 13 Feb 2026 16:02:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=20=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B5=D0=B3=D0=BE=20=D0=B2?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=B2=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=B5=20=D0=98=D0=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai_agent.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ai_agent.py b/ai_agent.py index 38450f5..6b46c8f 100644 --- a/ai_agent.py +++ b/ai_agent.py @@ -1,4 +1,5 @@ import base64 +import datetime from dataclasses import dataclass from typing import List, Tuple, Any, Optional @@ -11,8 +12,8 @@ GROUP_CHAT_SYSTEM_PROMPT = """ Ты - ИИ-помощник в групповом чате.\n Отвечай на вопросы и поддерживай контекст беседы.\n Ты не можешь обсуждать политику и религию.\n -Сообщения пользователей будут приходить в следующем формате: '[Имя]: текст сообщения'\n -При ответе НЕ нужно указывать ни пользователя, которому он предназначен, ни свое имя.\n +Сообщения пользователей будут приходить в следующем формате: '[дата время, имя]: текст сообщения'\n +При ответе НЕ нужно указывать ни время, ни пользователя, которому предназначен ответ, ни свое имя.\n НЕ используй разметку Markdown. """ GROUP_CHAT_MAX_MESSAGES = 20 @@ -20,6 +21,8 @@ GROUP_CHAT_MAX_MESSAGES = 20 PRIVATE_CHAT_SYSTEM_PROMPT = """ Ты - ИИ-помощник в чате c пользователем.\n Отвечай на вопросы и поддерживай контекст беседы.\n +Сообщения пользователя будут приходить в следующем формате: '[дата время]: текст сообщения'\n +При ответе НЕ нужно указывать время.\n НЕ используй разметку Markdown. """ PRIVATE_CHAT_MAX_MESSAGES = 40 @@ -38,6 +41,12 @@ class Message: message_id: int = None +def _add_message_prefix(text: Optional[str], username: Optional[str] = None) -> str: + current_time = datetime.datetime.now().strftime("%d.%m.%Y %H:%M") + prefix = f"[{current_time}, {username}]" if username is not None else f"[{current_time}]" + return f"{prefix}: {text}" if text is not None else f"{prefix}:" + + def _serialize_message(role: str, text: Optional[str], image: Optional[bytes]) -> dict: json = {"role": role, "content": []} if text is not None: @@ -64,10 +73,7 @@ class AiAgent: message: Message, forwarded_messages: List[Message]) -> Tuple[str, bool]: context = self._get_chat_context(is_group_chat=True, bot_id=bot_id, chat_id=chat_id) - if message.text is not None: - message.text = f"[{message.user_name}]: {message.text}" - else: - message.text = f"[{message.user_name}]:" + message.text = _add_message_prefix(message.text, message.user_name) context.append(_serialize_message(role="user", text=message.text, image=message.image)) for fwd_message in forwarded_messages: @@ -110,6 +116,7 @@ class AiAgent: async def get_private_chat_reply(self, bot_id: int, chat_id: int, message: Message) -> Tuple[str, bool]: context = self._get_chat_context(is_group_chat=False, bot_id=bot_id, chat_id=chat_id) + message.text = _add_message_prefix(message.text) content: list[dict[str, Any]] = [] if message.text is not None: content.append({"type": "text", "text": message.text})