Реклама, маркетинг, инновации

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

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

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

Как можно использовать ChatGPT для написания кода в рамках повседневной практики кодирования? Именно это мы и рассмотрим в данной статье.

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

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

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

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

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

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


  

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

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

Итак, давайте рассмотрим некоторые конкретные шаги по использованию ChatGPT для написания кода.

Как ChatGPT может помочь вам в написании кода

1. Сужение и уточнение запроса

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

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

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

2. Использование ChatGPT для изучения библиотек и ресурсов

  

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

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

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

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

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

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

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

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

Является ли какая-либо из этих систем бесплатной?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3. Попросите ChatGPT написать пример кода

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

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

  

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

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

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

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

На вход функции summarize_article будет передан URL-адрес статьи на каком-либо новостном сайте, например ZDNET.com или Reuters.com.

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

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

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

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

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

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

Следует отметить один интересный момент. ChatGPT создал пример вызова написанной им процедуры, используя URL после 2021 года (когда заканчивается набор данных ChatGPT).

https://www.reuters.com/business/retail-consumer/teslas-musk-says-fremont-california-factory-may-be-sold-chip-shortage-bites-2022-03-18/

Я проверил этот URL как на сайте Reuters, так и на Wayback Machine, и его не существует. ChatGPT просто выдумал его.


Комментарии 0