Claude Certified Architect · Модуль 4 · Урок 4.4
Валидация, повторы и циклы обратной связи
Суть
Повтор с обратной связью об ошибке работает, только когда ошибка исправима (формат, структура). Если информации в документе нет — повтор не поможет: модель либо повторит null, либо выдумает значение.
Видимость и выборка
Поля вроде detected_pattern, calculated_total, conflict_detected дают семантическую видимость. Повтор должен включать исходный документ, неудачное извлечение и конкретные ошибки валидации. Подход «сначала выборка, потом пакет» максимизирует успех с первого раза и минимизирует дорогую переотправку.
func retryWithFeedback(client *Client, document, failedOutput string, errs []string) (*Response, error) {
messages := []Message{
{Role: "user", Content: document},
{Role: "assistant", Content: failedOutput},
{Role: "user", Content: "Извлечение не прошло валидацию. Конкретные ошибки:\n" +
strings.Join(errs, "\n") +
"\nИсправь ТОЛЬКО эти ошибки формата/структуры. " +
"Если информации нет в документе — верни null, не выдумывай."},
}
return client.CreateMessage(MessageRequest{Model: "claude-opus-4-8", Messages: messages})
}Anti-patterns
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
| Повторять, когда обязательное поле null из-за отсутствия данных | У модели нет нового — повторит null или выдумает | Различать ошибки формата/структуры (повтор помогает) и отсутствие данных (человек/null) |
| Повторять без конкретной ошибки валидации | Тот же промпт даёт тот же вывод — нет новой информации | Включать документ, неудачное извлечение и конкретные ошибки |
| Запускать пакет на 10 000 документов без выборки | Пробелы извлечения затронут все 10 000 — дорого переобрабатывать | Сначала выборка 10–20; починить, затем масштаб |
Exam traps
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
| Повтор для отсутствующей информации | Вызывает выдумывание | Принять null или направить человеку |
| Общий повтор без конкретики ошибки | Неэффективен | Конкретные ошибки в сообщении повтора |
| Большой пакет без проверки выборкой | Дорогие массовые сбои | Сначала выборка |
Практическое задание (T4)
- Реализовать повтор с обратной связью: включать исходный документ, неудачное извлечение и конкретные ошибки.
- Тест-кейсы: (a) несоответствие формата даты — повтор чинит; (b) отсутствует обязательное поле — повтор даёт выдумку или null, а не верный ответ.
- Добавить семантическую валидацию: проверка сумм позиций; поля
calculated_totalиconflict_detected. - Добавить
detected_patternк находкам ревью; отслеживать отклоняемые паттерны; выделить топ-3 ложных после 50 ревью. - Тест «выборка перед пакетом»: 10 документов, найти пробелы, починить промпт, затем 100 — измерить рост успеха с первого раза.
Проверка знаний
Извлечение структурированных данных
Доля null в publication_date — 15%: у 8% документов даты реально нет, у 7% нестандартный формат вроде «Published Spring 2023». Цикл повторов переотправляет все null. Что произойдёт?
Верный ответ: C
C верно. Несоответствия формата исправимы: повтор с «извлекай даты в ISO 8601, включая неформальные вроде ‘Spring 2023’ → ‘2023-01’» чинит 7%. 8% без дат повтором не исправить — либо null (верно), либо галлюцинация. A — повтор без новой информации не помогает. B слишком пессимистично. D опасно: вывод дат — это выдумывание.
Извлечение структурированных данных
Извлечение контрактов проваливает повторы 3 раза, остаётся 12% ошибок. Анализ выявил три причины: (A) заголовки разделов принимаются за содержимое пунктов, (B) многоабзацные пункты обрезаются на первом переносе строки, (C) перекрёстные ссылки извлекаются буквально вместо разрешения. Что сделать?
Верный ответ: B
B верно. Несколько разных причин требуют повтора по классификации: (A) промпт, отличающий заголовки от содержимого, (B) инструкции по продолжению абзацев, (C) шаг разрешения ссылок. A помогает согласованности, но не структурным недопониманиям. C помогает только B. D снижает ошибки на первом проходе, но не устраняет — повторы всё равно нужно нацеливать.
Извлечение структурированных данных
Валидатор-Claude проверяет качество извлечения, имея только извлечённый JSON и схему. Он одобряет извлечения, которые люди отклоняют. Причина?
Верный ответ: C
C верно. Валидатор без доступа к источнику принципиально ограничен: он проверяет лишь структурную валидность, а не фактическую точность (есть ли значения в документе). Люди отклоняют из-за неверных/галлюцинированных значений, не из-за структуры JSON. A — обратная проблема (он слишком мягок). B не объясняет систематического одобрения фактически неверного. D даёт структурные сбои, не фактические.