Извлечение данных из документов в JSON без слепого доверия модели
LLM может подготовить JSON-подобный ответ из текста договора, письма или заявки, но результат остаётся недоверенными данными. В TokenTool такой шаг можно выделить для учёта отдельным проектом и ключом, настроить лимит и разобрать технический результат по логам; схема, проверка источника и допуск к внешнему действию остаются в приложении.
Инфраструктурный слой
После подключения API начинается управление
Изоляция процесса
Отдельный проект и ключ не смешивают извлечение с другими AI-нагрузками.
Проверить поверхностьКонтроль расходов
Лимит настраивается для отдельного ключа или проекта до массовой обработки документов.
Проверить поверхностьТехнический след
Логи и статистика используются для статуса, модели и токенов, но не как хранилище документов.
Проверить поверхностьРабочий инструмент
Минимальный контракт извлечения
Пример структуры задания, а не обещание нативного JSON-режима.
| Поле | Правило | Ошибка |
|---|---|---|
| document_id | Строка из вашей системы | Не генерировать моделью |
| date | YYYY-MM-DD или null | Не угадывать по соседнему тексту |
| amount | Число и отдельная currency | Строка с символами отклоняется |
| category | Только значение из enum | Неизвестное значение → review |
| source_fragment_id | ID переданного фрагмента | Несуществующий ID отклоняется |
Сначала контракт полей
Опишите каждое поле до вызова модели: имя, тип, допустимый формат, максимальную длину, обязательность и правило для отсутствующего значения. Для даты задайте один формат, для суммы — валюту и разделитель, для enum — закрытый список. Не просите модель возвращать исходный документ внутри JSON.
Добавьте `source_fragment_id` или координаты фрагмента, если интерфейс должен показать основание извлечения. Поле уверенности модели не является доказательством; оно может помочь сортировать очередь проверки, но не заменяет сверку с источником.
Ответ как недоверенный ввод
После получения текста удалите внешнюю обёртку только по явному правилу, разберите JSON стандартным парсером и проверьте схему. Не исправляйте неизвестные поля, даты и суммы молча. Ошибка преобразования получает конечный статус `invalid_output`, а не бесконечный запрос «попробуй ещё раз».
Если конкретный клиент и модель поддерживают специальный structured-output режим, подтвердите его отдельным тестом. Эта страница не предполагает такой режим: базовая схема работает как запрос текстового ответа с последующим парсингом и валидацией в приложении.
Набор приёмочных документов
Возьмите реальные обезличенные типы: чистый документ, скан после OCR, отсутствующее обязательное поле, несколько кандидатов на одну сумму, исправление от руки и текст с инструкцией, пытающейся изменить задачу. Для каждого заранее зафиксируйте ожидаемые поля и допустимый статус отказа.
Измеряйте точность по полям, долю полностью валидных объектов и долю отправленных на review. Среднее по документам скрывает критичные ошибки: отдельно учитывайте даты, реквизиты и денежные значения. Не используйте production-документы в публичной аналитике или примерах страницы.
Расходы и безопасный запуск
Входные токены включают инструкцию, схему и текст документа. Разделение длинного документа на фрагменты меняет и стоимость, и риск потерять связь между полями. Посчитайте типичный, p90 и максимальный размер входа; запросы за пределами контекста должны останавливаться до отправки.
На первом этапе сохраняйте результат как черновик и требуйте подтверждение перед необратимым действием. Сравнивайте модели на одинаковой выборке, а model ID и тариф сверяйте в живом каталоге. Цена не показывает качество извлечения; важна стоимость объекта, прошедшего схему и проверку.
Порядок внедрения
- 01Описать схему и правила null до выбора модели.
- 02Собрать обезличенный набор сложных документов.
- 03Разбирать и валидировать ответ обычным кодом.
- 04Отправлять неоднозначные случаи в review.
- 05Считать стоимость полностью принятого объекта.
Перед запуском
- Типы и enum проверяет код
- Отсутствие данных не превращается в догадку
- Источник поля можно показать
- Повторы ограничены
- Production-документы не попадают в аналитику
- Необратимое действие требует отдельного допуска
Границы решения
- Страница не заявляет нативный structured-output режим для каждой модели.
- OCR, разметка таблиц и качество исходного текста влияют на результат до вызова LLM.
Начните с небольшого измеримого теста
Проверьте один сценарий, зафиксируйте результат и расходы, затем расширяйте нагрузку.