160 lines
6.2 KiB
Markdown
160 lines
6.2 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 агент анализирует запрос пользователя и **сам решает** какой инструмент использовать:
|
||
|
||
| Триггеры | Инструмент | Пример |
|
||
|----------|------------|--------|
|
||
| "найди", "погугли", "узнай" | `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. **SSH** — явные системные задачи
|
||
2. **Cron** — планирование и напоминания
|
||
3. **Поиск (DDGS)** — свежие данные из интернета
|
||
4. **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.5.3 | Базовая реализация системного промпта |
|
||
| 0.5.2 | AI агент с авто-выбором инструментов |
|
||
| 0.5.1 | Интеграция RSS reader |
|
||
| 0.5.0 | Интеграция DDGS search |
|
||
|
||
---
|
||
|
||
*Документация для разработчиков Telegram CLI Bot*
|