В этой статье
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 становится удобным помощником в цикле разработки, а не чёрным ящиком, которому приходится верить на слово.
Источники
- Working with writing blocks and code blocks in ChatGPTOpenAI Help Center
- Using Codex with your ChatGPT planOpenAI Help Center
- OpenAI for codingOpenAI