# Васи Филомин продемонстрировал возможности ИИ-ассистента Amazon CodeWhisperer

Источник: https://www.youtube.com/watch?v=hesiEjgF7Jo
Канал: The TWIML AI Podcast
Опубликовано: 10.10.2022

---

В рамках подкаста The TWIML AI Podcast ведущий Сэм Чаррингтон и вице-президент по ИИ-сервисам в Amazon Web Services (AWS) Васи Филомин провели интерактивную демонстрацию интеллектуального помощника для разработчиков Amazon CodeWhisperer. В качестве рабочей среды использовалась популярная IDE JetBrains PyCharm, а основным языком написания кода стал Python. Эксперты подробно разобрали практические сценарии применения генеративного искусственного интеллекта: от выполнения повседневных рутинных задач до интеграции со сложными облачными сервисами и создания полноценных скриптов визуализации данных.

## 🛠️ Автоматизация рутины: трансформация данных между JSON и CSV
[[JUMP:0:00]]

Демонстрация возможностей ИИ-ассистента началась в среде разработки JetBrains PyCharm. Перед началом написания кода Васи Филомин с иронией признался, что Python не входит в число его любимых языков программирования. Однако, по мнению гостя, именно в таких ситуациях CodeWhisperer раскрывает свой потенциал с максимальной эффективностью, помогая разработчику уверенно ориентироваться в менее знакомом синтаксисе. Инструмент активируется в системе сразу после установки официального расширения AWS Toolkit, панель которого отображается в левой части экрана.

Первым практическим примером стала базовая утилита, с необходимостью создания которой регулярно сталкивается большинство инженеров. Задача заключалась в написании функции, преобразующей файл формата JSON в таблицу CSV. Взаимодействие с ассистентом строится на базе текстовых комментариев на естественном языке. Как только Филомин начал вводить описание задачи, CodeWhisperer автоматически предугадал и дополнил текст комментария. Далее разработчик уточнил технические требования, указав, что ключи JSON-файла должны использоваться в качестве названий колонок в CSV. Ассистент мгновенно подхватил и это уточнение.

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

Сразу после завершения первой задачи CodeWhisperer продемонстрировал способность предугадывать дальнейший ход мысли программиста. В пустой строке редактора ИИ автоматически предложил создать обратную функцию — для конвертации данных из CSV обратно в JSON. По словам Филомина, создание подобных зеркальных трансформаций является стандартным паттерном в разработке. Разработчик принял предложение, и ассистент сгенерировал корректный код с использованием объекта `DictReader` для чтения CSV-данных и метода `json.dump` для их последующего сохранения в JSON-формате.

## ☁️ Интеграция со сложными облачными интерфейсами AWS
[[JUMP:3:37]]

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

Реализация задачи началась с объявления переменных для аутентификации в облачной системе AWS. CodeWhisperer автоматически сгенерировал заглушки для учетных данных:

* Идентификатор ключа доступа (access key)
* Секретный ключ (secret key)
* Целевой регион облачной инфраструктуры (region)

При этом ассистент не стал подставлять реальные секретные ключи, которые могли содержаться в его обучающей выборке, обеспечивая тем самым безопасность разработки. Далее Филомин сформулировал задачу в комментарии: написать функцию, которая берет аудиофайл на немецком языке и транскрибирует его в текстовый формат.

Процесс генерации занял некоторое время из-за комплексного характера запрашиваемой логики. CodeWhisperer самостоятельно инициализировал клиент библиотеки `boto3`, передав в него ранее объявленные переменные авторизации и региона. Наиболее важной деталью стало то, что система без дополнительных подсказок поняла лингвистический контекст и автоматически прописала необходимый языковой идентификатор (Locale) — `de-DE`. ИИ безошибочно вызвал нужный метод `start_transcription_job`, избавляя программиста от утомительного поиска точных названий функций и параметров в официальной документации AWS.

## 🧠 Контекстное восприятие и ускорение поиска решений
[[JUMP:6:13]]

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

Васи Филомин подтвердил эту способность и подробно объяснил внутреннюю механику работы ИИ-ассистента:

* Контекстный анализ: CodeWhisperer непрерывно собирает информацию о проекте в момент вызова функции.
* Фокус на курсоре: ключевым источником контекста выступает код, расположенный непосредственно вокруг текущей позиции курсора разработчика.
* Межфайловое сканирование: алгоритмы способны анализировать содержимое других открытых и связанных файлов внутри текущего проекта, чтобы точнее подстроить генерацию под архитектурный стиль разработчика.

Чтобы наглядно продемонстрировать глубокое понимание логики, Филомин удалил финальную строку возврата значения и попросил ИИ дополнить код функцией ожидания завершения процесса транскрипции. CodeWhisperer мгновенно сориентировался и построил многоуровневую логику проверки статуса операции. Система сгенерировала цикл `while True`, который с определенной периодичностью опрашивает облачный сервис, отправляет поток в режим сна (`time.sleep`) на время ожидания и извлекает итоговый статус выполнения задачи.

По утверждению Филомина, ключевая ценность такой технологии заключается в кардинальном улучшении обнаруживаемости (discoverability) сложных программных интерфейсов. Разработчикам больше нет необходимости переходить в браузер, изучать внешние справочники или копировать готовые куски кода со Stack Overflow — все необходимые шаблоны и микро-решения предоставляются непосредственно внутри среды разработки (IDE).

## 📊 Визуализация математических данных и философия разработки
[[JUMP:7:44]]

Заключительный этап демонстрации был посвящен созданию полностью работоспособного исполняемого скрипта для построения графиков, чтобы проверить корректность работы ИИ в реальном времени. Васи Филомин сформулировал комплексный и детализированный запрос. Он попросил CodeWhisperer написать функцию для построения математических графиков функций синуса `sin(x)` и удвоенного косинуса `2 * cos(x)`. При этом к визуализации предъявлялись строгие требования: линии должны быть выполнены в виде красных и синих штрихов (пунктиров), а расчетный диапазон значений должен строго лежать в пределах от минус пи до пи.

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

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

1.  Полная самодокументированность и понятность кода без избыточных внешних пояснений.
2.  Слабая связанность (decoupling) отдельных компонентов системы.
3.  Изоляция зон ответственности между архитектурными модулями.

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

## 🤖 Границы ответственности инженера и дорожная карта продукта
[[JUMP:10:10]]

Успешный запуск финального скрипта подвел участников к обсуждению роли искусственного интеллекта в рабочем процессе ИТ-специалистов. Васи Филомин подчеркнул, что, несмотря на высокую автономность CodeWhisperer, финальную и полную ответственность за работоспособность, безопасность и качество написанного кода всегда несет исключительно сам разработчик. Инженер обязан обладать достаточной квалификацией, чтобы критически оценивать предложенные варианты и осознанно принимать решения о внедрении того или иного фрагмента в свой проект.

Именно по этой причине, как заявляет Филомин, компания AWS позиционирует свой продукт именно как умного «компаньона» (companion), а не как лидера, заменяющего человека в процессе принятия решений. Его главная задача — избавить специалиста от рутинных поисков информации в сторонних источниках и ускорить механическую часть работы. В завершение встречи гость отметил, что замечание ведущего по поводу автоматической устойчивости к опечаткам подсказало ему отличную идею, которая будет передана команде инженеров для включения в официальный план развития (roadmap) продукта Amazon CodeWhisperer.