Поиск фразой (ИИ)

Поиск узлов, участков, потребителей, источников и инструментов по описанию: «камера у ТЭЦ-2 на магистрали 4», «где посмотреть износ». Обычный поиск ищет по номеру и названию, поиск фразой — по смыслу.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Оборудование сети → «Поиск узлов» → переключатель «Поиск фразой (помощник ИИ)». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
право «Запуск расчётов»; на сервере должен быть включён помощник ИИ — иначе кнопок и переключателей ИИ нет.
Читаю как

Возможности

  • Найти узел или камеру по описанию с кодом: «камера тк6-5-24», «узел УТ-5-34 во фрагменте 74».
  • Найти участок между двумя узлами: «участок ТК-12 — ТК-13».
  • Найти источник по имени: «АТЭЦ-2», «котельная …».
  • Получить список потребителей по диагностике нагрузок: без нагрузки, закрытых, отключённых, не рассчитанных — с общим числом.
  • Открыть инструмент по описанию задачи: «где посмотреть износ» открывает «Износ и план ремонтов», «потребители без нагрузки во фрагменте 74» — «Диагностику нагрузок» с этим отбором.
  • Щелчком по найденному перелететь к нему на карте.

Как это работает

Модель только разбирает фразу. Фраза уходит на сервер, модель превращает её в запрос: вид объекта (узел, участок, потребители, источник, инструмент), текст для поиска, номер фрагмента, признак диагностики, ключ инструмента. Выборку делает сервер своими запросами — SQL модель не пишет. Модель вызывается с низким уровнем рассуждения и ответом до 600 токенов, поэтому ответ приходит за секунды.

Как ищет сервер (ai/tools.py, до 50 объектов):

  • узлы — подстрока в имени среди узлов с координатами, не удалённых; сначала точное совпадение, затем короткие имена;
  • участки — подстрока имени одного конца и (если названа) другого;
  • источники — подстрока в названии источника;
  • потребители — та же выборка, что в «Диагностике нагрузок», первые 50 и общее число;
  • инструмент — только из списка инструментов веба; неизвестный ключ отбрасывается.

Фрагмент. Если фраза не называет фрагмент, а на карте открыт ровно один — поиск идёт в нём. С фразой уходят номера видимых фрагментов (модели — первые 20).

Над списком — как понята фраза: вид («узлы», «участки», «потребители», «источники», «инструмент», «не понял запрос»), общее число для потребителей и пояснение модели. Если фраза открыла инструмент и объектов нет, окно поиска закрывается.

Что нужно для работы

  • Право «Запуск расчётов» и помощник ИИ, включённый на сервере. Без них переключателя «Поиск фразой» нет, обычный поиск работает.
  • Узлы и участки с координатами — иначе объект найдётся, но перелететь к нему нельзя.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Поиск узлов» — пункт выделен рамкой.

    Пункт «Поиск узлов» в панели «Инструменты»

  2. Нажмите пункт — откроется окно.

    Окно «Поиск узлов»

  3. Включите переключатель «Поиск фразой (помощник ИИ)», опишите, что ищете, и нажмите Enter.

    Поиск фразой (ИИ): шаг 3

  4. Над списком — как помощник понял фразу (что ищет и по какому признаку), ниже — найденные объекты. Щелчок по объекту переводит к нему карту.

    Поиск фразой (ИИ): шаг 4

Примеры

Камера по коду (копия Алматы, фрагмент 74). Тот же поиск по имени без модели (инструмент search_network MCP-сервера) по «тк6-5-2» во фрагменте 74 возвращает мтк6-5-2, тк6-5-24, мтк6-5-20 … — точное имя встаёт первым, остальные — по длине имени. Фраза «камера тк6-5-24» разбирается в «узлы — тк6-5-24»; щелчок по строке переводит карту к узлу (76,8211; 43,2413).

Если не получается

  • «Поиск фразой не выполнен» — ИИ недоступен; поиск по номеру и названию продолжает работать.
  • Найдено не то — уточните фразу: название или код объекта, фрагмент, вид объекта.
  • «Ничего не найдено» — запрос разобран, но объектов нет: проверьте код и фрагмент.
  • В строке над списком «не понял запрос» — фраза не похожа на поиск объекта; пояснение модели подскажет, что уточнить.
  • «Поиск фразой не выполнен: Ошибка на сервере: Превышен лимит запросов к ИИ, повторите позже» (или другая причина после двоеточия) — модель недоступна; выключите переключатель и ищите по номеру.

Для администратора

  • Флаги: AI_ENABLED, ANTHROPIC_API_KEY, AI_MODEL. Каждый поиск фразой — запись «AI» в журнале действий (tool=search, токены).

Для разработчика

  • API: POST /api/v1/ai/search (text 2–500 символов, fragment_ids до 50) → query (kind, text, text2, fragment_id, diagnostic, consumer_type, tool_key, confidence, note), items, total, open_tool.
  • Сервер: routers/ai.py, ai/tools.py (SearchQuery, search, execute_search, TOOL_KEYS, MAX_RESULTS = 50), промпт ai/prompts/search.md; тот же execute_search — инструмент MCP search_network.
  • Веб: components/NodeSearch.vue (runAiSearch, открытие инструмента — uiStore.requestToolDialog).
  • Тесты: API — tests/test_ai_tools_stage6.py; e2e — e2e/functions/ai.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо