Использование предложений машинного обучения для разработки кода.

Введение

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

Для демонстрации я буду использовать Код Visual Studio (VS Code) с кодом Python и TypeScript из моего предыдущего блога Обработка миллионов объектов Amazon S3. Такое ощущение, будто я пишу о своей кончине как разработчика программного обеспечения, но я скорее приму перемены, чем останусь в пыли.

Настраивать

Первым шагом является включение CodeWhisper в вашу IDE. Есть два варианта его использования: CodeWhisperer Professional и CodeWhispererИндивидуальный. Мы воспользуемся индивидуальным вариантом, так как он бесплатен и быстро настраивается.

Аутентификация

Чтобы использовать CodeWhisperer с вашей IDE, требуется аутентифицированное соединение с AWS (это отличается от учетной записи AWS). Мы будем использовать AWS Builder ID — личный профиль, независимый от вашей компании или учебного заведения. Для регистрации воспользуйтесь этой ссылкой и следуйте подсказкам.

Установите набор инструментов AWS

Следующим шагом будет установка AWS Toolkit for Visual Studio Code, которую можно сделать, нажав на эту ссылку. На веб-странице нажмите Установить, и в VS Code вы увидите следующее:

В левой части VS Code щелкните значок AWS, а затем Пуск в разделе CodeWhisperer:

VS Code откроет новое окно. Следуйте инструкциям, чтобы войти в систему, используя свой идентификатор AWS Builder. VS Code откроет веб-страницу. Вставьте код доступа и авторизуйте соединение. Если все прошло хорошо, вы увидите в VS Code следующее:

Код приложения

Пришло время написать код. Начну с кода приложения (функции AWS Lambda) из моего предыдущего блога Обработка миллионов объектов Amazon S3:

1. loader.py: список и загрузка указателей объектов Amazon S3 (S3) в очередь Amazon Simple Queue Service (SQS).

2. worker.py: опрос очереди SQS и обработка объектов S3.

Я продемонстрирую это с помощью loader.py (worker.py будет аналогично) и начну с ввода моего предыдущего кода, документируя предложения, предложенные CodeWhisperer. Я набрал следующее:

import boto3

s3 =

CodeWhisperer знал, что я хочу создать клиент boto3 S3 (предложение серого цвета):

Хороший! Затем я начал определять свою функцию-обработчик, и CodeWhisperer предложил следующий код:

Это не то, что я хотел, но он предоставляет шаблон для функции Lambda для чтения записей из очереди SQS. Вы можете нажать стрелку влево и вправо, чтобы увидеть другие рекомендации CodeWhisperer (полный список команд CodeWhisperer находится здесь). Ниже предлагается еще одна рекомендация:

Это все еще не то, что я хотел, поскольку loader.py — это достаточно настраиваемая функция Lambda, но CodeWhisperer предоставил отличный шаблонный код для стандартных случаев использования.

Я вставил остальную часть функции-обработчика дословно и начал писать вспомогательные функции. Я начал определять функцию отправки сообщений в SQS, а CodeWhisperer заполнил все остальное — впечатляет!

CodeWhisperer также имеет возможность предлагать комментарии. Ниже представлено предложение по добавлению комментария docstring к функции send_sqs_batch:

Кодекс инфраструктуры

В своем предыдущем блоге я развернул решение с помощью AWS Cloud Development Kit (CDK). Давайте поэкспериментируем с кодом Typescript CDK и посмотрим, как работает CodeWhisperer. Я начал создавать очередь SQS, и CodeWhisperer предложил queueName в качестве опорной конструкции:

Вот аналогичная ситуация при создании лямбда-функции. CodeWhisperer предлагает functionName в качестве опорной конструкции:

Сканирование безопасности

CodeWhisperer также имеет возможность выполнять сканирование безопасности вашего кода. Чтобы запустить сканирование, нажмите Запустить сканирование безопасности в левой части VS Code:

В коде блога не было обнаружено никаких недостатков безопасности, но, запустив его в другом репозитории, я обнаружил уязвимости SQL-инъекций:

Вынос

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

Заключение

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