---
name: rag-query
description: >
Используйте этот навык для запроса внутренней корпоративной базы знаний с помощью RAG.
Активируйте, когда пользователь задает вопросы о политике компании, правилах отдела кадров, правилах возмещения,
внутренних проектных спецификациях, системах учета рабочего времени, организационных процедурах или любых других
проприетарных корпоративных знаниях. Не используйте для общих знаний или веб-поиска.
version: 3.0.0
---
# Навык: Запрос внутренней базы знаний (RAG)
Запрашивайте частную базу знаний и репозиторий документов компании для получения точных ответов,
специфичных для текущего клиента, по внутренним темам.
**Применимые темы:**
- Отдел кадров и административные вопросы: учет рабочего времени, возмещение, правила отпусков, процедуры адаптации.
- Проекты: внутренние спецификации, архитектурная документация, сводки собраний.
- Организация: структура отделов, определения ролей, рабочие процессы.
---
## ⚠️ Предварительная проверка (обязательно к прочтению перед выполнением)
Перед выполнением любой команды убедитесь, что все три пункта готовы:
| Параметр | Источник | Пример |
|------|------|------|
| Корневой путь проекта | Поле `Корневой путь проекта` в system prompt | `/Users/tianwei/paper/DeepAgentForce` |
| UUID клиента | Поле `UUID текущего клиента` в system prompt | `6d3b9398-ca84-4db5-a38b-e88ce427918b` |
| Вопрос пользователя | Исходный вопрос, введенный пользователем | `Материалы, связанные с мостостроением в компании` |
> 🚫 **Строго запрещено** использовать команды `find /`, `ls`, `cd` для поиска пути — путь уже предоставлен в system prompt, используйте его напрямую.
---
## Выполнение
### Формат команды (строго соблюдайте, не изменяйте никакие параметры)
```bash
python <PROJECT_ROOT>/src/services/skills/rag-query/scripts/query.py "<Вопрос пользователя>" --tenant-uuid <UUID>
```
### Описание параметров
| Параметр | Тип | Описание |
|------|------|------|
| `<PROJECT_ROOT>` | Путь | Считывается из поля `Корневой путь проекта` в system prompt, **запрещено** самостоятельно определять или использовать `find`. |
| `"<Вопрос пользователя>"` | Позиционный параметр | Исходный вопрос пользователя, **должен быть заключен в двойные кавычки**. |
| `--tenant-uuid <UUID>` | Параметр-флаг | Считывается из поля `UUID текущего клиента` в system prompt, **нельзя опускать**. |
### Правила форматирования
```
✅ Правильный формат:
python /Users/tianwei/paper/DeepAgentForce/src/services/skills/rag-query/scripts/query.py "Каковы правила учета рабочего времени в компании" --tenant-uuid 6d3b9398-ca84-4db5-a38b-e88ce427918b
❌ Ошибка - формат JSON-массива:
["python /path/query.py "Правила учета рабочего времени" --tenant-uuid xxx"]
❌ Ошибка - относительный путь:
python src/services/skills/rag-query/scripts/query.py "Вопрос" --tenant-uuid xxx
❌ Ошибка - использование флага --question:
python /path/query.py --question "Правила учета рабочего времени" --tenant-uuid xxx
❌ Ошибка - отсутствие --tenant-uuid:
python /path/query.py "Правила учета рабочего времени"
❌ Ошибка - сначала выполняется find для поиска пути:
find / -type d -name "DeepAgentForce"
```
---
## Пошаговый процесс выполнения
```
Шаг 1. Считывается поле `Корневой путь проекта` из system prompt и сохраняется в переменной PROJECT_ROOT.
Шаг 2. Считывается поле `UUID текущего клиента` из system prompt и сохраняется в переменной UUID.
Шаг 3. Вопрос пользователя оборачивается в двойные кавычки и сохраняется в переменной QUESTION.
Шаг 4. Формируется полная команда:
python {PROJECT_ROOT}/src/services/skills/rag-query/scripts/query.py "{QUESTION}" --tenant-uuid {UUID}
Шаг 5. Команда выполняется с помощью инструмента командной строки в виде строки (без добавления каких-либо оберток JSON).
Шаг 6. Результат выполнения скрипта обрабатывается и возвращается пользователю.
```
---
## Обработка результатов
Скрипт возвращает результат в формате JSON, содержащий следующие поля:
```json
{
"answer": "Текст ответа, полученный в результате поиска RAG",
"sources": ["Источник документа 1", "Источник документа 2"],
"confidence": 0.95
}
```
**Правила обработки:**
- В качестве основного ответа используется содержимое поля `answer`.
- Если присутствует поле `sources`, оно добавляется в конец ответа в виде "Источники".
- Если поле `answer` пустое или уровень уверенности слишком низкий, пользователю сообщается, что в базе знаний нет соответствующей информации, и рекомендуется обратиться к администратору для добавления документации.
---
## Обработка ошибок
| Сообщение об ошибке | Причина | Способ обработки |
|----------|------|----------|
| `No such file or directory` | Ошибка в пути | Перечитывается поле `Корневой путь проекта` из system prompt и проверяется правильность пути. |
| `ModuleNotFoundError` | Проблема с окружением Python | Попробуйте заменить `python` на `python3`. |
| `tenant not found` | Ошибка или отсутствие UUID | Проверьте, что поле `UUID текущего клиента` в system prompt заполнено. |
| Возврат пустого результата | В базе знаний нет соответствующей информации | Сообщите пользователю и предложите добавить документацию, не повторяйте запрос. |
| Время выполнения скрипта истекло | Проблема с сетью или векторомной базой данных | Сообщите пользователю, что ему следует повторить попытку позже, не повторяйте запрос бесконечно. |
> 🚫 В случае любой ошибки **строго запрещено** пытаться "исправить" ошибку путем изменения пути или добавления команды `find` — необходимо просто сообщить сообщение об ошибке.