Извлечение структурированных данных упирается не в понимание, а в формат ответа
Когда просят модель вытащить из текста цены, даты или адреса и выдать их структурированным списком, задача кажется простой. Но модель часто выбирает не явно написанные значения, а переформулирует их сообразно контексту.
Например, в тексте может быть написано «доставка в течение трёх дней», а схема требует дату в формате YYYY-MM-DD. Модель поняла, что доставка будет через три дня, но не может вычислить дату без дополнительной информации (сегодняшнего числа). Она может попробаться вывести формат по примерам, но в целом будет следовать тексту, а не схеме.
Структурированный вывод как решение и его пределы
Технология структурированного вывода (structured output) помогла: модель может выдать гарантированно валидный JSON или другой формат. Но это не решает проблему интерпретации. Если схема требует число, а текст содержит описание, модель просто придумает число, потому что ей нужно заполнить поле.
Правильный подход требует нескольких шагов: сначала модель выделяет нужный фрагмент текста, потом отдельно парсит его в структуру, потом валидирует результат. Каждый шаг — отдельный запрос.
На практике это означает, что задача вытащить 10 полей из документа требует столько же запросов, сколько было раньше, когда извлечение было полностью ручным. Автоматизация упала на то, что ускорила начальный этап, но не избавила от структурирования.