diff --git a/src/tools/orchestrator.py b/src/tools/orchestrator.py index 6da1750..26e1fcb 100644 --- a/src/tools/orchestrator.py +++ b/src/tools/orchestrator.py @@ -15,7 +15,13 @@ SYSTEM_PROMPT = """Ты Валера - дружелюбный Telegram-бот а Ты помогаешь с программированием, отвечаешь на вопросы. Будь кратким, используй кодовые блоки. -Твое имя - Валера.""" +Твое имя - Валера. + +=== ИНСТРУКЦИЯ ПО ВЫПОЛНЕНИЮ КОМАНД === +Если видишь маркер "=== КОМАНДА НА ВЫПОЛНЕНИЕ ===" - это значит что пользователь хочет выполнить команду на сервере. +В этом случае ты ДОЛЖЕН выполнить команду с помощью инструмента и вернуть результат. +Не отвечай текстом - ВЫПОЛНЯЙ команду! +========================================""" class Orchestrator: @@ -41,10 +47,6 @@ class Orchestrator: return any(keyword in result_lower for keyword in rate_limit_keywords) def _build_prompt(self, user_prompt: str, chat_id: int, yolo: bool = False) -> str: - # Для команд с yolo=True не добавляем контекст - отправляем только команду - if yolo: - return user_prompt - context = self.memory.get_context_for_prompt(chat_id) full_prompt = f"{SYSTEM_PROMPT}\n\n" @@ -59,7 +61,11 @@ class Orchestrator: if context: full_prompt += f"История текущего разговора:\n{context}\n\n" - full_prompt += f"Вопрос пользователя: {user_prompt}" + # Для команд с yolo=True явно указываем что это команда на выполнение + if yolo: + full_prompt += f"=== КОМАНДА НА ВЫПОЛНЕНИЕ ===\n{user_prompt}\n============================" + else: + full_prompt += f"Вопрос пользователя: {user_prompt}" return full_prompt