Почему проверенный JSON из ИИ бывает неверным
Нейросеть извлекла данные из документа, программа приняла JSON, проверка схемы прошла. Такой ответ всё ещё может содержать неверную валюту или дату. В автоматизации полезно заранее решить, с чем именно сравнивается каждое значимое поле.
Где остаётся ошибка
Учебный пример: в условном счёте указаны 12 000 рублей. Ответ содержит {"amount":12000,"currency":"USD"}. Схема требует числовую сумму, наличие обоих полей и разрешает валюты RUB и USD. Этот объект соответствует перечисленным ограничениям, хотя валюта расходится с исходным документом.
Проверка enum подтверждает, что значение входит в допустимый набор. Если в наборе две валюты, обе проходят это условие. Чтобы выбрать нужную для конкретного счёта, системе нужна информация из исходника.
Что проверяет каждый этап
Сначала парсер проверяет синтаксис JSON и разбирает текст в данные. В JavaScript для этого используют JSON.parse; при неверном синтаксисе он выдаёт SyntaxError.
Затем валидатор применяет JSON Schema. Можно задать типы, обязательные поля, допустимые значения и другие ограничения. При этом перечисление поля в properties само по себе не делает его обязательным: для этого нужен required. В простой схеме дополнительные поля можно запретить через additionalProperties со значением false.
Схема способна выражать и часть правил предметной области. Её возможности зависят от того, какие условия вы в неё заложили. Успешная проверка общей схемы с RUB и USD не устанавливает валюту конкретного исходного документа.
Как добавить сверку
Для такого извлечения я бы сохранял рядом с результатом исходный документ или нужный фрагмент, полученный напрямую из него. Перед дальнейшим действием проверял бы совпадение значимых полей. При расхождении запись можно направить на ручную проверку с понятной причиной, например "валюта отличается от исходника".
Полезно включить в набор учебных проверок ответ с правильными типами и неверным значением, пропущенное обязательное поле и лишнее поле. Так видно, какой этап должен остановить каждый случай. Это предложенный план, результаты эксперимента здесь не приводятся.
Проверка формата помогает программе принять данные предсказуемо. Сверка с источником добавляет основание доверять тем значениям, от которых зависит следующее действие.
Источники: официальная документация JSON Schema, разделы object и enum; MDN, справка JSON.parse.
#Нейросети #Автоматизация #Тестирование
Какие поля в ваших автоматизациях вы сверяете с исходником перед дальнейшей обработкой?