Языковая модель ChatGPT никогда не заменит программиста, потому что непосредственно редактирование кода — это крохотная часть разработки (5% по времени). Зато ChatGPT великолепно помогает. И чем выше ваш скилл — тем больше пользы от «подмастерья», выполняющего мелкие задания и черновой кодинг. Он пишет простые функции, генерирует документацию, находит и объясняет ошибки, выполняет кучу других задач (полный список под катом).
Сегодня не использовать ChatGPT просто глупо… Это действительно универсальный помощник, который сильно облегчает жизнь и выводит программирование на принципиально новый уровень. Одно из величайших изобретений в IT за десятилетия, после GUI и интернета.
Пожалуй, никогда программирование не было настолько приятным и эффективным, как сейчас.
▍ Универсальный помощник
Перечислим типичные варианты использования ChatGPT в программировании.
- Генерация кода. Первая и очевидная задача — генерировать код для простых задач, которые можно сформулировать в текстовом виде.
Пример:
Напиши функцию Python, которая принимает на вход массив чисел, выполняет пузырьковую сортировку и возвращает отсортированный массив.
Результат:
Конечно! Вот функция на Python, которая принимает массив чисел и сортирует его пузырьковой сортировкой:
python Copy code def bubble_sort(arr): n = len(arr) # Проходим по всем элементам массива for i in range(n): # Последние i элементов уже отсортированы for j in range(n - i - 1): # Если текущий элемент больше следующего, меняем их местами if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr
Как использовать эту функцию:
python Copy code my_array = [3, 5, 1, 9, 0, 2, 4, 6, 8, 7] sorted_array = bubble_sort(my_array) print(sorted_array)
Этот код выведет [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], то есть отсортированный массив.
Для поиска таких фрагментов кода ChatGPT удобнее, чем StackOverflow. Потому что он может продолжить диалог и изменить фрагмент по вашему желанию, исправить ошибки, дополнить и т. д. Очень удобно — не нужно тратить время на шаблонную работу и поиск стандартного кода.
- Автоматическая генерация тестов и тестовых данных.
- Поиск ошибок и проблем. Вы можете скормить чат-боту фрагмент кода и попросить найти проблемы в нём (так работает расширение ChatGPT для VS Code) или объяснить, почему возникает ошибка при компиляции или в продакшене.
- Объяснение непонятного кода. Аналогично предыдущему пункту, ChatGPT разъясняет смысл и замысел сложных или обфусцированных инструкций, помогает разобраться.
- Оптимизация кода, рефакторинг.
- Проверка кода на соответствие стандартам.
- Поиск уязвимостей в любых системах, включая конкретные репозитории. С помощью ChatGPT хакеры создают вирусы и скрипты для взлома.
- Чат-боты службы техподдержки.
- Интеграция своих программ с ChatGPT API. С 1 марта 2023 года OpenAI открыла REST API, что позволяет разработчикам внедрить интеллект ChatGPT в собственный код. Вот пример кода на Python с вызовом к API для ответа на вопрос «В какой научной статье был представлен трансформер глубокого обучения и где её можно найти?».
messages = [{ 'role': 'user', 'content': 'В какой научной статье был представлен трансформер' 'глубокого обучения и где её можно найти?' }] response = openai.ChatCompletion.create( model='gpt-3.5-turbo', messages=messages ) print(response.choices[0].message.content)
Ответ будет следующим:
Трансформер (Transformer) — это модель глубокого обучения, которая была представлена в статье «Attention Is All You Need» авторства Vaswani et al. в 2017 году. Статью можно найти на сайте arXiv по ссылке: arxiv.org/abs/1706.03762
...
- Проектирование архитектуры.
- Генерация диаграмм, аналитика.
- Генерация отчётов.
- Написание документации.
- Разработка парсеров, анализ и преобразование данных в любых форматах.
- Работа с базами данных и SQL запросами.
- Поиск информации и кода, помощь в обучении, ответы на вопросы.
- Поиск новых идей.
Это небольшой и неполный список, как можно использовать ChatGPT прямо сейчас в реальной работе. Исследования показывают, что ChatGPT существенно повышает производительность труда.
Повышение производительности труда при использовании ChatGPT, источник
Также у сотрудников заметно возрастает удовлетворённость от работы и общий оптимизм:
Вероятно, использование ChatGPT в будущем может стать обязательным требованием ко всем офисным вакансиям. Если ваш коллега тратит на задачу несколько дней, а вы можете выполнить её за несколько минут, это явное конкурентное преимущество.
▍ Полезные инструменты
На базе ChatGPT разработаны программы для выполнения конкретных задач по разработке, тестированию, написанию документации:
- Playwright — автоматическая генерация тестов. Альтернатива автоматическому тестированию с помощью Selenium, где нет такой нативной функции (только с помощью плагинов).
- PDF ChatBot и Docalysis — загрузка, чат и взаимодействие с любым документом PDF. Например, вы можете загрузить туда многостраничный учебник или мануал и задать боту конкретные вопросы по содержанию.
- Libraria — автономная платформа для быстрого создания и внедрения пользовательских ассистентов, которые работают на наших собственных данных с помощью OpenAI (например, получая данные скрапингом URL или из PDF, как в примере выше).
- Расширение TeamSmart AI для Chrome — команда «виртуальных ИИ-ассистентов», которые автоматизируют выполнение самых популярных задач в ChatGPT и других системах ИИ:
- написание кода;
- генерация изображений;
- рисование логотипов;
- анализ текста.
Специально для ChatGPT поставляется библиотека качественных промтов:
- Нативные клиенты для ChatGPT под различные ОС, с которыми работать удобнее, чем через браузер (см. как устроен фронтенд ChatGPT).
- Расширение Unijump к Chrome для быстрого доступа к ChatGPT без захода на chat.openai.com. Удобно выделить текст в любом окне браузера и сочетанием
Alt+J
запустить ChatGPT с подсказками:Дополнительно есть большой каталог с подсказками полезных промтов для переключения ChatGPT в тот или иной режим работы (консоль Linux, стендап-комик, финансовый аналитик, эйчар на собеседовании):
Также идёт разработка IDE нового типа e2b, полностью основанной на генерации кода в ChatGPT. В левом окне вы пишете спецификации, а справа генерируется код:
Microsoft работает над системой TaskMatrix.AI — единым интерфейсом для взаимодействия человека с миллионами API и специализированных моделей ИИ.
Вместо создания изолированных моделей ИИ это будет единая экосистема, в которой все модели ИИ взаимодействуют друг с другом и работают как коллективный организм.
▍ Плагины для ChatGPT
23 марта 2023 года OpenAI объявила об экспериментальной поддержке плагинов, которые помогают ИИ получить доступ к актуальной информации в интернете, осуществлять математические вычисления, обрабатывать сложные данные и использовать сторонние сервисы.
Для использования плагинов через API нужно получить особое разрешение от OpenAI, запись в список ожидания здесь.
На 12 апреля 2023 года разработано и допущено к использованию 24 плагина (в официальном списке их 11):
- Medium. Плагин для доступа, просмотра и извлечения контента с платформы Medium.
- SceneXplain. Плагин для разъяснения сюжета на картинках. Изображения можно отправлять по URL или в
base64
. - Weather. Плагин для получения информации о текущей погоде.
- ASCII Art. Преобразование любого текста в псевдографику ASCII.
- DomainsGPT. Проверка доступности домена и сравнение цен у регистраторов.
- Transvribe. Плагин для ответа на вопросы по видеороликам YouTube.
- PlugSugar. Поиск информации в интернете.
- APIs-guru. Плагин для доступа к программным интерфейсам в каталоге APIs.guru.
- BizToc. Поиск деловых и финансовых новостей в BizToc.
- Calculator. Выполнение базовых арифметических операций типа сложения, вычитания, умножения, деления, возведения в степень и извлечения квадратного корня.
- Datasette. Запросы SQL в базе данных Datasette.
- FreeTV App. Плагин для получения последних новостей
- Klarna. Поиск и сравнение цен из тысяч интернет-магазинов.
- Milo. Идеи для времяпровождения родителей с детьми.
- Pricerunner. Поиск релевантных продуктов и ответы на любые вопросы, связанные с шопингом.
- QuickChart. Генерация диаграмм и QR-кодов.
- SchoolDigger. Подробная информация по 120 000 средним школам в 18 500 округах США.
- Slack. Плагин для запросов к Slack.
- Speak. Изучение иностранных языков с помощью ИИ-учителя.
- Screenshot (Urlbox). Преобразование HTML в картинку, скриншоты в разных форматах, в том числе видео скроллинга страницы.
- Wolfram Cloud. Доступ к вычислениям, математике, накопленным знаниям и информации Wolfram|Alpha в режиме реального времени, поддержка Wolfram Language.
- Wolfram Alpha. Динамические вычисления и отфильтрованные качественные данные из системы Wolfram Alpha.
- Zapier. Взаимодействие с более чем пятью тысячами приложений, включая Google Sheets, Gmail, HubSpot, Salesforce и др.
- Shop. Поиск миллионов продуктов от крупнейших брендов.
Подробнее о формате плагинов см. в документации.
▍ Смена парадигмы
Мы видим, что системы ИИ меняют саму парадигму программирования и способы создания программ. Более подробно об этом см. статью «Андрей Карпаты. Software 2.0. Непонятный софт будущего».
Суть в том, что вместо написания кода мы будем обучать нейросети на выполнение определённых задач, а в идеале — просто ставить задачу и ждать, когда нейросеть самообучится на оптимальное решение, что и будет финальным итогом разработки.
Похоже на то, что нейросети заменяют собой остальной софт: не нужны текстовые и графические редакторы, если ChatGPT может сгенерировать любой текст или изображение. То же самое можно сказать о календарях/почтовых клиентах и некоторых других инструментах, с которыми может работать «виртуальный помощник», а не человек напрямую.
Уже сейчас на основе нейросетей проектируются целые классы программного обеспечения: машинный перевод, распознавание речи, синтез речи, распознавание образов, базы данных, программы для настольных игр и др.
▍ Опенсорсные альтернативы ChatGPT
Несмотря на изначальное стремление вести полностью открытую разработку, компания OpenAI не публикует модели GPT-3.5 и GPT-4, также как их техническое описание и датасеты. Ключевая техника здесь RLHF (Reinforcement Learning with Human Feedback), обучение с подкреплением на основе отзывов людей.
После случайной утечки кода модели LLaMA от Meta случился настоящий прорыв в опенсорсной разработке языковых моделей (LLM). За один последний месяц в свободном доступе опубликовано больше проектов, чем за все предыдущие годы. Сегодня вы уже можете запустить аналог ChatGPT на домашнем компьютере (Ryzen 7900X, 32 ГБ RAM, 8 ГБ VRAM), статья на Хабре.
На Github лежит список альтернативных LLM, обученных с помощью RLHF. Всё это свободные проекты с открытым исходным кодом, зачастую с весами моделей, датасетами для обучения и т. д.:
- lucidrains/PaLM-rlhf-pytorch
- togethercomputer/OpenChatKit
- oobabooga/text-generation-webui
- KoboldAI/KoboldAI-Client
- LAION-AI/Open-Assistant
- tatsu-lab/stanford_alpaca
- Прочие системы на базе LLaMA
- BlinkDL/ChatRWKV
- THUDM/ChatGLM-6B
- bigscience-workshop/xmtf
- carperai/trlx
- databrickslabs/dolly
- LianjiaTech/BELLE
- ethanyanjiali/minChatGPT
- cerebras/Cerebras-GPT
- TavernAI/TavernAI
За такой взрыв опенсорсных разработок мы должны быть благодарны LLaMA.
▍ Что дальше
Недавно исследователи из Стэнфордского университета опубликовали 386-страничный отчёт о трендах в развитии ИИ. Некоторые тенденции позволяют сделать прогноз, как будет дальше развиваться эта индустрия. Судя по графикам, совершенствование моделей ИИ происходит в геометрической прогрессии и не думает останавливаться.
Современные модели в миллионы раз крупнее, чем десять лет назад.
Вероятно, в будущем появятся новые профессии, связанные с обслуживанием ChatGPT. Это «интеграторы» ИИ в продуктовый конвейер фирмы, промт-инженеры и др. За последние несколько лет количество вакансий с упоминанием ИИ выросло в четыре раза:
С распространением ChatGPT вырастут требования к джуниорам. Теперь они должны как минимум хорошо владеть ChatGPT и доставлять какую-то дополнительную прибавочную стоимость по сравнению с ним. То есть делать то, что чат-бот не способен сделать в одиночку под управлением промт-инженера.
По мере роста использования ИИ эта область наверняка привлечёт внимание политиков и прочих шарлатанов, далёких от IT. Можно ожидать FUD в медиа, призывы принять сдерживающее законодательство или даже запретить разработку «вредоносных» технологий, которые угрожают человечеству. Многим не нравится, что ИИ может принимать за них важные жизненные решения, предсказывать мысли и поступки, управлять поведением, хотя это вроде бы очевидный путь развития генеративных моделей, которые обучаются на персональных данных:
ChatGPT — очень полезный инструмент, который во многих ситуациях сильно экономит время. Только не стоит забывать о галлюцинациях и тщательно проверять то, что он выдаёт. В новой версии GPT-4 галлюцинаций стало меньше, но они никогда не исчезнут, исходя из самой конструкции языковой модели, которая обучается без учителя. Описание GPT-4 пока не опубликовано в открытом доступе, но можно подробно изучить описание GPT-3 по научной статье 2020 года. Не зная точного ответа на вопрос, модель постоянно «экстраполирует» реальность и заполняет пробелы в данных, то есть фантазирует. Галлюцинации в таком режиме практически неизбежны. Этот креатив — самая интересная особенность GPT, иначе половина ответов была бы «Я не знаю» или цитированием поиска в интернете (который тоже зачастую даёт неправильные ответы).
Разработчикам предстоит ещё хорошо поработать над надёжностью ответов (и снизить уровень уверенности, с которой модель излагает свои галлюцинации). Языковые модели до сих пор остаются новой областью исследований. Сами разработчики GPT с удивлением открывают новые, неожиданные свойства созданных ими систем.
Система ChatGPT постоянно обновляется. В марте для платных подписчиков была запущена модель GPT-4 (статья на Хабре с обзором нового функционала) и разрешены плагины, открывающие ИИ доступ к живым данным в интернете. Так что впереди нас ждёт много неожиданных открытий.
▍ Будущее программирования
Наверное, хайп вокруг ИИ слишком раздут. В первое время любая достаточно развитая технология кажется похожей на магию. Постепенно все привыкнут к новым инструментам и будут использовать их так, словно они всегда были с нами — как интернет, смартфоны и другие технические новинки последних десятилетий.
Благодаря ChatGPT разработка стала более осмысленной. Не нужно отвлекаться на банальности типа сериализации данных или чтения из файла — а сфокусироваться на высокоуровневых концепциях. На самом интересном и важном. Если программирование раньше отвращало вас из-за скучной рутины и копания в мелочах, то это осталось в прошлом. Теперь такие проблемы нас не будут беспокоить. Остаётся чистый кайф от творчества. Неудивительно, что при использовании ChatGPT так сильно возрастает уровень счастья и удовлетворения от работы.
Кажется, что ИИ не заменит программистов, а скорее наоборот — сделает программирование ещё более востребованной профессией. В любом случае, возникнет большая новая индустрия по созданию и поддержке ИИ-инструментов, так что разработчиков и промт-инженеров нужно будет всё больше и больше, чуть ли не в каждой фирме. Проверим этот прогноз через пару десятилетий…
Автор: Анатолий Ализар