ИИ-генерация схемы

Генерируйте структурированные JSON-схемы из образца данных с помощью ИИ, с автоматической самокоррекцией и интеллектуальной постобработкой.

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

Генерация схемы превращает необработанные данные сущности в типизированную аннотированную JSON-схему, которая точно определяет, какую информацию извлекать в ходе обогащения. Вместо того чтобы писать схемы вручную, вы вставляете образец JSON и позволяете ИИ проанализировать структуру, определить типы, назначить области экспертизы и предложить улучшения.

Конвейер генерации

Генерация — это не один большой промпт, а последовательность небольших узконаправленных вызовов, большинство из которых выполняются параллельно. Именно это позволяет маленьким и дешёвым моделям выдавать пригодную схему: каждый вызов отвечает на один узкий вопрос о материале, который целиком помещается у него перед глазами.

  1. Канонизация образца (без LLM) — значение с собственной единицей измерения превращается в число с единицей в имени ("8.275 h" становится half_life_seconds: 29790), а дата, которую не вмещает ни один встроенный тип, — в целочисленный год. Каждое встреченное значение должно подтвердить это, иначе свойство остаётся текстом. Сохраняется именно переписанный образец.
  2. Разграничение идентичности — один вызов, выполняемый раньше всех остальных, потому что он последний, кому разрешено менять ваш образец. Если элемент связанного массива смешивает факты о самой сущности с фактами о её связи с родителем, элемент перестраивается: факты о связи остаются на месте, а собственные факты сущности вкладываются в именованный подобъект. Без этого оба вида фактов делят одну идентичность.
  3. Построение каркаса (без LLM) — дерево свойств, типы JSON и допустимость null берутся напрямую из примера(-ов); структура, повторяющаяся в нескольких местах, становится переиспользуемым определением, а объект, встречающийся лишь в одном месте, получает его только тогда, когда проверка связей распознаёт в нём сущность. Локализованные объекты (например, {"en": "...", "fr": "..."}) сворачиваются в одно многоязычное значение.
  4. Задайте параллельные вопросы — отдельные одновременные запросы определяют идентичность и наименование сущности, поведенческие флаги (ключ, сохранение, многоязычность, допустимость null, а также предложения по формату), действительно ли целочисленные поля дискретны, какие строки берутся из закрытого словаря и как свойства распределяются по областям экспертизы.
  5. Написание документации — по одному вызову на экспертную область, в роли специалиста этой области, с описанием и примерами для каждого свойства — а также с собственным вторым мнением о том, может ли значение действительно отсутствовать.
  6. Сборка, проверка, сохранение (без LLM) — фрагменты объединяются, 8 правил валидации срабатывают как страховка, детерминированная постобработка устраняет конфликты флагов, и схема сохраняется — с дедупликацией по хешу содержимого, поэтому одинаковые схемы не дублируются.

Каждый шаг повторяется самостоятельно (3 попытки), и его ответы накапливаются между попытками, поэтому модель, отвечающая фрагментами, всё равно сходится к результату. После этого шаг принимает то, что получил, а пропуски заполняются детерминированно — слабая модель ухудшает описания, но не срывает генерацию. Прервать весь запуск могут только идентификация и маршрутизация по домену экспертизы. Каждый вызов тарифицируется и логируется как отдельный промпт, поэтому запись показывает, на что именно и сколько было потрачено.

Вместо одного образца вы можете передать несколько образцов сущности одного типа — тогда схема охватывает объединение их полей, всё, что отсутствует в каком-либо образце, становится допускающим null, а встречающиеся в них значения превращаются в реальные примеры. Имена полей должны совпадать: образцы, описывающие сущности разных типов, отклоняются, как и объекты внутри массива, не имеющие ни одного общего поля, поскольку тогда не останется ничего, что позволяло бы идентифицировать их строки. Редактор образцов укажет на любое такое расхождение до того, как вы потратите генерацию.

Значения, содержащие собственную единицу измерения, преобразуются в числа до вывода схемы, поскольку столбец из "8.275 h" и "85 ms" нельзя отсортировать, отфильтровать по диапазону или агрегировать. Единица измерения переносится в имя свойства (half_life_seconds), нечисловая замена вроде "stable" становится null, а даты ранее 1 года превращаются в целочисленный год (отрицательный для дат до н. э.), который не способен хранить ни один тип даты и который текст сортирует неправильно. Панель образца обновляется соответствующим образом, поэтому всегда показывает образец, описываемый схемой. Всё, что преобразование не может прочитать с уверенностью, остаётся точно таким, каким вы его написали.

Самокоррекция, шаг за шагом

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

Пример: этап флагов на 30 свойствах

Попытка 1Модель отвечает по 22 из них и разбивает ответ на несколько вызовов инструментов — частый сбой у небольших моделей. Все 22 сохраняются.
ПовторитьПовторный запрос касается только 8 оставшихся свойств — вопрос короче, и на него с большей вероятностью ответят целиком.
Попытка 2Приходят ещё 6. Последние 2 откатываются к детерминированным значениям по умолчанию, а нехватка фиксируется в записи о генерации, а не приводит к её сбою.

Восемь правил валидации по-прежнему применяются к собранной схеме как финальная проверка: корректность типов, назначение областей экспертизы, целостность ссылок, полнота. На этом этапе они служат страховкой, а не механизмом исправления. Подробнее о каждом правиле — в руководстве Правила валидации.

Что содержит схема

Сгенерированная схема — это больше, чем простое определение типов. Каждое свойство включает метаданные, которые направляют процесс обогащения:

Тип

Тип схемы JSON (string, number, integer, boolean, array, object)

Описание

Контекстное описание, которое указывает ИИ, какую информацию искать

Экспертиза

Какая экспертная область (финансовая, нормативная и т. д.) предоставляет это значение

Идентифицирующее

Участвует ли это поле в идентификации экземпляра. Идентифицирующие свойства решают сразу две задачи: фокусируют промпт обогащения на нужной сущности и служат основой для сопоставления элементов массива при слиянии. При этом такое поле может быть nullable — уточнение, различающее похожие соседние элементы, остаётся идентифицирующим, даже если у целых групп его действительно нет

Словарь значений

Если значения строки берутся из небольшого устоявшегося набора (статусы, оценки, коды классификации), генерация предлагает элементы набора — в том же написании, что и в ваших примерах, — как открытый словарь, к которому сходится обогащение. Значения, встреченные за пределами списка, появляются в редакторе как кандидаты, а вы закрываете набор, когда он перестаёт пополняться; закрытый набор становится жёстким контрактом, за пределы которого обогащение выйти не может

Допускает null

Может ли поле быть null — поля, не допускающие null, обязательны для внесения в базу данных

Многоязычный

Должно ли поле обогащаться на нескольких языках

Сохранить

Оставить ли исходное значение без изменений во время обогащения

Примеры

Реалистичные примеры значений, которые направляют ИИ к правильному формату

Формат / Шаблон

Машинно проверяемая форма строковых значений: некорректные ответы отклоняются и запрашиваются заново, а сохранённые значения приводятся к канонической форме. Генерация назначает только тот именованный формат (date, time, date-time, uuid, email, uri, ipv4, ipv6), который подтверждён образцами: регулярное выражение — это предсказание о значениях, которых ещё никто не видел, и ошибочное выражение сломает каждое обогащение поля, поэтому его вы добавляете сами в редакторе

Определение области экспертизы

ИИ группирует свойства схемы по областям экспертизы на основе их семантического значения. Например, схема фармацевтической компании может иметь такие области, как «Финансовый аналитик», «Эксперт по нормативным вопросам» и «Корпоративная информация». Эти области используются стратегией мульти-экспертизы для выполнения параллельных специализированных вызовов LLM ради более глубоких результатов.

  1. 1Перегруппировывает таблицу по области экспертизы каждого свойства
  2. 2Свойства, на которые отвечает этот один экспертный вызов
  3. 3Персона, назначаемая этому вызову
Область экспертизы — это атрибут каждого свойства, а не способ отображения: переключатель лишь меняет расположение элементов. Фраза рядом с названием области — это роль, которая задаётся её вызову обогащения, а число — сколько свойств должен закрыть этот единственный вызов.

Ограничения на количество областей

Количество областей экспертизы автоматически ограничивается на основе числа свойств ваших данных, чтобы предотвратить чрезмерное дробление:

5 свойств
1 домен
12 свойств
2 области
30 свойств
5 областей
60 свойств
10 доменов

Постобработка

После сборки фрагментов детерминированные шаги решают всё, что не следует оставлять модели, — опираясь на ваши фактические входные данные:

Расширение типа до nullable

Поле, отсутствующее или равное null хотя бы в одном образце, становится обнуляемым независимо от ответа модели, поэтому неизвестное значение — это допустимый ответ, а не сбой качества данных. Образцы могут только расширять: несколько образцов доказывают наличие поля лишь для этих экземпляров, но никогда — для всех экземпляров типа; поэтому модель тоже голосует, и оба результата объединяются по ИЛИ.

Разрешение конфликтов флагов

Несовместимые атрибуты согласуются по правилам, а не повторным запросом: preserve побеждает multilingual и nullable, сохранившийся закрытый словарь снимает multilingual, а ключевое свойство никогда не сохраняет enum.

Восстановление ключей элементов массива

Для каждого объекта внутри массива гарантируется хотя бы одно ключевое свойство — именно по нему слияние выполняет дедупликацию, поэтому элемент массива без ключа сделал бы объединение ответов двух моделей невозможным.

Коллекция экспертиз

Все уникальные области экспертизы собираются из схемы для метрик и настройки стратегии.

Язык, на котором написана схема

Схема описывает саму себя на некотором языке — имена типов, описания свойств, названия доменов экспертизы и подсказки. Это не то же самое, что языки, на которые вы обогащаете. Укажите язык при генерации или не указывайте — тогда решает язык имён свойств в вашем образце: французский образец больше не порождает английскую схему. Выбор сохраняется, поэтому последующие правки ИИ продолжают писать на том же языке, а не скатываются обратно к английскому.

Генерация самих примеров

Чтобы начать, данные-образцы не нужны. Опишите нужный образец обычными словами — тип сущности, какие свойства он должен нести, какого размера и глубины, — при желании приложите документы как основу или включите веб-поиск для сверки с реальностью, и платформа напишет образцы за вас. Запросите несколько — и получите несколько разных экземпляров, а не один и тот же в разных формулировках.

  1. 1Запрос: вид сущности, свойства, ограничение размера
  2. 2Сколько экземпляров вы получите — но не сколько полей
  3. 3В режиме «Авто» модель сама выбирает соглашение об именовании
«Типичные примеры» — это место, где вы называете экземпляры, которые уже имеете в виду: по одному на образец, в том же порядке; оставленные пустыми поля будут придуманы за вас.

Все экземпляры выбираются сразу

Первый образец в том же запросе определяет и то, о ком будут остальные. Если N раз независимо просить «пример», вы стабильно получите один и тот же известный экземпляр N раз; именно перечисление всего состава заранее делает образцы разными.

Первый образец задаёт структуру

Остальные образцы генерируются параллельно по структуре образца 1 как по контракту, а не просто с просьбой ей соответствовать, — поэтому вариант не может переименовать, добавить или убрать поле. Те, что всё же вернулись дублирующимися или некорректными, запрашиваются заново в ограниченной волне повторов, и если полное количество не достигнуто, вам об этом сообщат, а не молча выдадут меньше.

Ваш запрос обязателен к исполнению — а при необходимости на него ответят уточняющими вопросами

Все требования вашего запроса выполняются — ограничение размера важнее стремления генератора быть исчерпывающим, а запрошенная вами структура важнее структуры по умолчанию, — либо в ответе указывается, что именно выполнить не удалось и почему; ничего не отбрасывается молча. Одно не относится к запросу: количество получаемых образцов задаётся числом образцов, и каждый образец — ровно один экземпляр; просьба выдать «три образца» в тексте никогда не даст список, обёрнутый в один объект. Если запрос действительно неоднозначен (тип сущности допускает несколько прочтений, две несовместимые области охвата), генератор задаст вам вопрос, прежде чем тратить генерацию, а не станет гадать. Язык по умолчанию — auto: он определяется по словам самого запроса, а затем по приложенному документу.

Проверка неоднозначности

Прочитайте имя свойства в контексте родительского объекта и сосчитайте, сколько разных вещей оно может запрашивать. Одна — значит, всё ясно. Две или больше — и каждая модель остановится на своей, так что в колонке смешаются ответы на разные вопросы: annual_revenue у компании может относиться к группе или к самой сущности, быть валовой или чистой, в одной из нескольких валют. Ни одной — имя того, чего у этого родителя попросту нет, — ещё хуже: искать нечего, и модель выдумывает значение.

Генерация борется с этим дважды: сам промпт требует имён, допускающих единственное прочтение, а последующий проход по готовой схеме отмечает те, что этому всё же не соответствуют. На этом этапе средство исправления — переименование: описания были сгенерированы из имён, поэтому описание не может устранить неоднозначность имени, из которого оно получено, и от схемы пока ничего не зависит. Генерация образца выполняет ту же проверку для образца и применяет переименования ещё до того, как вы его увидите. Свободный текст — описание, резюме, заметки — никогда не помечается: формулировки различаются, но заданный вопрос ясен.

Отмеченные свойства получают значок «неоднозначно» в редакторе рабочих процессов со списком прочтений, которые допускает имя. Как только схема запущена, средством исправления становится переписанное описание: оно закрепляет одно значение, не нарушая контракт данных. Полный набор критериев и способов исправления см. в руководстве Проверка неоднозначности.

При генерации образца сущности по описанию вы можете включить «Использовать веб-поиск», чтобы модель находила актуальные факты в интернете, а не опиралась только на данные обучения. Так значения в образце получаются свежее и точнее — особенно для быстро меняющихся фактов вроде цен, численности персонала или недавних релизов. Опция доступна только для моделей, чей провайдер поддерживает встроенный веб-поиск, а поисковые вызовы тарифицируются провайдером так же, как и любое другое использование модели.

  1. 1Только для моделей со встроенным поиском
  2. 2Смена модели здесь может сделать этот параметр недоступным
Флажок связан с моделью, выбранной прямо под ним: если у провайдера модели нет встроенного поиска, флажок станет неактивным и укажет причину, а не проигнорирует ваш выбор молча.

ИИ-редактирование схемы

После генерации вы можете изменять схемы с помощью инструкций на естественном языке. Введите команду, и ИИ применит изменение, сохраняя существующую структуру схемы. Каждое редактирование также создаёт 5 рекомендаций по дальнейшим улучшениям.

Примеры команд редактирования

Добавить целочисленное поле employee_count
Создать вложенный объект адреса с городом и страной
Добавить французские описания ко всем текстовым полям
Определите ссылку на материнскую компанию с помощью $defs
Отметьте поле веб-сайта как допускающее null

Правки ИИ проверяются с помощью части правил генерации (проверка типов, целостность ссылок, согласованность экспертизы) без сравнения с входными данными, поскольку вы можете намеренно добавлять или удалять поля.

Предложения ИИ

И генерация схемы, и редактирование с помощью ИИ дают 5 целевых предложений, охватывающих разные категории улучшений:

Полнота данныхОтсутствующие поля, которые могли бы обогатить вашу сущность
Качество данныхЗакрытые словари, допустимость null, исправления типов
СвязиВложенные структуры, ссылки на сущности через $defs
ИнтернационализацияМногоязычные переводы, поддержка локалей
Бизнес-контекстПоля, специфичные для области, и группировки по экспертным областям

Предложения появляются в виде кликабельных чипов в Workflow Editor — нажмите на один из них, чтобы автоматически заполнить поле AI-правки и применить её.

Дальнейшие шаги