Внешняя обработка для типовой УТ 11.5, которая проверяет запросы, написанные нейросетью. Внутри 30 заданий на языке запросов, у каждого эталонный запрос. Запрос модели выполняется на вашей базе и сверяется с эталоном построчно.
Зачем это нужно: запрос, который упал с ошибкой, виден сразу. Опасен запрос, который выполнился без замечаний и вернул правдоподобное, но неверное число. В нашем прогоне из 90 запросов по памяти 35 упали с ошибкой, а 12 выполнились и вернули не те строки. Глазами второе не ловится.
Что делает
- Собирает промпт. Правила ответа плюс все 30 заданий. С флажком "С описанием объектов" к каждому заданию дописываются реквизиты, измерения, ресурсы и табличные части нужных объектов прямо из метаданных вашей базы, с типами.
- Принимает ответ модели. Промпт можно отдать в любой чат и вставить ответ обратно. Если модель доступна по OpenAI-совместимому адресу (Ollama, LM Studio, облачный сервис), обработка сама отправит задания по одному и соберёт ответ.
- Сверяет с эталоном. Эталон и запрос модели выполняются на одной базе с одними параметрами периода. Колонки ищутся по именам из задания, порядок строк не важен, числа сравниваются с округлением до двух знаков, строки сравниваются как мультимножество.
- Показывает статус по каждому заданию: "верно", "не те строки", "ошибка" с текстом ошибки платформы, "нет ответа", "эталон не выполнился". Внизу рядом текст задания, запрос модели и эталон.
Что покрывают задания
Справочники и реквизиты, перечисления и ПРЕДСТАВЛЕНИЕ, срезы периодического регистра, виртуальные таблицы остатков и оборотов, ключи аналитики в регистрах продаж, табличные части документов, соединения, строковые функции. Задания хранятся в JSON на отдельной странице обработки: можно дописать свои под доработки своей конфигурации, со своим эталоном.
Что учесть до запуска
Запросы модели выполняются с вашими правами. Запрос без отборов по большой таблице может идти долго, поэтому замер лучше делать на копии базы, а не в рабочей базе в разгар дня. Период задайте так, чтобы в него попали продажи и движения: задание с пустым эталоном ничего не проверяет. На релизах, где регистра ЦеныНоменклатуры25 ещё нет, четыре задания про цены получат статус "эталон не выполнился" и в счёт модели не пойдут.
На чём проверялась
УТ 11.5.22, платформа 8.3.27, клиент-серверный вариант. Сам стенд проверен тремя контрольными прогонами: эталоны, поданные как ответ, дают 30 верных из 30; ответ без запросов даёт 30 "нет ответа"; набор с намеренной порчей (старый регистр цен, перечисление строкой, снятый отбор групп, опечатка в СГРУППИРОВАТЬ) ловится ровно на испорченных заданиях. Сверка 30 заданий занимала от 0,5 до 1 секунды. Затем прогнаны три модели в двух режимах, результаты в статье.
Что в файле
Архив: внешняя обработка на управляемых формах и файл заданий в JSON (задания вшиты и в саму обработку). Открывается через "Файл - Открыть". Код открыт.
Какие ошибки модели делают в типовой УТ, где описание метаданных в промпте помогает и где вредит, как выглядит запрос, сложивший приход с расходом, - в статье-паровозе к этой обработке: "Запросы нейросети к УТ: какие выполняются и врут".
Если нейросети нужна структура вашей конфигурации файлом, пригодится "Выгрузка метаданных для LLM", а если запросы стали работать медленно - "Чек-ап СУБД под 1С".
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.67
Вступайте в нашу телеграмм-группу Инфостарт