telegram-cli-bot/SYSTEM_PROMPT.md

184 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Системный промпт для 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*