Добавлена передача текущего времени в запросе ИИ.

This commit is contained in:
Kirill Kirilenko 2026-02-13 16:02:19 +03:00
parent 75e94449b5
commit f1ae49c82d

View file

@ -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})