GPT для написания программ: как попросить код и проверить результат

В этой статье

GPT хорошо помогает с программой, если дать ему не тему вроде «напиши что-нибудь на Python», а контракт: что должно получиться, какие данные входят, какие ограничения действуют и как выглядит приемлемый ответ. Тогда модель может выдать небольшой рабочий пример, объяснить спорное место и предложить тест.

Но ответ в чате — не доказательство корректности. Модель могла неверно понять условие, выбрать неподходящий тип данных или не заметить крайний случай. Рабочий процесс поэтому выглядит так: постановка задачи → генерация → запуск на известных данных → проверка результата → уточнение запроса.

Сначала опишите результат, а не только технологию

Хороший запрос к GPT содержит несколько частей:

  • цель: что программа должна посчитать или изменить;
  • язык и версию, например Python 3.12;
  • входные данные и их формат;
  • ограничения: нельзя использовать внешние библиотеки, результат нужен в JSON, пустой список надо обработать отдельно;
  • формат ответа: код целиком, краткое объяснение, пример запуска;
  • просьбу добавить тесты и перечислить допущения.

Например, вместо «сделай программу для расходов» задайте задачу так:

Напиши программу на Python 3.12 без внешних библиотек. На входе список расходов [1200, 850, 430, 970]. Посчитай общую сумму и среднее значение, затем выведи расходы, которые выше среднего. Покажи полный код, пример вывода и два небольших теста. Отдельно объясни, что будет при пустом списке.

Такой запрос фиксирует границы. GPT не должен сам угадывать версию языка, источник данных и формат результата. Чем больше этих решений оставлено «между строк», тем больше времени уйдёт на разбор не кода, а чужих предположений.

Получите маленький пример, который можно запустить

Для этой задачи достаточно обычного чата с GPT. Код можно попросить оформить в кодовом блоке — так его проще читать, копировать и редактировать. В некоторых сценариях ChatGPT также доступен Preview, а Python можно запускать с просмотром вывода; конкретные кнопки зависят от плана, устройства, модели и доступности функции. OpenAI описывает работу с кодовыми блоками и writing blocks.

Один из подходящих вариантов ответа выглядит так:

def analyze_expenses(expenses: list[int]) -> tuple[int, float, list[int]]:
    if not expenses:
        raise ValueError("Список расходов не должен быть пустым")

    total = sum(expenses)
    average = total / len(expenses)
    above_average = [amount for amount in expenses if amount > average]
    return total, average, above_average


expenses = [1200, 850, 430, 970]
total, average, above_average = analyze_expenses(expenses)

print(f"Сумма: {total}")
print(f"Среднее: {average:.2f}")
print(f"Выше среднего: {above_average}")

Здесь функция возвращает три значения, а вывод оставлен снаружи. Это удобнее для тестирования: вычисление не связано намертво с print, и его можно вызвать с другим списком.

Если для регулярной работы с кодом нужен платный план ChatGPT, можно отдельно проверить карточку ChatGPT в Amber Market: в ней представлены месячные варианты Go, Plus и Pro x5/x20. Подключение оформляется на аккаунте покупателя, а условия конкретного плана нужно проверить в карточке перед заказом. Это не пополнение OpenAI API, не гарантия будущей цены и не условие корректности бесплатного примера.

Проверьте числа до проверки стиля

Сначала пересчитайте ожидаемый результат независимо от GPT. Для списка [1200, 850, 430, 970] сумма равна:

1200 + 850 + 430 + 970 = 3450

В списке четыре значения, значит среднее — 3450 / 4 = 862.5. Выше среднего находятся 1200 и 970; 850 и 430 в результат попасть не должны.

Ожидаемый вывод скрипта:

Сумма: 3450
Среднее: 862.50
Выше среднего: [1200, 970]

Теперь запустите файл локально:

python expenses.py

Если вывод отличается, не исправляйте случайную строку наугад. Сравните условие задачи, входные данные и формулу. Например, «выше среднего» означает строго >, а «не ниже среднего» означало бы >=. Эта граница меняет результат, когда один из расходов ровно равен среднему.

Попросите тесты и проверьте крайние случаи

Минимальная проверка должна включать не только исходный список:

assert analyze_expenses([10, 20, 30]) == (60, 20.0, [30])
assert analyze_expenses([5, 5]) == (10, 5.0, [])

try:
    analyze_expenses([])
except ValueError:
    pass
else:
    raise AssertionError("Пустой список должен вызвать ValueError")

Первый тест проверяет обычный случай, второй — ситуацию, когда все значения равны среднему и список результатов должен быть пустым. Третий проверяет явно выбранное поведение для пустого ввода. Если вы хотите другое поведение — например, возвращать 0 и 0.0, — это надо изменить в условии и тесте одновременно.

Полезный следующий запрос к GPT звучит так: «Проверь этот код на пустом списке, отрицательных значениях и нечисловом вводе. Не переписывай его молча: сначала перечисли проблемы и предложи варианты поведения». Просьба объяснить допущения здесь важнее ещё одного косметического рефакторинга.

Не путайте чат с кодовым агентом

Обычный чат может написать код по переданному контексту, но не получает автоматически доступ к вашему локальному репозиторию, терминалу или секретам. Если нужно разобрать существующую кодовую базу, запустить проверки и подготовить изменения в рабочем окружении, это уже сценарий отдельного coding agent. Codex предназначен для написания, проверки и доставки кода, но его локальные, IDE- и облачные возможности зависят от плана и настроек рабочего пространства; их нельзя приписывать любому диалогу в ChatGPT. Различия и сценарии Codex описаны в справке OpenAI.

В чат можно передавать небольшой фрагмент проекта, структуру каталогов и текст ошибки. Не вставляйте реальные ключи API, пароли, токены и персональные данные. Секрет заменяют маркером вроде API_KEY = "<ваш-ключ>", а локально подставляют через переменную окружения.

Когда генерации уже мало

OpenAI относит к таким сценариям не только генерацию нового файла: GPT может объяснить незнакомую функцию, предложить рефакторинг, набросать тесты, помочь найти причину ошибки или быстро собрать прототип. Но во всех случаях граница одна: модель предлагает изменение, а запуск и проверка остаются частью вашей разработки.

Если программа должна обращаться к GPT из собственной системы, это другой путь — через API с отдельными настройками, ключами и расходами. Для первого шага в таком сценарии пригодится пример первого запроса к GPT из Python. Для обычной просьбы написать локальный скрипт API не нужен.

Практический шаблон можно оставить себе:

Цель: …

Язык и версия: …

Входные данные: …

Ограничения: …

Нужный формат ответа: полный код, пример запуска и ожидаемый вывод.

Добавь тесты для обычного и крайнего случая. Перечисли допущения. Не используй секреты и внешние данные, которых нет в условии.

После ответа сохраните исходный запрос, код и фактический вывод. Тогда GPT становится удобным помощником в цикле разработки, а не чёрным ящиком, которому приходится верить на слово.

Источники

Есть следующая задача?Ещё по теме «Программирование» →