Генерация кода
Этот раздел находится в разработке.
Last updated
Этот раздел находится в разработке.
Last updated
Языковые модели с программной помощью (Program-Aided Language Models), такие как ChatGPT, очень эффективны в генерации кода. В этом разделе мы рассмотрим множество примеров использования ChatGPT для генерации кода.
Все примеры ниже используют OpenAI Playground (режим чата) и модель gpt-3.5-turbo
.
Как и у всех чат-моделей от OpenAI, вы можете воспользоваться функцией «Системное сообщение» для управления поведением и структурой ответов данной модели. Мы планируем использовать следующее "Системное сообщение" для создания примеров промптов:
User Message будет являться самим промптом с инструкцией о конкретном коде, который вы хотите, чтобы модель сгенерировала. Ниже приведен снимок экрана первого базового промпта для генерации кода. Обратите внимание, что финальный код был сгенерирован помощником (Assistant).
Вот переведенный промпт, если вы хотите попробовать его самостоятельно:
Вы также можете использовать возможности генерации кода этих моделей для создания кода только на основе комментариев. Рассмотрим еще один пример, в котором инструкции передаются в виде блока комментариев:
Промпт:
Результат:
Сгенерированный код выглядит как работающий код. Однако в выводе отсутствует важное утверждение import
, а именно import json
. Несмотря на то, что эти модели генерируют работающий код, важно обратить внимание на такие мелкие детали и всегда тестировать свой код.
Эти модели также интегрированы в программно-управляемые языковые модели, включая GitHub Copilot, что делает их незаменимыми для разработчиков. Одной из выдающихся характеристик является способность модели к автозаполнению функций.
Промпт:
Результат:
Помимо базового примера генерации кода выше, вы можете использовать модель для генерации полезного кода, который может использоваться в других аспектах программирования, например, для создания и тестирования MySQL-запросов.
MySQL-запросы - это команды или инструкции, которые отправляются базе данных MySQL для выполнения операций с данными. MySQL является популярной системой управления базами данных (СУБД), которая позволяет хранить, организовывать и извлекать информацию из базы данных. Запросы представляют собой способ взаимодействия с базой данных и выполняют разнообразные операции, такие как добавление, обновление, удаление и извлечение данных.
Предположим, у вас есть набор данных с некоторой информацией, которую вы можете включить в промпт, а затем указать модели сгенерировать конкретный запрос. Например:
Результат:
Модель генерирует запрос! Однако в данном примере мы придумали базу данных, поэтому у нас нет базы данных для проверки сгенерированного запроса. Если вы тестируете данный пример, то создание такой базы данных может оказаться полезным. К счастью, ее можно сгенерировать и с помощью ChatGPT.
Один из подходов заключается в использовании модифицированной версии приведенного выше запроса с несколько иными инструкциями для генерации схемы базы данных:
Модель сгенерировала следующую схему:
Вы можете создать временную базу данных, используя, например, sqliteonline.com
Вам также понадобятся фиктивные данные, чтобы проверить, был ли сгенерированный исходный запрос действительным. Давайте также воспользуемся ChatGPT для этого! Промпт может выглядеть примерно следующим образом:
Вывод с операторами INSERT:
Теперь, когда у вас есть база данных и фиктивные данные, вы можете проверить исходный запрос. На основе фиктивных данных результатом должно быть две строки с именами Jane Doe
и John Doe
.
Если вы изучаете программирование на определенном языке, может быть полезно попросить модель объяснить определенные части кода. Давайте воспользуемся сгенерированным выше запросом и попросим модель объяснить его.
Если вы используете то же системное сообщение, что и ранее, будьте осторожны с тем, как вы настраиваете модель. Например, если мы используем следующий пример, модель может заметить, что она ориентирована на помощь в программировании на языке Python, однако она всё равно предоставит объяснение. Иногда модель может отказаться генерировать то, что вы ей указываете, поскольку она ориентирована на выполнение инструкций из системного сообщения.
Промпт:
Результат: