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

Как использовать ChatGPT для написания: Резюме | Формулы Excel | Эссе | Сопроводительные письма

Итак, как вы можете использовать ChatGPT для написания кода в рамках своей ежедневной практики кодинга? Вот краткое описание:

  1. ChatGPT может создавать как полезный, так и непригодный код. Для достижения наилучших результатов дайте четкие и подробные подсказки.
  2. ChatGPT помогает решать конкретные задачи по кодированию, а не создавать полноценные приложения с нуля.
  3. Используйте ChatGPT, чтобы найти и выбрать подходящие библиотеки кодирования для конкретных целей, и примите участие в интерактивном обсуждении, чтобы сократить количество вариантов.
  4. Будьте осторожны с правом собственности на код, сгенерированный ИИ, и всегда проверяйте его надежность. Не стоит слепо доверять сгенерированному результату.
  5. Относитесь к взаимодействию с ChatGPT как к разговору. Уточняйте свои вопросы на основе ответов ИИ, чтобы приблизиться к желаемому результату.

Теперь давайте изучим ChatGPT более подробно.

С какими типами кодирования хорошо справляется ChatGPT?

Есть два важных факта о ChatGPT и кодировании. Первый заключается в том, что ИИ на самом деле может писать полезный код.

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

Я понял это с большим трудом. После того как я закончил работу над плагином WordPress, я решил посмотреть, насколько далеко может зайти ChatGPT.

Я написал очень тщательный запрос для приложения для Mac, включая подробное описание элементов пользовательского интерфейса, взаимодействий, того, что должно быть предусмотрено в настройках, как они будут работать и так далее. Затем я передал эту подсказку в ChatGPT.

ChatGPT ответил потоком текста и кода. Затем он остановился на середине кода. Когда я попросил его продолжить, он вырвал еще больше кода и текста. Я запрашивал продолжение за продолжением, а он вываливал все больше и больше кода. Но... ни один из них не был пригоден для использования. Он не определял, где должен находиться код, как построить проект, и - когда я внимательно посмотрел на созданный код - он упустил основные операции, которые я просил, оставив простые текстовые описания, гласящие "логика программы находится здесь".

После множества повторных тестов мне стало ясно, что если вы попросите ChatGPT создать полноценное приложение, он потерпит неудачу. Следствием этого наблюдения является то, что если вы ничего не знаете о кодировании и хотите, чтобы ChatGPT создал вам что-то, он потерпит неудачу.

В чем ChatGPT преуспевает - и делает это очень хорошо - так это в помощи тем, кто уже знает, как писать код, в создании конкретных процедур и выполнении конкретных задач. Не просите приложение, которое запускается в строке меню. Но если вы попросите ChatGPT создать процедуру для размещения меню в строке меню, а затем вставите ее в свой проект, инструмент справится с задачей вполне успешно.

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

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

Итак, учитывая это, давайте рассмотрим несколько конкретных шагов, как ChatGPT может помочь вам в написании кода.

Как использовать ChatGPT для написания кода

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

Представьте, что вы платите человеку-программисту за выполнение этого задания. Даете ли вы ему достаточно информации, чтобы он смог выполнить ваше задание? Или вы слишком расплывчаты, и человек, которому вы платите, скорее всего, будет задавать вопросы или выдаст что-то совершенно не связанное с тем, что вы хотите?

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

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

Но с развитием инструментов искусственного интеллекта более разумно использовать библиотеку искусственного интеллекта для интеллектуального извлечения и обобщения. Одно из мест, где ChatGPT превосходит всех (и это также область, которую вы можете легко проверить, чтобы избежать его авторитетного, но неправильного поведения), - это поиск библиотек и ресурсов.

OpenAI (создатель ChatGPT) продает API-доступ к движкам GPT-3 и GPT-4, которые будут делать именно то, что нам нужно. Но в данном примере предположим, что мы не хотим платить за транзакции.

Итак, давайте рассмотрим взаимодействие с ChatGPT, чтобы понять, как использовать такой инструмент, бесплатно, в проекте, который работает на PHP.

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

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

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

Эта подсказка дала мне именно то, что я хотел, включая упоминание о предложениях OpenAI. Я думаю, что OpenAI отлично подойдет для этой цели, но для этого гипотетического проекта я не хочу выделять бюджет на оплату API. Итак. Я сужу вопрос:

Есть ли среди них бесплатные?

ChatGPT подстраховался с ответом. Вот что он гласил: "Да, все десять библиотек искусственного интеллекта имеют открытый исходный код и бесплатны для использования. Однако некоторые из них могут иметь ограничения по использованию или требовать оплаты за доступ к дополнительным функциям или ресурсам". Исходя из этого, я уточнил свой вопрос:

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

Обратите внимание, что это очень похоже на разговор. Мне не нужно повторно задавать исходный вопрос. Я просто углубляюсь в вопрос, как если бы у меня под рукой был эксперт и я хотел бы получить разъяснения. В данном случае ChatGPT предоставил мне восемь вариантов библиотек, но ни в одной из них не упоминался язык PHP, на котором я планировал писать код. Итак, вот следующая подсказка:

Какие из этих 8 библиотек я могу использовать с PHP?

Он вернул три библиотеки, но я не был уверен в том, что каждая из них делает. Итак, еще один вопрос:

В чем разница между Sumy, Gensim и NLTK?

Я все еще не был уверен, поэтому уточнил свой план использования, а затем спросил:

Если я хочу создавать резюме новостных статей на веб-страницах, какая библиотека подойдет лучше?

Ответ, который я получил, был ясным и многообещающим: "Sumy специально разработана для резюмирования текста, то есть для создания резюме, в котором собрана самая важная информация из фрагмента текста". Итак, настало время посмотреть, что включает в себя использование Sumy с PHP. Я задал свой последний вопрос для этой части проекта:

Можете ли вы объяснить, как использовать Sumy из PHP?

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

Может показаться, что это не похоже на программирование, но я уверяю вас, что это именно так. Программирование - это не просто строчки кода на странице. Программирование - это определение того, как интегрировать все различные ресурсы и системы вместе, и как общаться со всеми различными компонентами вашего решения. Здесь ChatGPT помог мне провести анализ интеграции.

Кстати, мне было интересно, сможет ли ИИ Gemini (бывший Bard) от Google помочь в том же направлении. Gemini не умеет писать код, но по сравнению с ответами ChatGPT он дал некоторые дополнительные сведения об аспекте планирования в программировании. Так что не стесняйтесь использовать несколько инструментов для получения нужных вам ответов. Вот эта история: Gemini против ChatGPT: Может ли Gemini помочь вам в написании кода? С тех пор как я написал эту статью, Google добавила в Gemini некоторые возможности кодирования, но они не так уж и велики. Я протестировал новые способности Google Gemini к кодированию. Все прошло не очень хорошо. А совсем недавно я покопался в Gemini Advanced. Он по-прежнему не проходит многие тесты.

Далее следует кодирование.

Хорошо, давайте сделаем паузу. Эта статья называется "Как использовать ChatGPT для написания кода". И так оно и будет. Но на самом деле мы просим ChatGPT написать пример кода.

Давайте проясним: если вы не пишете очень маленькую функцию (как, например, сортировщик/рандомизатор строк, который ChatGPT написал для моей жены), ChatGPT не сможет написать ваш финальный код. Во-первых, вам придется его поддерживать. ChatGPT ужасно умеет модифицировать уже написанный код. Ужасно, в том смысле, что он этого не делает. Поэтому, чтобы получить новый код, вам придется попросить ChatGPT сгенерировать что-то новое. Как я обнаружил ранее, даже если ваш запрос практически идентичен, ChatGPT может изменить то, что он вам выдает, самым неожиданным образом.

Итак, итог: ChatGPT не может поддерживать ваш код или даже корректировать его.

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

Но это не значит, что код примера бесполезен - это далеко не так. Давайте посмотрим на подсказку, которую я написал на основе проекта, описанного ранее. Вот первая часть:

Напишите функцию PHP под названием summarize_article.

На вход summarize_article будет передан URL-адрес статьи на новостном сайте, например example.com.

Я указываю ChatGPT язык программирования, который он должен использовать. Я также указываю ему входные данные, но при этом предоставляю два сайта в качестве образцов, чтобы помочь ChatGPT понять стиль статьи. Честно говоря, я не уверен, что ChatGPT не проигнорировал эту подсказку. Далее я расскажу ему, как выполнить основную часть работы:

Внутри summarize_article получите содержимое веб-страницы по указанному URL. Используя библиотеку Sumy из PHP и любые другие необходимые библиотеки, извлеките основную часть статьи, игнорируя рекламу или встроенные материалы, и кратко изложите ее примерно в 50 словах. Убедитесь, что резюме состоит из законченных предложений. При необходимости вы можете превысить 50 слов, чтобы закончить последнее предложение.

Это очень похоже на то, как я бы инструктировал сотрудника. Я бы хотел, чтобы он знал, что его возможности не ограничиваются только Sumy. Если им нужен другой инструмент, я хочу, чтобы они использовали его.

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

По завершении обработки закодируйте summarize_article так, чтобы он возвращал резюме в виде обычного текста.

Получившийся код довольно прост. ChatGPT обратился к другой библиотеке (Goose), чтобы получить содержание статьи. Затем он передал это резюме в Sumy с ограничением в 50 слов, а затем вернул результат. Но после того, как основы написаны, остается только программировать, чтобы вернуться к ним и добавить изменения, настроить то, что передается двум библиотекам, и получить результаты.

Вопросы и ответы

Заменяет ли ChatGPT программистов?

Не сейчас или, по крайней мере, пока. ChatGPT программирует на уровне талантливого студента-первокурсника, но он ленив (как и тот студент-первокурсник). Инструмент может уменьшить потребность в программистах начального уровня, но на его нынешнем уровне, я думаю, он просто облегчит жизнь программистам начального уровня (и даже программистам с большим опытом) в написании кода и поиске информации. Это определенно экономит время, но есть немного проектов по программированию, которые он может выполнить самостоятельно - по крайней мере, сейчас. А в 2030 году? Кто знает.

Как получить ответы на вопросы по кодированию в ChatGPT?

Просто спросите об этом. Вы видели выше, как я использовал диалог интерактивного обсуждения, чтобы сузить круг нужных мне ответов. Работая с ChatGPT, не ждите, что один вопрос волшебным образом сделает за вас всю работу. Но используйте ChatGPT как помощника и ресурс, и он даст вам много очень полезной информации. Конечно, проверяйте эту информацию, потому что, как говорит Джон Шульман, соучредитель OpenAI, "больше всего мы беспокоились о фактичности, потому что модель любит все выдумывать".

Гарантируется ли отсутствие ошибок в коде, сгенерированном ChatGPT?

Нет, черт возьми! Но вы также не можете доверять коду, который пишут программисты-люди. Я, конечно, не доверяю ни одному коду, который пишу сам. Код выходит из процесса создания невероятно несовершенным. Всегда есть ошибки. Перед отправкой нужно тестировать, тестировать и еще раз тестировать. Затем альфа-тестирование с несколькими избранными жертвами. Затем бета-тестирование с более широким кругом пользователей. Даже после всего этого ошибки будут. То, что ИИ играет в кодирование, не означает, что он может создавать код без ошибок. Не доверяйте. Всегда проверяйте. И вы все равно не получите полностью безбаговый код. Такова природа вселенной.

Насколько подробным должно быть мое описание проблемы программирования при обращении в ChatGPT?

Подробно. Посмотрите на это с другой стороны: чем больше вы оставляете возможностей для интерпретации, тем больше ИИ будет идти своим путем. Когда я даю ChatGPT подсказки, чтобы он помог мне в программировании, я представляю, что даю задание по программированию одному из своих студентов или кому-то, кто работает на меня. Дал ли я этому человеку достаточно деталей, чтобы он смог создать первый проект, или ему придется задавать мне кучу дополнительных вопросов? Хуже того, если у человека будет так мало указаний, что он пойдет совершенно не в том направлении? Не ленитесь. ChatGPT может сэкономить вам часы или даже дни программирования (я так и сделал), но только если вы дадите ему полезные инструкции.

Если я использую ChatGPT для написания своего кода, кому он принадлежит?

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

Какие языки программирования знает ChatGPT?

Большинство из них. Я протестировал такие распространенные современные языки, как PHP, Python, Java, Kotlin, Swift, C# и другие. Но затем я попросил инструмент написать код на непонятных языках темной эпохи, таких как COBOL, Fortran, Forth, LISP, ALGOL, RPG (генератор программ для создания отчетов, а не ролевая игра) и даже на языке ассемблера IBM/360.

В качестве вишенки на торте я дал ему такую подсказку:

Напишите последовательность, которая отображает 'Hello, world' в формате ascii мигающими лампочками на передней панели PDP 8/e

PDP 8/e был моим самым первым компьютером, и ChatGPT действительно дал мне инструкции по переключению в программе с помощью переключателей на передней панели. Я был впечатлен, ликовал и немного боялся.

Может ли ChatGPT помочь мне в решении задач анализа и визуализации данных?

Да, и многое из этого можно сделать без кода. Но вот тут-то и начинается самое интересное. В статье выше я попросил ChatGPT Plus "Составить гистограмму пяти крупнейших городов мира по численности населения", и он это сделал. Но вам нужен код? Попробуйте спросить:

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

Добавляя "на Swift", вы указываете язык программирования. Указывая, откуда берутся данные, и заставляя ChatGPT Plus включать библиотеки, он знает, какие еще ресурсы нужны программе. Вот почему программирование с помощью ИИ требует от вас знаний о программировании. Но если вы разбираетесь, это здорово. Потому что три предложения могут дать вам хороший кусок аннотированного кода. Круто, да?

Как ChatGPT справляется с различиями между диалектами и реализациями того или иного языка программирования?

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

Поэтому я бы исходил из этих двух предположений:

  1. Чем свежее диалектическое изменение, тем меньше вероятность того, что ChatGPT знает о нем, и
  2. Чем популярнее язык в целом, тем больше данных для обучения он получил, а значит, тем точнее он будет.

Что в итоге? ChatGPT может быть очень полезным инструментом. Только не стоит приписывать ему сверхспособности.

Эта статья является экземпляром Турбо-текста. Такие тексты отлично продвигают сайты в ТОП органического поиска Яндекс и Google. Здесь я пишу об этом более подробно.

Nikita Interactive, founder

Искренне Ваш,

Nikita Interactive

Это реальная история!

Раздел с Турбо-текстами привлек 18 090 пользователей за 9 месяцев.
На новом сайте. Без ссылок.

Измеримые результаты и устойчивый успех.