Як безпечно й ефективно писати код за допомогою ШІ
Ставте завдання штучному інтелекту як колезі, а перевіряйте результат як суворий рев'юер. Промпти для дебагу, нового коду й тестів.

ШІ-чат справді корисний для програмування: він може пояснити незнайомий код, знайти причину помилки, написати шаблонний код (boilerplate), підготувати чернетки тестів або навчити вас нової мови чи бібліотеки. Водночас він нерідко помиляється з абсолютно впевненим виглядом, тому сприймайте кожну відповідь як пулреквест від швидкого, але неуважного колеги. Цей посібник розповість, як ставити правильні запити та як перевіряти отриманий результат.
У чому ШІ-чат сильний у кодингу
- Пояснення коду: «поясни мені цю функцію рядок за рядком».
- Налагодження: аналіз тексту помилки зі стек-трейсом і пошук імовірних причин.
- Невеликі, чітко окреслені функції: парсинг дат, валідація вхідних даних, трансформація даних.
- Шаблонний код: конфігураційні файли, обробка аргументів командного рядка, базові обробники API.
- Тести: написання чернеток юніт-тестів, зокрема граничних випадків (edge cases), про які ви забули.
- Regex, SQL та однорядкові shell-скрипти з поясненням кожної частини.
- Навчання: «я знаю Python; покажи, як це виглядає на Go, і поясни різницю».
- Ревʼю коду: пошук проблем із читабельністю, відсутньої обробки помилок та очевидних вразливостей.
ШІ слабше справляється з масштабними архітектурними рішеннями, які залежать від усієї вашої кодової бази, із зовсім новими версіями бібліотек, про які він може не знати, а також з усім, чого він не бачить. У чаті на зразок ChatG штучний інтелект бачить лише те, що ви вставили. Він не може відкрити ваші файли чи запустити код.
Як просити про виправлення багів
Більшість невдалих відповідей щодо коду зумовлені браком контексту. Гарний промпт для налагодження містить п’ять речей: мову та версії, релевантний код, повний текст помилки, очікувану поведінку на противагу фактичній і те, що ви вже спробували.
Слабкий запит: Мій код не працює, виправ його. [вставлено 200 рядків коду]
Сильний запит: Python 3.12, pandas 2.x. Ця функція має повертати середній чек на клієнта, але викликає помилку KeyError: 'customer_id'. Код: [вставте лише саму функцію та приклад даних на 5 рядків] Повний трейсбек: [вставте помилку] Я перевірив, що у CSV-файлі є колонка customer_id. У чому можуть бути ймовірні причини? Поясни виправлення перед тим, як показувати готовий код.
Скоротіть код до мінімального фрагмента, що все ще відтворює проблему. Часто це саме по собі допомагає знайти баг, а також фокусує увагу на важливих рядках. Ви можете відкрити готовий промпт для налагодження в чаті та заповнити потрібні поля.
Як просити написати новий код
Сформулюйте мініспецифікацію. Що точніше ви опишете вхідні й вихідні дані та граничні випадки, то менше доведеться виправляти згодом.
Напиши функцію на TypeScript: slugify(title: string): string. - Лише нижній регістр, ASCII; транслітеруй поширені літери з діакритикою (наприклад, é стає e). - Заміни будь-яку послідовність небуквено-цифрових символів одним дефісом. - Прибери дефіси з країв; максимальна довжина — 60 символів, ніколи не обрізай посеред слова. - Без сторонніх бібліотек. Потім напиши 8 юніт-тестів на Vitest, включно з порожнім рядком і текстом, що містить емодзі.
Просіть тести разом із кодом. Якщо тести ШІ не сходяться з його власним кодом — ви виявили проблему ще до того, як вона потрапила в прод.
Перевіряйте все перед релізом
Згенерований ШІ код може виглядати акуратно, але все одно містити помилки. Візьміть за правило такі перевірки:
- Запускайте код. Ніколи не додавайте код у проєкт, не запустивши його та відповідні тести.
- Перевіряйте наявність усіх функцій та опцій. ШІ іноді вигадує методи, параметри чи ключі конфігурації або використовує застарілі. Звірте їх з офіційною документацією саме для вашої версії.
- Перевіряйте назву кожного пакета перед встановленням. Дослідники безпеки неодноразово фіксували, як ШІ радить неіснуючі пакети, а зловмисники реєструють такі назви зі шкідливим кодом (атака, відома як «slopsquatting»). Перш ніж інсталювати пакет, переконайтеся, що він справжній та підтримується в офіційному репозиторії.
- Аналізуйте безпеку. Звертайте увагу на SQL-запити через конкатенацію рядків, відсутність валідації вхідних даних, вимкнену перевірку сертифікатів, секрети в коді та занадто широкі права доступу. Запитайте ШІ прямо: «Перевір цей код на вразливості, вважаючи будь-які вхідні дані ворожими».
- Читайте, доки не зрозумієте повністю. Якщо ви не можете пояснити, що робить певний блок, розпитайте про це або не мерджіть його. Підтримувати цей код доведеться саме вам.
Не надсилайте в чат секрети та приватний код
Ніколи не вставляйте в ШІ-чат ключі API, паролі, токени, приватні ключі або рядки підключення до баз даних. Замінюйте їх плейсхолдерами, наприклад YOUR_API_KEY. Якщо ви випадково викрили справжній секрет за межами своїх систем, негайно знешкодьте його та згенеруйте новий.
Якщо ви пишете код для роботодавця чи клієнта, ознайомтеся з їхніми правилами безпеки перед надсиланням коду в будь-який сторонній ШІ-сервіс. Багато компаній дозволяють використовувати лише затверджені інструменти для роботи з пропрієтарним кодом. Якщо сумніваєтеся, зведіть проблему до абстрактного прикладу, що не розкриває деталей проєкту. Більше деталей містить наш посібник із конфіденційності та безпеки ШІ.
Корисні промпти для розробників
Поясни цей код розробнику, який знає [мова], але не знайомий із цією бібліотекою. Розглянь його блок за блоком, а потім виділи все, що виглядає ризиковано або застаріло. [вставте код]
Зроби ревʼю цього diff як senior engineer. Згрупуй зауваження за категоріями: баги, безпека, продуктивність і читабельність. Будь конкретним і цитуй відповідні рядки. [вставте diff]
Напиши регулярний вираз, який знаходить [опис]. Поясни кожну частину, а потім наведи 5 прикладів рядків, які мають підходити, і 5, які не повинні.
Я добре знаю Python і зараз вивчаю Rust. Покажи, як реалізувати [завдання] на Rust, і поясни концепції ownership та borrowing так, ніби я чую про них уперше.
Більше прикладів ви знайдете в добірці промптів для програмування. Для швидких разових завдань інструмент помічник із коду приймає опис або фрагмент і повертає готовий код із поясненнями, а вбудований асистент програміста дотримується технічного стилю впродовж усього діалогу.
Типові помилки
- Вставляти весь проєкт цілком. Величезні фрагменти приховують суть і можуть перевищити обсяг даних, який ШІ здатен опрацювати за раз. Надсилайте лише релевантні файли чи функції.
- Приймати «виправлення», які просто маскують симптоми. Огортання коду в try/except приховує повідомлення про помилку, а не сам баг. Запитуйте, чому ця помилка виникає.
- Ходити колами. Якщо після двох-трьох спроб нічого не виходить, зупиніться і змініть підхід: додайте більше контексту, зменшіть тестовий приклад або почніть новий чат із чітким описом проблеми.
- Не вказувати версії. API фреймворків суттєво змінюються між мажорними версіями, тому завжди зазначайте, яку саме ви використовуєте.
- Ігнорувати ліцензії. Якщо ШІ відтворює впізнаваний фрагмент чужого коду, перевірте його ліцензію, перш ніж додавати у проєкт.
Читайте також, як розробники використовують ChatG, та перегляньте загальний посібник зі створення промптів.
Робочий процес, який залишає контроль за вами
- Спочатку опишіть мету без коду. Попросіть запропонувати два-три можливі підходи та їхні плюси й мінуси, перш ніж писати бодай рядок коду.
- Оберіть один підхід і попросіть зробити невеликий перший крок. Перевіряти по одній функції або по одному файлу значно простіше, ніж усю фічу відразу.
- Запустіть код і надішліть фідбек. Скопіюйте реальний результат або помилку замість абстрактного «воно не працює».
- Попросіть написати тести, а потім зробити ревʼю. Питання «Які граничні випадки тут не враховано?» часто допомагає знайти наступний баг.
- Пишіть повідомлення коміту власноруч. Якщо ви не можете коротко пояснити, що змінилося і навіщо, отже, ви ще недостатньо добре розібралися в цих змінах.
Часті запитання
Чи може ШІ замінити повноцінне навчання програмуванню?
Ні. Він лише прискорює тих, хто вміє читати й критично оцінювати код. Якщо ви не здатні зрозуміти, правильна відповідь чи ні, ви не зможете безпечно її застосувати. Використовуйте ШІ, щоб навчатися швидше: запитуйте «чому», а не лише «що зробити».
З якими мовами програмування працює ШІ?
ШІ-чат зазвичай чудово справляється з популярними мовами, як-от Python, JavaScript, TypeScript, Java, C#, C++, Go, PHP, SQL та shell-скриптами, і дещо гірше — з рідкісними мовами. Якість відповідей також знижується для зовсім нових бібліотек і версій.
Чи може ChatG запускати мій код або бачити мій репозиторій?
Ні. ChatG — це чат: він бачить лише те, що ви вставили в повідомлення, і не виконує код. Запускайте та тестуйте все у власному робочому середовищі.
Чи безпечно використовувати згенерований ШІ код у комерційних цілях?
Ставтеся до нього як до коду з будь-якого зовнішнього джерела: перевіряйте його, тестуйте, перевіряйте ліцензії залежностей і будь-якого скопійованого фрагмента, а також дотримуйтеся корпоративних правил вашої компанії. Це загальна інформація, а не юридична консультація.
Готові спробувати?
Відкрийте чат і поставте своє перше запитання. Це безкоштовно та не потребує встановлення.
Почати спілкування

