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