Вы уже пробовали писать код с помощью инструментов ИИ? В этой статье я поделюсь одним из своих первых опытов кодирования с помощью ИИ.
Предыстория
Делал я когда‑то кастомную систему управления файлами для моих задач. Делал я ее для себя. Для своего удобства в работе и не только. Но сейчас не про эту систему. А про то, что идеальным дополнением этой системы мог бы стать кастомный скриншотер, который обладал бы определенным набором функций редактирования и сохранения скриншотов.
Как у многих, у меня была дилемма: я мог написать простой скриншотер быстро (но он бы был слишком простой) или заморочиться и сделать весь необходимый функционал, но это заняло бы больше времени.
И, как часто бывает с задачами, которые делаются для себя и не приносят прямой выгоды (а может, и вовсе не принесут!), я задался вопросом: стоит ли тратить много времени на такой проект? В итоге идея кастомного скриншотера была отложена на неопределенный срок.
И вот теперь, когда появился GenAI, который пишет во много раз быстрее и знает много кода, я решил, что стоит испробовать его возможности для кастомного скриншотера. Благо я прекрасно знал все требования, которые у меня будут...
Краткое отступление: некоторые критикуют GenAI, дескать, хватит постить тут, как вы с помощью GenAI микро‑задачки решаете. Попробуйте с помощью GenAI тяжелый коммерческий монолит написать.
Отвечу на это так: писать тяжелые монолиты в большинстве случаев — это не самая удачная практика. И все инженерное IT сообщество стремится уйти от больших структур логики к малым, которые можно между собой компоновать. Отсюда появилось и ООП и микросервисы.
Мой скриншотер уж точно не претендует на звание сложного или большого приложения. Однако это самостоятельный модуль с законченным набором требований и user value.
Требования к софту (скриншотеру) кратко
Функциональные:
Скриншотер должен вызываться из внешней системы с параметрами для сохранения.
Скриншотер должен иметь функции рисования поверх стрелочек, прямоугольников, закрашенных прямоугольников, размытие части изображения, обрезка, смена цвета.
UI/UX:
Удобное меню (желательно в виде иконок).
Горячие клавиши отмены, отмены редактирования и сохранения.
Технические:
Скриншот экрана должен сниматься меньше чем за секунду.
Для сохранения должен использоваться стандартный формат png.
Окей, требования и понимание, зачем это нужно, есть. Это уже 50% успеха.
Но на чем заставить писать код GenAI?
Ведь большинство из них знают много языков. Для меня выбор пал на Python. Почему?
Моя задача не требовательна к ресурсам и скорости.
Я смогу проконтролировать код и понять, если где‑то идет конкретная халтура.
Когда я сам начал писать некоторые вещи на Python, меня больше всего радовало, что 80% решений (если не больше) уже лежит на Stackoverflow, т. е. в открытом доступе. т. е. нейросетки с большей вероятностью тоже знают все эти решения.
Какую GenAI выбрать для создания своего ПО?
ChatGPT, как самый популярный и возможно мощный?
Claude, который хвалят многие разработчики?
Copilot, от Microsoft?
Gemini, от Google?
Или что‑то еще?...
Мои впечатления от нейросеток в программировании.
Примечание 1: я описываю свой опыт на середину 2024. Сейчас уже вышло огромное количество обновлений и альтернатив. Хотя приведенные мной модели актуальны и в 2025 году.
Примечание 2: т.к. я не являюсь профессиональным программистом и программирую очень редко, то речь идет об LLM доступных через web UI, а не через API.
Я попробовал 3 из перечисленных в прошлом посте, а именно: ChatGPT4o, Claude 3.5 sonnet и Copilot, доступный по умолчанию в Edge.
Сopilot отпал сразу, так как на запрос о скриншотере и еще паре моих идей программ он давал весьма плохие и даже неполноценные ответы. Может быть дело в качестве моих промптов. Но с теми же промптами я пробовал и другие AI.
ChatGPT4o и Claude 3.5 sonnet — очень близко! Но на мой субъективный взгляд:
ChatGPT4o более творческий и отлично подходит для прототипирования приложения. Claude 3.5 sonnet более четкий и отлично подходит для допиливания приложения (хотя и для полного цикла работ отлично подходит).
Хотя на момент написания статьи (07.2025) я бы под данную задачу выбрал Claude Sonnet 4.
Какой промт нужен, чтобы ИИ создал для вас готовое ПО?
Как я описывал ранее, ChatGPT4o мне показался наиболее подходящим для старта создания приложения, поэтому покажу здесь версию, которую удалось с ним получить.
Я не знал, как лучше задать промпт к ИИ: в виде подробного описания требований сразу или же в духе цепочки рассуждений. Но так как моя задача не являлась оригинальной, то я начал с весьма простого запроса, понадеявшись, что ИИ меня поймет и выдаст мне решение для довольно стандартного скриншотера.
Мой первый запрос:
Write a python script that allows to make an instant screenshot with editing tools of the screenshot like: draw an arrow, draw a rectangle, blur an area, change color. The script should save screenshots to a folder wich is a parameter in command line.
Результат вы можете увидеть ниже. Собственно сам виноват. Какой был запрос, такой и ответ.
Поэтому уточняем, что мы хотим:
I need to specify: after screenshot is taken, I want to see a menu that offers me to draw a red arrow, red rectangle with my mouse, change color of previous tools and blur some rectangle area with my mouse. Please add those functions to the script.
И в ответ на второй запрос уже получаем внятное решение. Исправляем небольшую ошибку зависимостей и вуаля! Результат ниже.

Итак первая версия ПО, написанного с помощью ИИ готова!
В ней были только основные функции. Также в ней были баги сохранения и отрисовки стрелочек, и простейшее меню: текст вместо иконок.
Но самое главное, что ИИ справился. С этим можно работать. Тем более что за 5 минут такой прототип сам не напишешь.
Ну а далее... на то мы специалисты, чтобы доводить какой-то код до конечного результата.
На данном этапе можно даже сказать, что опыт Product owner-а возможно был бы более полезен в работе с ИИ, чем опыт разработчика. Но это только начало.
Что дальше?
Вначале просим исправить баги. Ибо лучше одна работающая фича, чем две неработающих (принцип, про который почему-то часто забывают)
Например баг сохранений исправляем с помощью следующего промпта.
ok, great. Now I need to save all screenshots with its data and time in title.
Еще один фикс - отрисовка стрелочек:
Now let's improve draw_arrow function. 1. Now I see the arrows only when I released mouse button. I want to see what I am drawing while I am holding the left button of the mouse. 2. I want to fix the bug: now the top of the arrow always looking down. I want all parts of the arrow were transformed according to its direction.
Готово.
Добавляем ещё фичи, которые мне были нужны.
Т. е. все фичи скриншотера для меня были разделены на несколько уровней:
0 — без этих фичей приложение не было смысла даже делать
1 — также нужные фичи, с ними будет уже совсем юзабельно
2 — если ещё и эти фичи будут, то вообще идеально
Чтобы не путать исполнителя (нашего ИИ), вначале сделали и довели до ума фичи с приоритетом 0. Потом доделываем фичи из уровня 1. Ну и если есть ресурс, чтобы сделать уровень 2, то делаем его.
По ходу реализации функционала из уровня 1. всплыла новая фича, — дизайнерская, но все‑таки в этом же приорите.
Во время таких инструментов, как рисование прямоугольников, обрезка кадра или размытие нужна анимация, чтобы мы понимали координаты области инструмента. Просим добавить и ее.
Could you please add preview feature to draw_rectangle and blur_area functions. If blur_area function is high source costed, you may just draw temporary dotted line rectangle while holding the mouse button and make blure_area function after releasing the mouse button.
ИИ меня прекрасно понимает и дописывает.
Хотя стоп. После тестирования приложения я понял — последняя функция не так уж и идеальна. Поэтому нам нужно исправить функцию предварительного просмотра:
let's make a small fix of draw_dashed_rectangle function. When I am using instruments from top‑left to bottom‑right, draw_dashed_rectangle works perfectly. But if I change the direction, draw_dashed_rectangle can render incorrectly sometimes.
Что дальше? Дальше я хотел добавить некоторые функции из уровня 1.
Я не хочу загружать вас всеми функциями, исправлениями, промптами и примерами кода. Но я покажу вам ключевые изменения и промпты проекта в следующей части статьи.
Улучшение меню

Для создания оптимизированного меню я обратился к ИИ со следующим запросом:
Now I want to improve the menu. Instead of vertical menu “Edit” I want to see all options on the top of horizontal menu. So I don't need to extra click to reach features.
Draw_bar and Draw_text функции

Промпт:
Now add new functions: 1. draw_bar function. It looks almost the same like draw_rectangle function, but the bar should be filled with the color inside its area. 2. draw_text function. It allows to write text over the screenshot with the chosen color. Add those function to the menu.
Функция Cut_image

Промпт:
Let's add “cut image” function. I want to have ability to choose rectangle area to save.
Первая функция сразу же сохраняла вырезанные фрагменты как файлы. Поэтому дорабатываем логику, чтобы иметь более гибкое и стандартное поведение:
great. But could you make the cut image function more user friendly? For this let's make next logic: 1. after cut function is complete, show only cut area in the app window. Other tools should be available to use on the cut area. 2. after "save" button is pressed, save the result image.
Функция Undo

Промпт:
Now let'sadd “Undo” function. When I use “Undo” function after some editing, I want to see previous states of image.
Горячие клавиши
Промпт:
let's add hotkeys for the app: 1. 'ctrl-z' for Undo function, 2. 'enter' for saving current version of image and exit
На какой стадии создания ПО с помощью ИИ нужны инженерные навыки?
Из последнего уровня фичей для меня было меню в виде больших и удобных для восприятия иконок. Хотя сейчас я понимаю что это тоже было из уровня 1.
И вот на этом этапе появился баг, который без технического бэкграунда я бы не решил.
Дело в том, что при просьбе заменить текстовое меню на иконки, меню исчезало. И на просьбу просто исправить это, ИИ не мог дать решения. Без углубленного анализа, по коду создание меню выглядело корректно. Почитав несколько форумов и stekoverflow, а также попробовав пару туториалов по добавлению иконки в меню, я пришёл к выводу, что иконки не рендерятся в стандартном tkinter меню для Windows (ну или у меня и у многих других не вышло).
Ок. Тогда заставим ИИ сменить подход.
Try to change tkinter menu bars to icon buttons that placed from left to right
На этот раз подобная концепция уже должна работать, но меню так и нет. Судя по дебажной информации, все иконки найдены и все создалось. Что же может быть проблемой?
Если вы когда‑нибудь прогали интерфейсы, то у вас, наверное, уже в голове светиться вопрос о том на какой позиции и глубине создалось это меню.
according to debug information the buttons are created. Let's make sure in code that buttons always will be in front of other layers
Просим ещё немного:
unfortunately, I still do not see the buttons. Can you offer another solution to exclude overlapping layers of app and showing buttons in the top of the app?
И получаем решение.

Примечание: я не из тех, кто считает, что можно задалбывать ИИ вопросами «переделай, чтобы работало». Если ИИ выдал нерабочий или некачественный код более 2 раз подряд, то скорее всего вам надо разобраться самому, как сделать данное решение правильно.
Финальная часть моего рассказа про создание скриншотера с помощью ИИ.
Приложение скриншотер, написанное с помощью ИИ было готово!
Репозиторий с кодом финальной версии.
Частично оно было написано с помощью ChatGPT4o и частично с Claude 3.5 Sonnet. С меня требовались: четкие требования, проверка кода и анализ технического решения, а также тестирование для устранения чатботами багов.
Возражения и выводы.
Вы конечно можете сказать: «Скриншотер, серьёзно. Может ещё калькулятор напишешь? «. Но, как человек, работающий в отрасли скажу: в большинстве компаний большая часть задач, которую ставят в той же джире, не является чем‑то супер оригинальным. Это нормально и правильно. И даже если у вас очень новая и оригинальная система, то все равно в ней будет достаточно много стандартных изначально решений, поверх которых вы уже будете творить что‑то по настоящему новое.
Многих интересует вопрос: «Можно ли создать что‑то качественное с ИИ, но без квалификации в этом?» Может быть, да.
Меня, как специалиста больше всего интересовал вопрос:
«Можно ли решать объемные задачи, которые вы и сами могли бы решать, но быстрее и легче за счет ИИ?»
Ответ — 100%.