Программирование с помощью нейросети: PDF как техзадание
Программирование с помощью нейросети по PDF начинается с разбора требований. Показываю, как получить проверяемый скрипт и не потерять исключения.
М
Марина
Контент-маркетолог LibraChat
7 мин чтения
Коротко: программирование с помощью нейросети по PDF удобно, когда требования спрятаны в документе: сначала выдели правила и исключения, потом попроси код и тесты для каждого спорного случая. Не вставляй файл с рабочими данными, если для задачи достаточно обезличенного фрагмента. Готовый скрипт запускай на копии файла.
«В отчёте должна быть одна строка на заказ». На четвёртой странице PDF уточнялось: возврат считается отдельной строкой. Эти два предложения легко прочитать как противоречие, если просить нейросеть сразу написать программу. Я разбирала похожую задачу для контентной команды: нужно было собрать еженедельную CSV-выгрузку заказов в таблицу для редактора. Сначала мы обсуждали синтаксис Python, хотя ошибку определял именно спорный пункт документа. Теперь я начинаю с него.
Что именно нужно извлечь из PDF до первой строки кода
PDF может быть спецификацией, учебником или сканом. Для статьи беру первый случай: в файле описан порядок обработки таблицы, а на выходе нужен небольшой скрипт. С учебником путь другой: сначала выбирают упражнение и проверяют, что автор разрешает использовать материал. Скан с нераспознанным текстом может потребовать ручной проверки каждой важной строки. Вид файла не гарантирует, что его содержимое прочитано без ошибок.
В моей учебной задаче входная CSV-таблица содержит `order_id`, `event`, `date` и `amount`. В PDF на восьми страницах говорится, что события `sale` и `refund` должны остаться разными строками, даты — в формате `ДД.ММ.ГГГГ`, а пустую сумму нельзя превращать в ноль. Для начинающего разработчика это уже достаточно данных, чтобы обсуждать функцию. Но не для её запуска на настоящей выгрузке: ещё надо знать, какие встречаются значения `event` и что делать с неправильной датой.
Я завожу маленькую таблицу требований. Она не заменяет PDF; она показывает, где у документа ещё нет однозначного ответа.
Фраза из задания · Правило для скрипта · Что уточнить у автора PDF
«Строка на заказ» — Сохранять идентификатор заказа — Возвраты объединять с продажей или выводить отдельно?
«Возврат отдельно» — Писать строку с `event=refund` — Как показывать частичный возврат?
«Дата в общем формате» — Преобразовать только известный формат входа — Что делать с пустой или невозможной датой?
«Сумму не менять» — Сохранить исходное значение — Пустое значение оставить пустым или пометить ошибкой?
В этом месте программирование с помощью нейросети перестаёт быть игрой в угадайку. Я прошу помощника не заполнять пробелы в спецификации своим вкусом. Пусть перечислит вопросы, которые меняют результат. Иногда это раздражает: хотелось получить код за одну минуту. Зато не приходится объяснять редактору, почему возврат исчез из отчёта.
Программирование с помощью нейросети: два запроса вместо одного
В LibraChat можно прикрепить PDF и попросить разобрать содержимое; сервис также помогает с кодом. Пример ниже — предлагаемый запрос, а не предъявление фактически полученного ответа или готового файла. Если документ содержит имена покупателей, сначала убери их или сделай учебный фрагмент без личных данных.
Первый запрос направлен на чтение задания:
«Прочитай прикреплённый PDF как техническое задание для обработки CSV. Выпиши только правила о структуре выходной таблицы, датах, возвратах и пустых значениях. Для каждого правила укажи страницу или фразу из документа. Отдельно перечисли противоречия и вопросы, которые нужно задать автору. Код пока не пиши».
Я сверяю выписанные правила с PDF. Если сервис ссылается на страницу, которой нет, или пересказывает пункт иначе, помечаю его на ручную проверку. Номер страницы полезен как маршрут, но не как доказательство точности. После уточнений появляется второй запрос:
«Напиши функцию на Python, которая принимает путь к CSV с полями `order_id`, `event`, `date`, `amount` и создаёт новую CSV по правилам ниже: [вставить подтверждённые правила]. Не перезаписывай исходный файл. Для неизвестного события и неверной даты возвращай понятную ошибку с номером строки. Добавь три проверки: продажа, возврат и пустая сумма. Покажи команду запуска и ожидаемую структуру выходного файла».
Обрати внимание на «не перезаписывай». Это не ритуальная предосторожность. Если первая версия скрипта ошибётся в трактовке суммы, исходник понадобится для сравнения. В задаче с договорами или клиентскими данными контрольная копия ещё важнее.
Как проверить код, когда ты не программист
Слова «скрипт работает» я не использую до запуска. Я могу заранее предложить проверку, но не подменяю ей результат. Для нашей таблицы нужны четыре маленьких входа: обычная продажа, возврат, пустая сумма и невозможная дата. Отдельный случай — два события с одним `order_id`. Именно он проверит, не схлопнул ли код строки по идентификатору.
Минимальная проба выглядит так:
Скопируй исходный CSV и оставь в копии пять строк без персональных данных.
Перед запуском запиши ожидаемый результат для каждой строки своими словами.
Запусти скрипт на копии и сравни число строк, поля и значения с ожиданием.
Для ошибки проверь сообщение: виден ли номер проблемной строки и осталось ли исходное значение доступным.
Только после этого обсуди расширение на весь файл с человеком, который отвечает за отчёт.
В документации Python стандартный модуль `csv` описывает чтение строк через `DictReader`; это полезно для файла с именованными колонками. Модуль `unittest` позволяет оформить случаи проверки как повторяемые тесты. Необязательно писать их с нуля: можно попросить нейросеть предложить тесты, а затем самому сопоставить ожидаемые значения с PDF. Тест, в котором неверно записан ожидаемый результат, не защитит от ошибки.
Отдельно проверь границу между текстом и числом. В выгрузке сумма может выглядеть как `1 250,00`, а код ожидать точку вместо запятой. Если программист незаметно превращает пустую ячейку в `0`, отчёт формально собирается, но меняет смысл: отсутствие данных становится нулевой продажей. В тестовой копии оставь один такой ряд и заранее напиши, что должно оказаться в выходном файле. PDF может описывать формат суммы в другой главе; найди этот пункт прежде, чем просить исправлять программу.
Ещё один маленький приём: сохрани рядом с пятью входными строками таблицу ожидаемых строк. Когда появится новая версия кода, прогоняй её на том же наборе. Это помогает заметить, что исправление даты случайно сломало возвраты. Если условие в PDF изменили, меняй и ожидаемые результаты, и саму функцию. Иначе старый тест станет препятствием для правильной новой версии.
Я смотрю на код ещё и глазами человека, который будет его запускать в следующий понедельник. Не нужно ли вручную менять путь внутри файла? Понятно ли, куда сохранится выход? Не появляется ли рядом таблица с тем же именем, но другой датой? Если ответ неочевиден, инструкция к запуску пока неполная. Попроси переписать её отдельно от самой программы.
Где PDF меняет решение, а где мешает
У PDF есть сильная сторона: в нём зафиксирована версия договорённости. Но документ может отставать от устного решения команды. Поэтому я отделяю три слоя: что сказано в PDF, что подтвердил владелец процесса, что предположила нейросеть. Смешать их легко, особенно когда ответ звучит уверенно. В отчёте об ошибке лучше написать «пункт 4.2 требует уточнения», чем молча выбрать удобную трактовку.
Полезный контроль перед отправкой скрипта коллеге:
В итоговом запросе перечислены подтверждённые правила, а открытые вопросы не скрыты.
Примеры включают исключение, а не только идеальную строку.
Выход пишется в новый файл; исходник остаётся доступен.
У скрипта есть инструкция запуска для конкретной операционной системы.
Результат сравнен с ожидаемым на маленьком наборе данных.
Если задача состоит не в обработке таблицы, а в создании PDF-отчёта, не смешивай две работы. Сначала проверь содержимое отчёта и поля, затем отдельно решай, каким инструментом собирать файл. Нейросеть может предложить код и объяснить ошибки, но не знает внутренних правил команды без переданного документа. В статье о нейросети для программиста есть другие варианты постановки задач. Перед переносом большого PDF в рабочий процесс загляни на страницу тарифов и проверь доступные тебе возможности.
В моём примере решающим оказался не синтаксис, а два предложения про заказ и возврат. Если тебе сейчас прислали PDF с требованиями, попробуй сегодня выписать из него одно спорное правило и составить пять проверочных строк. Потом попроси в чате код именно под эти подтверждённые правила. Так первый запуск покажет, что документ и программа говорят об одном и том же.