BioBootloader разместил видеодемонстрацию программы с комментарием: «Запускайте с ее помощью скрипты, и если произойдет сбой, GPT-4 отредактирует их и объяснит, что пошло не так. Даже если багов будет много, она будет многократно запускаться, пока все не будет исправлено».
За «способность к саморегенерации» он назвал программу Wolverine («Росомаха») в честь персонажа Marvel.
GPT-4 — это мультимодальная языковая модель искусственного интеллекта, созданная OpenAI и выпущенная в марте. Она доступна подписчикам ChatGPT Plus и бета-тестерам в виде API . Модель использует свои «знания» о миллиардах документов, книг и сайтов, извлеченных из интернета, и умеет выполнять разные задачи, связанные с текстом, в том числе писать текст, переводить его и генерировать код.
В качестве демонстрации разработчик опубликовал видео, в котором отображается окно с кодом на Python и результаты работы его программы в терминале. Он загружает скрипт калькулятора, в который намеренно добавил несколько ошибок, а затем запускает его.
Заменит ли ChatGPT программистов? Тестирую как искуственный интеллект пишет Java код.
«Программа запускает его, видит сбой, но затем обращается к GPT-4, чтобы попытаться выяснить, как это исправить», — объясняет автор.
GPT-4 возвращает объяснение ошибок, показывает изменения, которые программа пытается внести, затем повторно ее запускает. Увидев новые ошибки, GPT-4 снова исправляет код, и затем он запускается корректно. В итоге в исходный файл Python добавляются изменения от GPT-4.
Читайте по теме:
Код размещен на GitHub, и разработчик говорит, что этот метод можно применить к другим языкам программирования. Для этого требуется наличие ключа OpenAI API для GPT-3.5 или GPT-4, за использование взимается дополнительная плата. Прямо сейчас API GPT 3.5 открыт для всех, у кого есть учетная запись OpenAI, но доступ к GPT-4 по-прежнему ограничен списком ожидания.
Хотя в настоящее время это лишь простое подтверждение концепции, такие примеры, как Wolverine, демонстрируют: в будущем приложения смогут исправлять свои собственные ошибки — даже неожиданные баги, возникающие после развертывания. Разумеется, последствия и риски метода еще предстоит оценить.
Фото на обложке: Unsplash
- Искусственный интеллект
- ChatGPT
- Разработка ПО
- Технологии
Источник: rb.ru
Нейросеть пишет код вместо меня: как я пользуюсь бета-версией Copilot
Разработчик делится опытом, как Copilot избавляет его от рутины, почему сервис конфликтует с IDE и может тянуть в проект чужой код с GitHub.
karsten madsen / Pexels / Polina Vari для Skillbox Media
Эти нейросети сделают из тебя СУПЕР человека
Редакция «Код» Skillbox Media
Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.
об эксперте
Работает в Aviasales в команде веб-платформы — делает жизнь фронтендеров чуть менее болезненной. Ведёт блог и Telegram-канал, где рассказывает про разработку программ.
Ссылки
Copilot — это помощник, который встраивается в IDE. Он умеет превращать английскую речь в код, предлагает подсказки, оставляет комментарии и придумывает названия функциям. Лучше всего система работает с Python, JavaScript, TypeScript, Ruby и Go, но понимает и десятки других языков.
Придумали Copilot в GitHub, поэтому нейросеть обучали на всём открытом коде с платформы. Но она умеет тренироваться и на локальных файлах.
Создатели Copilot обещают, что ваш закрытый код не попадёт на сервера GitHub. Я тоже так думаю — если бы в GitHub захотели украсть мой код, там бы нашли способ попроще.
Copilot избавляет меня от рутины
Я работаю в команде, которая делает инструменты для программистов. Занимаюсь бэкендом и фронтендом, ещё пишу скрипты на Bash. Мне повезло попасть в программу тестирования Copilot, поэтому я пользуюсь его бесплатной бета-версией. Многие знакомые завидуют — их заявки пока не одобрили. Сервис работает как плагин для Visual Studio Code.
Первые пару дней Copilot мне не нравился. Я переживал, что подсказки будут неудобными — их придётся перечитывать, чтобы проверить качество кода, и тратить лишние силы. А я стараюсь во время работы экономить энергию и думать по-минимуму.
Но Copilot начал избавлять меня от рутины. Я работал со Storybook — инструмент помогает изолированно разрабатывать UI-компоненты и сразу отображает их в браузере. Раньше у него был плагин Storybook Addon Knobs, который показывал параметры элементов: например, цвет или размер кнопки. Его запретили, а взамен предложили другой плагин с совершенно новым синтаксисом. Мне пришлось переписывать под него 200 файлов, и это нельзя было автоматизировать средствами миграции.
После первых 15 файлов Copilot так хорошо натренировался, что дальше оставалось только принимать автозаполнение, нажимать Tab и иногда исправлять мелкие ошибки. Я не разбираюсь в нейросетях, поэтому не знаю, как это работает. Но Copilot быстро понял задачу и почти всё сделал сам.
В основном Copilot помогает мне писать на JavaScript и TypeScript. С Bash он справляется не слишком хорошо — нейросеть на нём явно мало тренировалась. Если пишете на Bash, то пока нет смысла пользоваться Copilot.
TypeScript — это и есть JavaScript, но в нём есть статическая типизация . Как минимум она даёт классные подсказки в редакторе и валидацию на этапе компиляции. Это помогает стандартизировать разработку, особенно в большой команде.
Иногда я пишу на Go, но тут качество подсказок Copilot оценить не могу, потому что только учу этот язык. Автодополнения для Scala мне не понравились. Хотя это очень специфичный язык — для меня он всегда головоломка, а её интереснее решить самому. Конечно, это приятно и весело, но я больше никогда не стану писать на Scala для продакшена. Слишком академичный язык.
Пробовал Haskell, но впечатления ещё хуже, чем от Sсala. Не могу держать в голове все контравариантные типы, моноиды, монады и прочее. В обычной работе это отвлекает.
Copilot неплохо научился подсказывать в Docker Compose — например, сразу после слов «docker compose» он говорит: «Давай порт прокинем». А это и правда хорошая идея. С цифрами не угадывает, но в целом удобно.
У него много сценариев использования
Я покажу, как Copilot дополняет функции, придумывает им названия и снимает другую рутину. Для примера возьму свой пет-проект с GitHub.
Дописывает функции. Если я открою файл на TypeScript и напишу «formatDate», Copilot допишет всю функцию за меня. Чтобы сохранить код, нужно нажать Tab.
Предлагает сигнатуру функций. Если я дополню текст, то Copilot не предскажет функцию целиком, но попробует додумать её сигнатуру. Когда нужно посчитать сумму нескольких значений, он тоже предложит свой вариант. Если я внесу правку, сервис сразу подскажет что-нибудь другое.
Такие длинные подсказки я не слишком люблю, потому что в них сложно разобраться. Обычно нажимаю Tab и смотрю, подсвечивает ли код моя IDE. Если нет — всё в порядке.
Создаёт новые функции. Когда в TypeScript я напишу слово «function», Copilot сам придумает ей название и предложит код — чтобы составить новую функцию, он анализирует соседние. В этом случае он назвал её «handleChange» — я бы и сам так сделал. Удачные варианты попадаются подозрительно часто.
Работает в пустом файле. Если я создам новый YML-файл и напишу «services», Copilot подскажет корректный код. Сперва что-то пошло не так — внизу окна загорелся красный индикатор, что Copilot не работает, но потом он включился. Помощник может написать целый файл, а мне останется только выставить нужные значения.
Иногда Copilot заедает на каком-то куске кода и он по кругу предлагает одинаковые строки, пока ты с ним что-то не сделаешь.
Пишет большие функции. Варианты в несколько строк у Copilot обычно получаются хорошо, а большие — плохо. Например, если предложить ему перемешать массив, он напишет функцию из семи строк. Хотя в этот раз она оказалась рабочей.
Дописывает тесты. Я хочу протестировать свою функцию «format_number», поэтому напишу «should format in US locale», а дальше помощник всё делает за меня. Получается вполне логичный код, я бы и сам так написал.
Подсказки Copilot зависят и от проекта, в котором я работаю. Мне кажется, что нейросеть понимает контекст и подстраивается под него. Но если Copilot предлагает слишком длинную подсказку, иногда проще не вчитываться и написать код самому.
В Copilot четыре важных минуса
Я пишу эту статью в сентябре 2021 года, когда Copilot ещё не вышел из беты, поэтому у него есть пара заметных недостатков. Иногда он конфликтует с IDE, есть вопросы к лицензиям и качеству кода.
Конфликты с IDE. Copilot немного ломает подсказки, которые уже встроены в среду разработки. В основном я пишу на строго типизированных языках — когда ставишь точку, IDE сообщает, какие у объекта есть поля. Встроенное автозаполнение появляется спустя 0,2 секунды, а подсказка Copilot — через 2 секунды. Это тормозит работу, когда быстро пишешь код.
Чужой код в проекте. Copilot может вставлять в проект куски стороннего кода. Есть мнения, что иногда сервис использует части программ с вирусной лицензией — если они попадают в проект, его придётся лицензировать. Но Microsoft дала официальный комментарий и сказала, что берёт все юридические риски на себя.
В Twitter был пост о том, как человек начал вписывать SSH-ключ, а Copilot подставил окончание ключей из чужого проекта. Но автор удалил тред и написал, что нейросеть подсказала случайный ключ.
Если Copilot предложит специфичный код, который, скорее всего, написан человеком, я отнесусь к этому с опаской. Но пока такого не было.
Незакрытые скобки. Любая IDE автоматически закрывает скобки: ты добавляешь первую, а она подставляет вторую. Всё налажено, и запутаться сложно. Но если Copilot предлагает подсказку, а ты её отклоняешь, скобки остаются незакрытыми и их приходится закрывать вручную. Мелочь, но раздражает.
Ошибки с типизацией. Хочу, чтобы Copilot понимал систему типов в моём языке программирования. Он часто даёт подсказки с неправильными типами — такой код не скомпилируется.
Я буду пользоваться Copilot всегда
За полтора месяца я очень привык к Copilot, и сейчас он для меня почти как стандартное автодополнение кода в IDE. Я просто чаще нажимаю Tab. В основном я пишу несложный код, поэтому Copilot сильно помогает с рутиной, где сразу знаешь, что собираешься написать и какой нужен финальный результат.
Конечно, иногда система ошибается и за ней приходится править код, но она определённо экономит время. Если сервис ломается, я сразу чувствую, что мне его не хватает. Не будь Copilot бесплатным, я бы за него платил.
Было бы здорово, если бы Copilot сразу разбирался в типах, валидировал свои подсказки и предлагал решения, если типы не сходятся. Хорошо, если это добавят в его новых версиях.
Docker Compose — это часть Docker, где можно разворачивать несколько контейнеров одновременно. Он помогает перенести сложный проект на новый сервер в несколько команд.
Типизация — это то, как язык распознаёт типы переменных. Например, в языках со статической типизацией нельзя сложить строку текста (string) с целым числом (integer).
Источник: skillbox.ru
ТОП 5 онлайн компилятора Python
Если вы собираетесь изучать Python, то процесс начальной установки может озадачить вас. Придется установить Python, затем научиться пользоваться командной строкой для написания кода и интерактивной оболочкой или же установить среду разработки python (IDE).
Вы можете использовать интерактивную оболочку — веб-сайт, который позволяет писать код на Python online, выполнять его и просматривать результаты. При этом не нужно ничего устанавливать. Изучая примеры и основы языка, можно проверять код прямо в браузере. Итак, вот лучшие онлайн-интерпретаторы Python, которые мы нашли.
Python Anywhere
Поддерживает IPython и этим превосходит другие интерпретаторы. IPython — это более продвинутая альтернатива стандартному десктопному или онлайн интерпретатору Python. В нем есть масса полезных функций: форматирование текста, возможность отслеживать значения переменных и результаты выполнения методов объекта в режиме реального времени, чтение установленной документации по разным модулям и многое другое. Не самое необходимое на старте, так что новички могут пропустить эти моменты сейчас и вернуться к ним спустя несколько недель. PythonAnywhere.com является стандартом производительности для всех онлайн интерпретаторов Python 3.
Примечание: Сайт на самом деле представляет собой полноценную Python IDE онлайн, которая позволяет создавать и размещать приложения в интернете. Страница “Try IPython” – отличный дополнительный инструмент.
Python Fiddle
Этот инструмент я рекомендую всем, кто уже имеет опыт в программировании, но не с Python. Интерфейс достаточно прост и легок в использовании. Но что более важно, есть масса примеров кода, которые можно запустить одним нажатием.
Изучая примеры на левой боковой панели, можно узнать крутые секреты, которые сделают работу интереснее. А еще можно писать и запускать свой собственный код Python online. Результаты будут отображены в нижней части в панели вывода.
Обращаем внимание, что в Python Fiddle можно делиться своими программами. Это пригодится, если у вас есть учитель, который помогает вам с отладкой, или если вы сотрудничаете с другими разработчиками.
Repl.It
Название происходит от REPL (Read-Eval-Print Loop), что является синонимом интерактивной оболочки. Repl.It поддерживает десятки языков, включая Python 2 и Python 3 — онлайн. Так что даже если Python вам не подойдет, вы сможете использовать эту оболочку при изучении C#, Java, Ruby, Lua, ES6 и так далее. Интерфейс прост и его легко настроить под себя.
Можно изменить макет, цветовую тему, размер шрифта, отступы, тип переноса и включить автозаполнение. Создание учетной записи позволит сохранять свой код и позже восстанавливать его.
Еще одно огромное преимущество — в Repl.It можно импортировать любой пакет Python, он поддерживает все.
Trinket
Еще один отличный вариант. В Trinket есть все возможности, описанные ранее: неплохой редактор кода, возможность запустить исходники и делиться ими. Однако Trinket обладает еще двумя преимуществами. Во-первых, можно одновременно открыть множество скриптов в разных вкладках, а во-вторых, можно встроить Trinket в свой сайт.
Бесплатная версия не имеет ограничений в использовании, поддерживает только Python 2.X. За полную версию (план Connect) с возможностью работы с Python 3 онлайн придется платить 9 долларов в месяц или 72 доллара в год. Полная версия включает в себя все встроенные модули Python – Numpy, Matplotlib, SciPy и другие.
Ideone
Это инструмент общего назначения вида “попробуй любой язык программирования”. Он не такой разносторонний и не обладает большим количеством функций, как описанные выше варианты. Зато Ideone поддерживает более 60 языков программирования и возможность пометить ваш код как публичный, секретный или приватный.
В Ideone существуют следующие ограничения для кода:
- максимальное время компиляции/интерпретации — 10 секунд;
- максимальное время исполнения для гостей — 5 секунд, для зарегистрированных пользователей — 15 секунд;
- максимальный размер используемой оперативной памяти — 256МБ;
- нет доступа в интернет и нельзя создавать новые файлы при выполнении кода.
В общем, онлайн компилятор python Ideone – удачный выбор, если нужно протестировать небольшую программу, но для более серьезного погружения лучше использовать что-то из предыдущих вариантов.
Бонус: Python Tutor
По сути, это не является интерактивной оболочкой. После написания пользователем кода Python Tutor анализирует его и визуализирует логику кода. В результате получается серия снимков, в которых можно отследить построчно выполнение программы.
Это потрясающий инструмент для новичков! Можно смотреть, как при выполнении программы изменяются разные переменные и выходные данные. Такой подход упрощает исправление багов и других проблем. Программирование может быть сложным на первых порах, а Python Tutor сглаживает кривую обучения и помогает обдумать логику кода.
Также здесь есть экспериментальный режим живого программирования. Он похож на обычный инструмент визуализации, однако, анализ и обновление происходит в режиме реального времени.
Совет для изучения Python
После работы с Python 3 в онлайн компиляторе, вы можете полюбить этот язык и выбрать его для решения своих задач. Пройти курсы по Python или посидеть на обучающих сайтах, если у вас нет свободных средств.
Python может быть простым в изучении, но не расстраивайтесь, если вам трудно. Программирование — тяжелое занятие. Сложности не означают, что нужно остановиться. Для дополнительной мотивации можно прослушать некоторые полезные подкасты для программистов.
Источник: pythonru.com