# Системный промпт для Telegram CLI Bot ## 📋 Обзор Системный промпт — это набор инструкций для Qwen AI, который определяет: - Роль и задачи бота - Доступные инструменты (capabilities) - Правила автономного использования инструментов - Форматы ответов ## 🏗️ Архитектура ``` system_prompt.md # Файл с системным промптом ↓ qwen_integration.py # Загружает промпт при инициализации ↓ bot.py (handle_ai_task) # Добавляет промпт к каждому запросу ↓ Qwen Code CLI # Получает промпт + контекст + запрос ``` ## 🔧 Как это работает ### 1. Загрузка промпта При первом запросе к Qwen менеджер загружает промпт из файла: ```python system_prompt = qwen_manager.load_system_prompt() ``` Промпт кэшируется в памяти для последующих запросов. ### 2. Формирование полного запроса Каждый запрос к Qwen включает: ``` [СИСТЕМНЫЙ ПРОМПТ] ↓ [КОНТЕКСТ ПАМЯТИ] (из ChromaDB RAG) ↓ [ИСТОРИЯ ДИАЛОГА] (последние 20 сообщений) ↓ [ЗАПРОС ПОЛЬЗОВАТЕЛЯ] ``` ### 3. Автономное использование инструментов AI агент анализирует запрос пользователя и **сам решает** какой инструмент использовать: | Триггеры | Инструмент | Пример | |----------|------------|--------| | "прочитай", "покажи файл", "ls", "cat" | `file_system_tool` | "покажи файлы в директории" | | "найди", "погугли", "узнай" | `ddgs_search` | "найди информацию про asyncio" | | "новости", "rss", "лента" | `rss_reader` | "что нового в Linux?" | | "выполни команду", "ssh" | `ssh_executor` | "проверь нагрузку на сервере" | | "напомни", "запланируй" | `cron_manager` | "напомни каждый день в 9 утра" | ## 📁 Структура system_prompt.md ### Разделы промпта: 1. **Роль и задачи** — кто такой бот, для кого работает 2. **Доступные инструменты** — описание каждого инструмента: - Название и функция - Когда использовать - Параметры - Примеры вызова 3. **Принципы работы** — автономность, контекст, прозрачность, приоритеты 4. **Форматы ответов** — как оформлять результаты 5. **Важные правила** — технические ограничения, форматирование 6. **Примеры диалогов** — few-shot prompting для лучшего понимания ## 🎯 Приоритеты инструментов При принятии решения AI следует приоритету: 1. **File System** — если операция с файлами/директориями 2. **SSH** — если явная системная задача на сервере 3. **Cron** — если планирование/напоминание 4. **Поиск (DDGS)** — если нужны свежие данные из интернета 5. **RSS** — если новости из подписанных лент ## ⚠️ Блокировка: Реакция на действия бота **Важное правило:** Не активируй инструменты если пользователь говорит о **прошлых действиях бота**, а не просит сделать что-то новое. **❌ НЕ активируй инструменты если пользователь:** - Комментирует прошлые действия: "ты опять ddgs запустил", "зачем ты rss включил" - Критикует срабатывание: "перестань", "хватит", "не надо" - Указывает на ошибку: "баг", "ошибка", "неправильно" - Говорит о прошлом: "я не просил", "я не говорил" - Реагирует на результат: "это не то", "я вижу что ты..." **✅ Активируй инструменты только если:** - Пользователь явно просит сделать что-то **новое** ("найди...", "проверь...", "запусти...") - В запросе есть **триггерные слова** из раздела инструментов - Пользователь продолжает тему и нужен **новый запрос** к инструменту **Правильное поведение при ошибке:** Извиниться кратко, объяснить что исправишь логику, но **не запускать инструмент повторно**. ## 🔄 Обновление промпта Для изменения поведения бота: 1. Отредактируйте `system_prompt.md` 2. Перезапустите бота (или оставьте как есть — кэш обновится при следующем запросе) 3. Для сброса кэша: `qwen_manager._system_prompt = None` ## 💡 Советы по настройке ### Добавление нового инструмента 1. Опишите инструмент в разделе "Доступные инструменты": ```markdown ### N. Название (`tool_name`) **Назначение:** ... **Когда использовать:** - Триггер 1 - Триггер 2 **Параметры:** - `param1` (type): описание **Пример вызова:** ```python tool_name(param1="value") ``` ``` 2. Добавьте триггеры в `bot/ai_agent.py`: ```python NEW_TOOL_TRIGGERS = ['триггер1', 'триггер2'] ``` 3. Реализуйте логику проверки в `_should_use_new_tool()` 4. Добавьте обработку в `decide()` ### Изменение поведения - **Более агрессивное использование инструментов:** уменьшите пороги confidence в `ai_agent.py` - **Более консервативное:** увеличьте пороги или добавьте больше условий - **Изменение формата ответов:** отредактируйте раздел "Формат ответов" в промпте ## 📊 Мониторинг Для отслеживания использования инструментов: ```python # История использования инструментов ai_agent.get_tool_history(limit=10) # Предпочтения пользователя ai_agent.get_user_preference(user_id, 'preferred_tool') ``` ## ⚠️ Ограничения - **Размер контекста:** до 200K токенов (безопасный лимит) - **Время выполнения:** 5 минут максимум на задачу - **Кэширование:** системный промпт кэшируется в памяти менеджера ## 📈 Версии | Версия | Изменения | |--------|-----------| | 0.8.0 | Исправление OAuth + память файлов + совместимость PTB 20.7+ | | 0.7.1 | AI Provider Manager (Qwen Code, GigaChat), блокировка на реакции бота | | 0.7.0 | Векторная память (ChromaDB RAG), ИИ-агент с памятью, File System Tool | | 0.6.0 | Автоматическая установка, SOCKS5 прокси | | 0.5.3 | Базовая реализация системного промпта | | 0.5.2 | AI агент с авто-выбором инструментов | | 0.5.1 | Интеграция RSS reader | | 0.5.0 | Интеграция DDGS search | --- *Документация для разработчиков Telegram CLI Bot*