telegram-cli-bot/SYSTEM_PROMPT.md

8.5 KiB
Raw Permalink Blame History

Системный промпт для Telegram CLI Bot

📋 Обзор

Системный промпт — это набор инструкций для Qwen AI, который определяет:

  • Роль и задачи бота
  • Доступные инструменты (capabilities)
  • Правила автономного использования инструментов
  • Форматы ответов

🏗️ Архитектура

system_prompt.md          # Файл с системным промптом
    ↓
qwen_integration.py       # Загружает промпт при инициализации
    ↓
bot.py (handle_ai_task)   # Добавляет промпт к каждому запросу
    ↓
Qwen Code CLI             # Получает промпт + контекст + запрос

🔧 Как это работает

1. Загрузка промпта

При первом запросе к Qwen менеджер загружает промпт из файла:

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. Опишите инструмент в разделе "Доступные инструменты":

    ### N. Название (`tool_name`)
    
    **Назначение:** ...
    
    **Когда использовать:**
    - Триггер 1
    - Триггер 2
    
    **Параметры:**
    - `param1` (type): описание
    
    **Пример вызова:**
    ```python
    tool_name(param1="value")
    
    
    
  2. Добавьте триггеры в bot/ai_agent.py:

    NEW_TOOL_TRIGGERS = [риггер1', риггер2']
    
  3. Реализуйте логику проверки в _should_use_new_tool()

  4. Добавьте обработку в decide()

Изменение поведения

  • Более агрессивное использование инструментов: уменьшите пороги confidence в ai_agent.py
  • Более консервативное: увеличьте пороги или добавьте больше условий
  • Изменение формата ответов: отредактируйте раздел "Формат ответов" в промпте

📊 Мониторинг

Для отслеживания использования инструментов:

# История использования инструментов
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