6.2 KiB
6.2 KiB
Системный промпт для 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 агент анализирует запрос пользователя и сам решает какой инструмент использовать:
| Триггеры | Инструмент | Пример |
|---|---|---|
| "найди", "погугли", "узнай" | ddgs_search |
"найди информацию про asyncio" |
| "новости", "rss", "лента" | rss_reader |
"что нового в Linux?" |
| "выполни команду", "ssh" | ssh_executor |
"проверь нагрузку на сервере" |
| "напомни", "запланируй" | cron_manager |
"напомни каждый день в 9 утра" |
📁 Структура system_prompt.md
Разделы промпта:
- Роль и задачи — кто такой бот, для кого работает
- Доступные инструменты — описание каждого инструмента:
- Название и функция
- Когда использовать
- Параметры
- Примеры вызова
- Принципы работы — автономность, контекст, прозрачность, приоритеты
- Форматы ответов — как оформлять результаты
- Важные правила — технические ограничения, форматирование
- Примеры диалогов — few-shot prompting для лучшего понимания
🎯 Приоритеты инструментов
При принятии решения AI следует приоритету:
- SSH — явные системные задачи
- Cron — планирование и напоминания
- Поиск (DDGS) — свежие данные из интернета
- RSS — новости из подписанных лент
🔄 Обновление промпта
Для изменения поведения бота:
- Отредактируйте
system_prompt.md - Перезапустите бота (или оставьте как есть — кэш обновится при следующем запросе)
- Для сброса кэша:
qwen_manager._system_prompt = None
💡 Советы по настройке
Добавление нового инструмента
-
Опишите инструмент в разделе "Доступные инструменты":
### N. Название (`tool_name`) **Назначение:** ... **Когда использовать:** - Триггер 1 - Триггер 2 **Параметры:** - `param1` (type): описание **Пример вызова:** ```python tool_name(param1="value") -
Добавьте триггеры в
bot/ai_agent.py:NEW_TOOL_TRIGGERS = ['триггер1', 'триггер2'] -
Реализуйте логику проверки в
_should_use_new_tool() -
Добавьте обработку в
decide()
Изменение поведения
- Более агрессивное использование инструментов: уменьшите пороги confidence в
ai_agent.py - Более консервативное: увеличьте пороги или добавьте больше условий
- Изменение формата ответов: отредактируйте раздел "Формат ответов" в промпте
📊 Мониторинг
Для отслеживания использования инструментов:
# История использования инструментов
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