Выборка по вопросу (ИИ)

Вопрос обычными словами — «участки Ду 500 старше 1980 года в 300 м от школ» — помощник превращает в условия выборки. Выборку выполняет сама программа по проверенным условиям, а не модель: модель не пишет запросы к базе.

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

Возможности

  • Задать выборку вопросом: «бесканальные трубы Ду 400 и больше старше 1985 года в 500 м от 3-47», «потребители с нагрузкой больше 1 Гкал/ч», «самые изношенные участки на экране».
  • Сразу получить результат: после «Спросить» выборка уже выполнена — список, подсветка на карте, «Скачать».
  • Увидеть, как понят вопрос: строки конструктора заполнены условиями модели, над ними — её пояснение и строка «Запрос» с условиями словами.
  • Поправить условия руками и выбрать заново кнопкой «Выбрать».

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

Модель заполняет конструктор, выборку делает сервер. Модели передаётся вопрос, текущий год и справочник полей конструктора с допустимыми значениями (для справочных полей — до 40 значений). Ответ модели — тот же запрос, что собирает конструктор: что выбирать (участки или узлы), условия, «все» или «любое», «рядом с узлом», «рядом с социальными объектами», «в видимой области», фрагменты, порядок и «не больше». Сервер проверяет его тем же белым списком полей, что и ручной конструктор, и выполняет. SQL модель не пишет.

Как модель читает вопрос (промпт ai/prompts/select.md): «Ду 400 и больше» — диаметр ≥ 400, «Ду 300–500» — от … до, «старше 1980 года» — год прокладки < 1980, «старше 40 лет» — год < текущий − 40, «бесканальные» — тип прокладки, «камеры» — вид узла, «источники», «насосные», «потребители» — тип узла. Без расстояния «рядом с» — 200 м, не больше 5000 м. Без «первые N» — не больше 1000.

Фрагменты. Не названы в вопросе — берутся фрагменты на карте; при «рядом с узлом» — все фрагменты (узел может лежать в другом). «В видимой области» без охвата карты снимается.

Чего в полях нет, того модель не выберет. У участков 13 полей: диаметр, год прокладки, износ, теплопотери, располагаемый напор, напор подачи, скорость, удельные потери, расход, тип прокладки, длина, глубина, число повреждений. У узлов — тип, вид, имя, нагрузка. Подачи и обратки отдельно нет: «подающие» модель опускает и пишет об этом в пояснении.

Уверенность. Если модель оценила разбор ниже 0,6, к пояснению добавляется «проверьте условия». Вопрос не про выборку — конструктор пустой и сообщение «Вопрос не похож на выборку объектов сети — уточните его».

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

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

Шаги

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

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

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

    Окно «Выборка по условиям»

  3. Введите вопрос в поле «Спросите словами» и нажмите «Спросить».

    Выборка по вопросу (ИИ): шаг 3

  4. Помощник заполнит условия — это обычные строки фильтра — и сразу выполнит выборку: найденное подсветится на карте, список можно скачать («Скачать»). Проверьте условия: здесь, например, признака «подающий/обратный» в полях выборки нет, и помощник пишет об этом в пояснении. Поправьте строки руками и нажмите «Выбрать» ещё раз.

    Выборка по вопросу (ИИ): шаг 4

Примеры

«Подающие участки диаметром 500 мм и больше, проложенные до 1990 года» (копия Алматы, фрагмент 74, 12,9 с). Модель заполнила две строки — «Условный диаметр ≥ 500 мм» и «Год прокладки (перекладки) < 1990» — с уверенностью 0,8 и пояснила: «Признака «подающий/обратный» в списке полей нет — выбраны все участки…». Найдено 0. Это не ошибка разбора: у участков Ду ≥ 500 этого фрагмента самый ранний год прокладки в копии — 2014. Без условия по году — 2068 участков, длина по паспорту 245,61 км.

Снимок шага 4 (фрагмент 1): «подающие участки диаметром 500 мм и больше» → одна строка «Условный диаметр ≥ 500 мм», «Найдено: 1035 (показано 1000) · длина по паспорту 122,52 км».

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

  • Рядом с условиями «проверьте условия» — модель не уверена в разборе: сверьте строки фильтра с вопросом.
  • Поля «Спросите словами» нет — ИИ выключен на сервере или нет права «Запуск расчётов»; условия можно задать вручную.
  • Выборка пуста — сверьте условия с данными: например, в копии Алматы участков Ду ≥ 500 с годом прокладки до 1990 нет (самый ранний год — 2014).
  • «Вопрос не разобран: …» — модель недоступна (лимит, нет связи, ИИ выключен); после двоеточия — причина от сервера.
  • «Вопрос не похож на выборку объектов сети — уточните его» — назовите, что выбирать (участки, камеры, потребители) и по какому признаку.
  • «Найдено: 0» при верных условиях — проверьте заполненность поля в базе (год прокладки, тип прокладки) и фрагменты в строке «Фрагменты».

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

  • Флаги: AI_ENABLED, ANTHROPIC_API_KEY, AI_MODEL. Модель вызывается с низким уровнем рассуждения, ответ — до 1200 токенов. Запись «AI» в журнале действий — tool=select.
  • Выборка после разбора — те же пределы, что у конструктора: до 5000 строк, до 8 условий, 20 с на запрос.

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

  • API: POST /api/v1/ai/select (text 2–500, fragment_ids до 500, bbox «запад,юг,восток,север») → confidence, note, spec, description, items, total, truncated, total_length_m; error — запрос модели не прошёл проверку (конструктор всё равно заполняется).
  • Сервер: routers/ai.py, ai/tools.py (SelectPlan, build_fields_text, select_by_phrase), database/network_select.py, промпт ai/prompts/select.md.
  • Веб: components/NetworkSelectDialog.vue (ask), utils/networkSelect.ts (builderFromSpec).
  • Тесты: tests/utils/networkSelect.spec.ts; API — tests/test_network_select.py, tests/test_ai_tools_stage6.py; e2e — e2e/functions/ai.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо