Генерируйте структурированные JSON-схемы из образца данных с помощью ИИ, с автоматической самокоррекцией и интеллектуальной постобработкой.
Генерация схемы превращает необработанные данные сущности в типизированную аннотированную JSON-схему, которая точно определяет, какую информацию извлекать в ходе обогащения. Вместо того чтобы писать схемы вручную, вы вставляете образец JSON и позволяете ИИ проанализировать структуру, определить типы, назначить области экспертизы и предложить улучшения.
Генерация — это не один большой промпт, а последовательность небольших узконаправленных вызовов, большинство из которых выполняются параллельно. Именно это позволяет маленьким и дешёвым моделям выдавать пригодную схему: каждый вызов отвечает на один узкий вопрос о материале, который целиком помещается у него перед глазами.
"8.275 h" становится half_life_seconds: 29790), а дата, которую не вмещает ни один встроенный тип, — в целочисленный год. Каждое встреченное значение должно подтвердить это, иначе свойство остаётся текстом. Сохраняется именно переписанный образец.{"en": "...", "fr": "..."}) сворачиваются в одно многоязычное значение.Каждый шаг повторяется самостоятельно (3 попытки), и его ответы накапливаются между попытками, поэтому модель, отвечающая фрагментами, всё равно сходится к результату. После этого шаг принимает то, что получил, а пропуски заполняются детерминированно — слабая модель ухудшает описания, но не срывает генерацию. Прервать весь запуск могут только идентификация и маршрутизация по домену экспертизы. Каждый вызов тарифицируется и логируется как отдельный промпт, поэтому запись показывает, на что именно и сколько было потрачено.
Вместо одного образца вы можете передать несколько образцов сущности одного типа — тогда схема охватывает объединение их полей, всё, что отсутствует в каком-либо образце, становится допускающим null, а встречающиеся в них значения превращаются в реальные примеры. Имена полей должны совпадать: образцы, описывающие сущности разных типов, отклоняются, как и объекты внутри массива, не имеющие ни одного общего поля, поскольку тогда не останется ничего, что позволяло бы идентифицировать их строки. Редактор образцов укажет на любое такое расхождение до того, как вы потратите генерацию.
Значения, содержащие собственную единицу измерения, преобразуются в числа до вывода схемы, поскольку столбец из "8.275 h" и "85 ms" нельзя отсортировать, отфильтровать по диапазону или агрегировать. Единица измерения переносится в имя свойства (half_life_seconds), нечисловая замена вроде "stable" становится null, а даты ранее 1 года превращаются в целочисленный год (отрицательный для дат до н. э.), который не способен хранить ни один тип даты и который текст сортирует неправильно. Панель образца обновляется соответствующим образом, поэтому всегда показывает образец, описываемый схемой. Всё, что преобразование не может прочитать с уверенностью, остаётся точно таким, каким вы его написали.
Поскольку каждый шаг отвечает на один узкий вопрос, и исправление может быть узким: валидатор шага сохраняет всё пригодное из полученного и повторно запрашивает только недостающее. Ничего не генерируется с нуля, поэтому частично верный ответ — это прогресс, а не потраченная впустую попытка.
Восемь правил валидации по-прежнему применяются к собранной схеме как финальная проверка: корректность типов, назначение областей экспертизы, целостность ссылок, полнота. На этом этапе они служат страховкой, а не механизмом исправления. Подробнее о каждом правиле — в руководстве Правила валидации.
Сгенерированная схема — это больше, чем простое определение типов. Каждое свойство включает метаданные, которые направляют процесс обогащения:
Тип схемы JSON (string, number, integer, boolean, array, object)
Контекстное описание, которое указывает ИИ, какую информацию искать
Какая экспертная область (финансовая, нормативная и т. д.) предоставляет это значение
Участвует ли это поле в идентификации экземпляра. Идентифицирующие свойства решают сразу две задачи: фокусируют промпт обогащения на нужной сущности и служат основой для сопоставления элементов массива при слиянии. При этом такое поле может быть nullable — уточнение, различающее похожие соседние элементы, остаётся идентифицирующим, даже если у целых групп его действительно нет
Если значения строки берутся из небольшого устоявшегося набора (статусы, оценки, коды классификации), генерация предлагает элементы набора — в том же написании, что и в ваших примерах, — как открытый словарь, к которому сходится обогащение. Значения, встреченные за пределами списка, появляются в редакторе как кандидаты, а вы закрываете набор, когда он перестаёт пополняться; закрытый набор становится жёстким контрактом, за пределы которого обогащение выйти не может
Может ли поле быть null — поля, не допускающие null, обязательны для внесения в базу данных
Должно ли поле обогащаться на нескольких языках
Оставить ли исходное значение без изменений во время обогащения
Реалистичные примеры значений, которые направляют ИИ к правильному формату
Машинно проверяемая форма строковых значений: некорректные ответы отклоняются и запрашиваются заново, а сохранённые значения приводятся к канонической форме. Генерация назначает только тот именованный формат (date, time, date-time, uuid, email, uri, ipv4, ipv6), который подтверждён образцами: регулярное выражение — это предсказание о значениях, которых ещё никто не видел, и ошибочное выражение сломает каждое обогащение поля, поэтому его вы добавляете сами в редакторе
ИИ группирует свойства схемы по областям экспертизы на основе их семантического значения. Например, схема фармацевтической компании может иметь такие области, как «Финансовый аналитик», «Эксперт по нормативным вопросам» и «Корпоративная информация». Эти области используются стратегией мульти-экспертизы для выполнения параллельных специализированных вызовов LLM ради более глубоких результатов.
Количество областей экспертизы автоматически ограничивается на основе числа свойств ваших данных, чтобы предотвратить чрезмерное дробление:
После сборки фрагментов детерминированные шаги решают всё, что не следует оставлять модели, — опираясь на ваши фактические входные данные:
Поле, отсутствующее или равное null хотя бы в одном образце, становится обнуляемым независимо от ответа модели, поэтому неизвестное значение — это допустимый ответ, а не сбой качества данных. Образцы могут только расширять: несколько образцов доказывают наличие поля лишь для этих экземпляров, но никогда — для всех экземпляров типа; поэтому модель тоже голосует, и оба результата объединяются по ИЛИ.
Несовместимые атрибуты согласуются по правилам, а не повторным запросом: preserve побеждает multilingual и nullable, сохранившийся закрытый словарь снимает multilingual, а ключевое свойство никогда не сохраняет enum.
Для каждого объекта внутри массива гарантируется хотя бы одно ключевое свойство — именно по нему слияние выполняет дедупликацию, поэтому элемент массива без ключа сделал бы объединение ответов двух моделей невозможным.
Все уникальные области экспертизы собираются из схемы для метрик и настройки стратегии.
Схема описывает саму себя на некотором языке — имена типов, описания свойств, названия доменов экспертизы и подсказки. Это не то же самое, что языки, на которые вы обогащаете. Укажите язык при генерации или не указывайте — тогда решает язык имён свойств в вашем образце: французский образец больше не порождает английскую схему. Выбор сохраняется, поэтому последующие правки ИИ продолжают писать на том же языке, а не скатываются обратно к английскому.
Чтобы начать, данные-образцы не нужны. Опишите нужный образец обычными словами — тип сущности, какие свойства он должен нести, какого размера и глубины, — при желании приложите документы как основу или включите веб-поиск для сверки с реальностью, и платформа напишет образцы за вас. Запросите несколько — и получите несколько разных экземпляров, а не один и тот же в разных формулировках.
Первый образец в том же запросе определяет и то, о ком будут остальные. Если N раз независимо просить «пример», вы стабильно получите один и тот же известный экземпляр N раз; именно перечисление всего состава заранее делает образцы разными.
Остальные образцы генерируются параллельно по структуре образца 1 как по контракту, а не просто с просьбой ей соответствовать, — поэтому вариант не может переименовать, добавить или убрать поле. Те, что всё же вернулись дублирующимися или некорректными, запрашиваются заново в ограниченной волне повторов, и если полное количество не достигнуто, вам об этом сообщат, а не молча выдадут меньше.
Все требования вашего запроса выполняются — ограничение размера важнее стремления генератора быть исчерпывающим, а запрошенная вами структура важнее структуры по умолчанию, — либо в ответе указывается, что именно выполнить не удалось и почему; ничего не отбрасывается молча. Одно не относится к запросу: количество получаемых образцов задаётся числом образцов, и каждый образец — ровно один экземпляр; просьба выдать «три образца» в тексте никогда не даст список, обёрнутый в один объект. Если запрос действительно неоднозначен (тип сущности допускает несколько прочтений, две несовместимые области охвата), генератор задаст вам вопрос, прежде чем тратить генерацию, а не станет гадать. Язык по умолчанию — auto: он определяется по словам самого запроса, а затем по приложенному документу.
Прочитайте имя свойства в контексте родительского объекта и сосчитайте, сколько разных вещей оно может запрашивать. Одна — значит, всё ясно. Две или больше — и каждая модель остановится на своей, так что в колонке смешаются ответы на разные вопросы: annual_revenue у компании может относиться к группе или к самой сущности, быть валовой или чистой, в одной из нескольких валют. Ни одной — имя того, чего у этого родителя попросту нет, — ещё хуже: искать нечего, и модель выдумывает значение.
Генерация борется с этим дважды: сам промпт требует имён, допускающих единственное прочтение, а последующий проход по готовой схеме отмечает те, что этому всё же не соответствуют. На этом этапе средство исправления — переименование: описания были сгенерированы из имён, поэтому описание не может устранить неоднозначность имени, из которого оно получено, и от схемы пока ничего не зависит. Генерация образца выполняет ту же проверку для образца и применяет переименования ещё до того, как вы его увидите. Свободный текст — описание, резюме, заметки — никогда не помечается: формулировки различаются, но заданный вопрос ясен.
Отмеченные свойства получают значок «неоднозначно» в редакторе рабочих процессов со списком прочтений, которые допускает имя. Как только схема запущена, средством исправления становится переписанное описание: оно закрепляет одно значение, не нарушая контракт данных. Полный набор критериев и способов исправления см. в руководстве Проверка неоднозначности.
При генерации образца сущности по описанию вы можете включить «Использовать веб-поиск», чтобы модель находила актуальные факты в интернете, а не опиралась только на данные обучения. Так значения в образце получаются свежее и точнее — особенно для быстро меняющихся фактов вроде цен, численности персонала или недавних релизов. Опция доступна только для моделей, чей провайдер поддерживает встроенный веб-поиск, а поисковые вызовы тарифицируются провайдером так же, как и любое другое использование модели.
После генерации вы можете изменять схемы с помощью инструкций на естественном языке. Введите команду, и ИИ применит изменение, сохраняя существующую структуру схемы. Каждое редактирование также создаёт 5 рекомендаций по дальнейшим улучшениям.
Добавить целочисленное поле employee_countСоздать вложенный объект адреса с городом и странойДобавить французские описания ко всем текстовым полямОпределите ссылку на материнскую компанию с помощью $defsОтметьте поле веб-сайта как допускающее nullПравки ИИ проверяются с помощью части правил генерации (проверка типов, целостность ссылок, согласованность экспертизы) без сравнения с входными данными, поскольку вы можете намеренно добавлять или удалять поля.
И генерация схемы, и редактирование с помощью ИИ дают 5 целевых предложений, охватывающих разные категории улучшений:
Предложения появляются в виде кликабельных чипов в Workflow Editor — нажмите на один из них, чтобы автоматически заполнить поле AI-правки и применить её.