katlog.orgжурнал разработки Демо-каталогДемо
ПР002
Задание для ИИ3 мин чтения

Задание целиком: поиск описания по ISBN

Мы много говорили о том, как ставить задачи ИИ-агенту. Здесь — настоящее задание, которое ушло агенту, с разбором: зачем каждая часть и что она предотвращает.

Функция «найти описание по ISBN» появилась в Katlog за одно задание. Агент выполнил его почти без замечаний. Мы считаем, что дело не в везении, а в том, как задание было написано. Вот его ключевые части — дословно, с небольшими сокращениями.

Первый шаг — сохранить задание

ПЕРВЫЙ ШАГ: сохрани это задание дословно в docs/katlog-lookup.md и веди там таблицу L1–L12 (сделано / не сделано / где в коде / как проверено). Не пропускай пункты.

Зачем: в прошлых заданиях агент терял список посреди работы. Файл в проекте не теряется, а таблица превращает отчёт из «всё готово» в проверяемый список.

Дубли — раньше внешнего поиска

L3. Проверка дублей до внешнего поиска: если запись с этим ISBN (в любой форме, 10 или 13) или DOI уже есть в каталоге, включая скрытые, показать: название, шифр, число экземпляров и кнопки «Добавить экземпляр к этой записи» и «Всё равно создать новую запись». Записи в корзине тоже упоминать.

Зачем: в каталоге уже 121 запись с повторяющимся ISBN. Если не проверять дубли первым шагом, удобная функция только умножит их.

Запись не сохраняется сама

L6. Кнопка «Заполнить форму» переносит данные в поля формы — НЕ сохраняет запись. Возле заполненных полей — отметка источника. Если поле формы уже заполнено вручную, спросить: заменить или оставить.

Зачем: чужое описание — заготовка, а не истина. Слово «НЕ» заглавными буквами — не крик, а защита от самого вероятного упрощения.

Безопасность — отдельным пунктом

L11. Эндпоинт поиска описания доступен только библиотекарю (проверка на сервере), с ограничением частоты и защитой от подделки запросов. Разрешены только исходящие запросы к адресам настроенных источников, никакие адреса из пользовательского ввода не запрашиваются.

Зачем: сервер, который по просьбе пользователя ходит в интернет, — классическая дыра. Если не написать об этом явно, агент может сделать «удобно», а не безопасно.

Проверка на конкретных примерах

L12. Проверь на примерах: ISBN 0-87969-711-3 (должен сработать дубль — эта книга уже есть в каталоге), любой ISBN немецкой книги, которого нет в каталоге, DOI 10.1038/171737a0, ISBN с неверной контрольной цифрой, недоступный источник.

Зачем: «протестируй» — слишком общее слово. Пять конкретных случаев, включая заведомо неправильный и сбойный, дают проверку, которую нельзя пройти формально.

Файл docs/katlog-lookup.md в проекте: исходное задание L1–L12
Задание сохранено в проекте дословно — по нему агент отчитывается пункт за пунктом.

Что получилось

В отчёте агент отметил все двенадцать пунктов, указал файлы и способ проверки — и отдельно перечислил, что проверить не смог: работу настоящего сканера и полный путь в браузере. Такой честный отчёт стал возможен потому, что задание прямо требовало графу «как проверено».

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