Может ли ИИ написать программу? Да, но не более 130 строк кода

Очевидно, что мир программирования претерпевает значительные изменения с ростом масштабов ИИ. Я представил себе будущее, в котором команда ботов с искусственным интеллектом будет совместно выполнять инструкции на естественном языке и повторять требования и код, пока не будет достигнут желаемый результат. Эта команда ботов будет действовать как искусственный интеллект общего назначения, очень похожий на конвейер процессора. В этом сценарии инженер-человек будет настраивать и контролировать конвейер, пока мы не доведем его до автоматизации. Однако мои ожидания оказались ошибочными.

Текущие ограничения

Чтобы продемонстрировать, что текущий ИИ еще не способен программировать сам по себе, я решил бросить ему вызов и написать простую программу:

[я]: яхочу, чтобы приложение для Apple Watch 8 помогало пользователям бросить курить. Каждый раз, когда пользователь заканчивает пакет, он сообщает об этом приложению, и приложение начинает считать дни, прежде чем пользователю будет разрешено купить еще один пакет. Промежуток времени между пачками начинается с целой недели без курения, затем неделя плюс 2 дня, затем неделя плюс 4 дня и т. д., пока не достигнет 21 дня без курения. Затем приложение поздравит пользователя с тем, что он бросил курить, и даст указание никогда больше не курить».

[ChatGPT]:Являясь языковой моделью ИИ, я не могу создавать приложения, но могу дать вам рекомендации по разработке приложения для Apple. Смотреть 8, чтобы помочь вам бросить курить. Вот несколько шагов, которые вы можете предпринять:

Определите функции и функциональные возможности приложения. В зависимости от ваших требований приложение должно иметь следующие функции:

Как видите, модель знает, как создать программу, но сделать все за один раз по-прежнему не в ее силах.

Первая попытка

Я упростил процесс. Вместо того, чтобы делать целое приложение за один раз, я попытался создать гибкую программу меньшего размера и запрограммировать бота в паре, руководя им на каждом этапе пути.

[я]:Я хочу сделать простое приложение для Apple Watch с флаттером. не могли бы вы помочь мне?

[ChatGPT]:Конечно, я буду рад помочь вам приступить к созданию простого приложения для Apple Watch с помощью Flutter! Вот пошаговое руководство, которое поможет вам:

Установите Flutter: первый шаг — установить Flutter в вашей системе. Вы можете следовать официальному руководству по установке Flutter, посетив https://flutter.dev/docs/get-started/install.

Настройте среду разработки: после установки Flutter вам необходимо настроить среду разработки. Это включает в себя установку Xcode на ваш Mac, который требуется для разработки приложений для iOS.

Бот точно знал, что делать, поскольку создание нового приложения хорошо задокументировано. Следовать инструкциям довольно просто: установка флаттера, сбой, установка с помощью brew, получение xcode, запуск симулятора. Примерно через час мне удалось пройти Flutter Doctor:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.5, on macOS 13.2.1 22D68 darwin-arm64, locale en-IL)
[✗] Android toolchain - develop for Android devices
 ✗ Unable to locate Android SDK.
 Install Android Studio from: https://developer.android.com/studio/index.html
 On first launch it will assist you in installing the Android SDK components.
 (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for
 detailed instructions).
 If the Android SDK has been installed to a custom location, please use
 `flutter config - android-sdk` to update to that location.
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] VS Code (version 1.75.1)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

Далее в списке flutter create unsmoke_app. 3/5 готово!😎
Я добавил отсутствующие часы с помощью XCode. ChatGPT был довольно четким, с легкостью указывал мне на нужные меню.

Однако на этом этапе я столкнулся с первым препятствием. Несмотря на многочисленные попытки устранения неполадок, я понял кое-что, что пропустил бот — невозможно создать приложение для часов, поскольку Flutter пока не поддерживает его. ChatGPT быстро подтвердил этот факт:

[я]:поддерживает ли Flutter Apple Watch изначально?

[ChatGPT]:По состоянию на сентябрь 2021 года Flutter не имел официальной поддержки Apple Watch. Flutter был в первую очередь разработан для …

Учитывая, что приложение для часов было недосягаемо, я решил создать приложение для телефона с помощью бота. Следуя его указаниям, я смог успешно создать и запустить базовое приложение.

Двигаясь вперед, я поручил боту написать кнопку запуска, и он сгенерировал код в соответствии с моими требованиями. Маленькие шаги и итерации, казалось, работали хорошо, и я был доволен быстрыми результатами:

[я]:Отлично. Я настроил его и запустил, теперь я хочу, чтобы он показывал большой синий экран с кнопкой запуска посередине. нажатие на кнопку покажет сообщение об успешном завершении

[я]:когда пользователь добьется успеха, вы можете написать кнопку сброса вверху справа?
[я]:не писать все целиком , только соответствующие части
[me]:извлечь действия пользователя, такие как onPressed, в функцию
[me]:разделить панель приложения и основное тело на два отдельных компонента
[me]:прикреплять стили к каждому элементу, не встраивая их

После написания около 130 строк кода эксперимент зашел в тупик. AppBar застрял за выемкой, и бот не смог решить проблему. Я пробовал различные решения, включая изменение формулировки моего вопроса, начало нового разговора и устранение проблемы. К сожалению, бот продолжал терять контекст, путать код и делать неверные предложения.

Честно говоря, я был удивлен, как быстро провалился эксперимент с таким ограниченным объемом. Приятно осознавать, что нам не нужно беспокоиться о катастрофе максимизатора скрепки в ближайшем будущем. Вау!

Вторая попытка

Несмотря на первоначальную неудачу, я не сдавался! 💪
На следующий день я подошла к задаче более тщательно, сосредоточившись только на самых важных запросах. На этот раз бот работал более плавно, у меня получилось 114 строк кода.

В этот момент я сделал большую просьбу.

[me]:каждый раз после достижения целевой даты следующая цель будет через 2 дня. После достижения цели в 21 день или более и завершения продолжительности приложение поздравит пользователя с отказом от сигарет и предложит ему никогда больше не курить.

Вот текущий код:

импортировать ‘dart:async’;

[ChatGPT]:Отлично! Чтобы реализовать новые требования, нам нужно внести несколько изменений:

1. Нам нужно отслеживать количество завершенных периодов отказа от курения. Мы можем сделать это, сохранив счетчик в SharedPreferences.

2. Нам нужно обновлять целевую дату каждый раз, когда пользователь достигает цели. Мы можем рассчитать новую целевую дату, добавив 2 дня к текущей дате.

3. Нам нужно обновить текст обратного отсчета, чтобы отображалось правильное количество знаков 🚭 для текущего периода.

4. Нам нужно добавить проверку, когда пользователь не курит в течение 3 или более недель, и отображать поздравительное сообщение.

Вот обновленный код:

На мгновение показалось, что ИИ совершил прорыв. Хотя он был медленным, он производил код. Однако, к моему ужасу, код быстро потерпел фиаско. Он писал в неправильных местах, забывая важные элементы и создавая общий беспорядок. В этот момент мне показалось, что я мог бы продолжать, но в конце концов оказалось проще написать код самому.

Что случилось?

Я превзошел умственные способности ChatGPT, которые в основном определяются размером ввода, который может обработать ИИ. По сути, ИИ функционирует, используя граф узлов, каждый из которых немного манипулирует вводом, прежде чем передать его следующему узлу. Со временем и с большим количеством данных инженеры настраивают узлы, чтобы убедиться, что ИИ выдает результат, аналогичный обучающему набору. Важно отметить, что ИИ на самом деле не «обучается» как таковой, это больше похоже на то, что его обучают выполнять определенные задачи.

Однако это не обязательно означает, что ИИ сможет справиться со всеми поставленными перед ним задачами, по крайней мере, пока. Размер ввода, который может получить ИИ, зависит от количества узлов в его графе. За последние несколько лет мы наблюдаем, как ИИ расширяется с точки зрения его возможностей, переходя от одного предложения за раз к ведению целого разговора, такого как ChatGPT, по крайней мере, если он состоит менее чем из 130 строк.

В то время как возможности ИИ растут, важно понимать, что он еще не совсем похож на людей, которые могут расширять свои собственные возможности, записывая, проводя мозговые штурмы и анализируя идеи. В настоящее время единственный способ увеличить мощность ИИ — увеличить количество узлов в его графе, также известное как «размер модели». Это требует больше данных для обучения модели, иначе она переобучится и не сможет обрабатывать новые входные данные. Рост графика может быть не таким простым и может иметь нелинейные затраты.

Несмотря на эти ограничения, я считаю, что возможности ИИ будут продолжать расти в будущем, подобно тому, как вычислительная мощность росла в соответствии с законом Мура. Однако важно понимать, что, даже если ИИ станет лучше, он может быть не таким быстрым и эффективным, как мы первоначально ожидали.

Что впереди

Забегая вперед, можно сказать, что новейшая технология искусственного интеллекта, появившаяся в 2022 году, может привести к появлению нового инструмента для написания кода под названием Рефакторинг естественного языка. Этот инструмент позволит ИИ вносить небольшие изменения в ваш код в реальных файлах непосредственно в вашей интегрированной среде разработки (IDE), что будет и осуществимо, и привлекательно.

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

Учитывая быстрый темп инноваций, возможно, второй пилот Github объявит об этих функциях уже в 2023 году.

Подводя итог, я считаю, что область разработки кода останется в значительной степени защищенной от автоматизации в течение следующих 5–10 лет. Сначала нам нужно будет создать системы сдержек и противовесов для ИИ, прежде чем мы сможем интегрировать их в качестве инструментов для написания кода. Без таких этических соображений боты могут легко зайти в тупик, что сделает их бесполезными.

Что будет через 10 лет, когда будет достигнут общий искусственный интеллект? Вот тогда все действительно может начать выглядеть совсем иначе.