Обнаруживайте свойства схемы, значения которых различаются между моделями или между запусками, и исправляйте их, прежде чем они загрязнят ваши данные — ради обогащений, которые воспроизводимы, сопоставимы и точны.
Entity Enricher рассматривает LLM как запрашиваемые базы знаний. Это работает, только когда имя свойства закрепляет единственный воспроизводимый ответ. Свойство вроде annual_revenue этого не делает: за какой финансовый год? В какой валюте? В миллионах или единицах? Каждая модель — и каждый повторный запуск той же модели — вправе выбрать другой контекст, поэтому значения расходятся, даже когда ни одна модель не ошибается.
Нестабильные свойства вредят всему на последующих этапах: слияние нескольких моделей видит конфликты, которые на самом деле являются различиями в формулировке, а разброс стабильности бенчмарка расширяется по причинам, не имеющим ничего общего с качеством модели. Проверка недетерминированности находит такие свойства и подсказывает, как их зафиксировать.
Каждое отмеченное свойство относится к одной из четырёх причин, у каждой из которых своё средство исправления:
| Причина | Пример | Способ устранения |
|---|---|---|
| Временное | ceo, stock_priceceo_2025 | Изменяющийся факт без опорной даты — закрепите период или преобразуйте в массив с ключом по периоду. |
| Неоднозначно | annual_revenuerevenue_fy2024_usd_millions | Имя не фиксирует единицу измерения, валюту, период или охват — включите недостающие рамки в имя или описание. |
| Субъективное | reputationesg_risk_rating_sustainalytics | Нет объективной эталонной истины — замените измеримым показателем или фиксированной шкалой; иначе оно останется отмеченным как рекомендательное. |
| Многозначное | top_competitorstop_3_competitors_by_revenue | Несколько одинаково правильных ответов, обычно неограниченный список — ограничьте его и укажите критерий сортировки. |
Переименование — не единственное решение: для свойств схемы анализатор также предлагает исправление описания, которое закрепляет недостающий контекст. Более точное описание доходит до обогащающего ИИ точно так же, как и имя, но никогда не нарушает ваш контракт данных — поэтому это предпочтительное средство для уже используемых схем.
После генерации образца анализатор проверяет его. Однозначные переименования автоматически применяются к ключам, придуманным ИИ (но никогда к полям, названным вами), а структурные исправления передаются обратно генератору для не более чем двух раундов коррекции. Образцы, основанные на прикреплённых документах, пропускаются — их значения берутся из исходного документа, а не из памяти модели.
После сохранения сгенерированной схемы дополнительный проход помечает каждое свойство уровнем недетерминированности. Этот шаг выполняется по мере возможности: если он завершается неудачей, на саму генерацию это не влияет.
Кнопка повторной проверки анализирует только те свойства, у которых ещё нет аннотации, и переключается на полный повторный анализ, когда аннотированы все свойства.
Образец JSON, который вы вставляете для создания схемы, можно анализировать без сохранения состояния — вы получаете отчёт о рискованных именах свойств, при этом ничего не изменяется.
Проверка носит исключительно рекомендательный характер. Она никогда не блокирует генерацию, никогда не отклоняет обогащение, а её аннотации удаляются из каждого промпта, отправляемого моделям обогащения, — она информирует вас, а не ИИ.
Отмеченные свойства показывают значок «варьируется» в редакторе схем: янтарный для среднего риска, красный для высокого. При наведении на значок отображается заметка анализатора, объясняющая, что варьируется и почему. Свойства, признанные детерминированными, значка не имеют.
Вердикт выносится по имени и описанию свойства вместе — поэтому переименование свойства или изменение его описания сбрасывает его аннотацию. Редактор выделяет такие свойства как устаревшие и предлагает повторную проверку, которая анализирует только недостающее. Именно это вам нужно после применения предложенного переименования: повторная проверка подтверждает, детерминировано ли новое имя.
Проверку можно отключить для каждой схемы в дополнительном меню Редактора схем. Когда она отключена, проход после генерации пропускается, а значки, кнопка повторной проверки и предупреждения об устаревании скрываются. Существующие аннотации сохраняются (просто скрываются), а повторное включение проверки для схемы, которая никогда не анализировалась, запускает её автоматически.
Схемы, сгенерированные из прикреплённых документов, изначально имеют отключённую проверку: их значения переносятся из исходного документа, поэтому вариативность знаний модели от прогона к прогону здесь неприменима.
Заметки анализатора пишутся на языке вашего интерфейса — французский пользователь видит объяснения на французском, японский — на японском. Предлагаемые имена свойств остаются на английском, в соответствии с соглашениями об именовании схем.
Каждый анализ — это реальный (дешёвый) вызов модели, записываемый как отдельный промпт в записи и списываемый с кредитов, как любое другое использование ИИ. Инкрементальные повторные проверки оплачивают только фактически проанализированные свойства.
Самой генерации схемы предписано создавать детерминированные имена и описания (зафиксированные периоды, единицы измерения, критерии сортировки), поэтому большинство схем получаются чистыми, и анализатору остаётся отловить лишь единичные случаи.
Проверка доступна программно:
| Поверхностное | Описание |
|---|---|
POST /api/schema/analyze-sample | Анализирует вставленный образец JSON — отчёт без сохранения состояния, ничего не изменяется |
POST /api/schema/saved/{id}/analyze | Анализирует сохранённую схему и записывает аннотации — по умолчанию инкрементально, force=true повторно анализирует всё |
analyze_sample_determinism | Инструмент MCP — тот же отчёт по образцу без сохранения состояния из Claude или любого MCP-клиента |
analyze_schema_determinism | Инструмент MCP — аннотирует сохранённую схему; сочетайте с edit_schema, чтобы применить предложенное переименование |
См. Справочник API и руководство по MCP Server для аутентификации и полного каталога инструментов.