Проверка недетерминированности — документация Entity Enricher

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

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

Почему важна детерминированность

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, который вы вставляете для создания схемы, можно анализировать без сохранения состояния — вы получаете отчёт о рискованных именах свойств, при этом ничего не изменяется.

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

Чтение результатов

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

Аннотации следуют за свойством

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

Переключатель для каждой схемы

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

Схемы, сгенерированные из прикреплённых документов, изначально имеют отключённую проверку: их значения переносятся из исходного документа, поэтому вариативность знаний модели от прогона к прогону здесь неприменима.

Полезно знать

Заметки на вашем языке

Заметки анализатора пишутся на языке вашего интерфейса — французский пользователь видит объяснения на французском, японский — на японском. Предлагаемые имена свойств остаются на английском, в соответствии с соглашениями об именовании схем.

Анализ — это оплачиваемый вызов ИИ

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

Предотвращение действует и выше по потоку

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

Доступ через API и MCP

Проверка доступна программно:

ПоверхностноеОписание
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 для аутентификации и полного каталога инструментов.

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