Открыть сервис

CodeWhisperer

CodeWhisperer — это облачный сервис автодополнения кода на основе искусственного интеллекта, разработанный компанией Amazon Web Services (AWS). Он предназначен для повышения продуктивности разработчиков путём генерации фрагментов кода, целых функций, комментариев и предложений в реальном времени непосредственно в среде разработки. CodeWhisperer анализирует текущий контекст кода и комментарии на естественном языке, чтобы предложить наиболее релевантные варианты реализации.

История

Сервис был анонсирован компанией Amazon 13 апреля 2023 года в рамках конференции AWS Summit в Сан-Франциско. Запуск состоялся в статусе публичной бета-версии, доступной для всех пользователей AWS. Изначально CodeWhisperer поддерживал ограниченное количество языков программирования и сред разработки. В июне 2023 года, на конференции AWS re:Inforce, было объявлено о расширении функциональности, включая интеграцию с консолью AWS для генерации кода для сервисов Amazon, таких как Amazon Athena и AWS Lambda. В ноябре 2023 года, на конференции AWS re:Invent, была представлена версия для индивидуальных разработчиков (CodeWhisperer Individual Tier), которая стала бесплатной и не требующей подписки на AWS. В апреле 2024 года сервис был переименован в Amazon Q Developer, став частью более широкой платформы AI-ассистента Amazon Q. Название «CodeWhisperer» в настоящее время используется как историческое или как часть бренда для конкретных функций автодополнения в рамках Amazon Q Developer.

Архитектура и принцип работы

CodeWhisperer основан на технологии глубокого обучения, использующей большую языковую модель (LLM), обученную на миллиардах строк исходного кода из открытых репозиториев, включая проекты на GitHub, а также на документации AWS и внутренних данных Amazon. Модель обучена предсказывать следующий токен (символ, слово или фрагмент кода) на основе контекста, который включает в себя:

  • Текущий файл и его содержимое.
  • Открытые файлы в проекте.
  • Комментарии на естественном языке (например, // создать функцию для вычисления факториала).
  • Импорты и зависимости.
  • Позицию курсора.

При вводе кода модель генерирует несколько вариантов продолжения, ранжирует их по вероятности и отображает наиболее вероятный в виде подсказки. Разработчик может принять предложение (клавиша Tab), отклонить его (Esc) или просмотреть альтернативные варианты (стрелки). Генерация происходит в реальном времени, с задержкой обычно менее 100 миллисекунд.

Ключевые характеристики

Поддерживаемые языки программирования

CodeWhisperer поддерживает все основные языки программирования, включая, но не ограничиваясь:

Интеграция со средами разработки (IDE)

Сервис доступен в виде плагина для популярных IDE:

Безопасность и фильтрация кода

Одной из ключевых особенностей CodeWhisperer является встроенная система проверки на наличие уязвимостей и лицензионных ограничений. Сервис анализирует сгенерированный код на предмет:

  • Уязвимостей безопасности: соответствие рекомендациям OWASP Top 10, CWE (Common Weakness Enumeration) и правилам безопасности AWS. При обнаружении потенциальной уязвимости (например, SQL-инъекция, небезопасное хранение паролей) CodeWhisperer помечает код и предлагает исправления.
  • Лицензионной совместимости: сервис сравнивает сгенерированный код с кодом из открытых репозиториев, лицензированных под определёнными условиями (например, GPL, Apache, MIT). Если предложение совпадает с фрагментом кода, имеющим ограничивающую лицензию, CodeWhisperer предупреждает пользователя и предлагает альтернативные варианты. Это позволяет избежать случайного нарушения лицензий.

Контекстная осведомлённость

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

Применение

Основные сценарии использования

  • Автодополнение кода: генерация отдельных строк, блоков, циклов, условий.
  • Генерация функций: создание целых функций на основе комментария или сигнатуры.
  • Написание тестов: генерация unit-тестов на основе существующего кода.
  • Работа с AWS SDK: автодополнение вызовов API AWS, генерация кода для работы с сервисами (S3, DynamoDB, Lambda, EC2).
  • Написание комментариев и документации: генерация docstring и комментариев к коду.
  • Обнаружение и исправление ошибок: выявление типовых ошибок и предложение исправлений.

Примеры

  • Разработчик пишет в Python: # создать список чисел от 1 до 10 — CodeWhisperer предлагает numbers = list(range(1, 11)).
  • Разработчик пишет в Java: // подключиться к базе данных PostgreSQL — CodeWhisperer генерирует код с использованием JDBC или Spring Data JPA.
  • Разработчик пишет в TypeScript: // создать функцию для загрузки файла в S3 — CodeWhisperer генерирует код с использованием AWS SDK v3.

Сравнение с аналогами

CodeWhisperer конкурирует с другими AI-ассистентами для разработчиков, такими как GitHub Copilot (разработка GitHub, принадлежащего Microsoft) и Tabnine. Основные отличия:

ХарактеристикаCodeWhisperer (Amazon Q Developer)GitHub CopilotTabnine
РазработчикAmazon Web ServicesGitHub (Microsoft)Tabnine Ltd.
МодельСобственная LLM, обученная на AWS-коде и открытых репозиторияхOpenAI Codex (GPT-3.5)Собственные модели, включая CodeBERT
Бесплатный тарифДа (для индивидуальных разработчиков, без ограничений по объёму)Да (ограниченный, 60 запросов в месяц)Да (ограниченный, 2000 завершений в месяц)
Проверка безопасностиВстроенная (OWASP, CWE, лицензионная проверка)Отсутствует (только в платной версии с GitHub Advanced Security)Отсутствует
Интеграция с AWSГлубокая (консоль AWS, Lambda, Cloud9)Ограниченная (через плагины)Ограниченная
Поддержка языков15+ основных языков20+ языков30+ языков
КонфиденциальностьКод не используется для обучения модели (для корпоративных клиентов)Код может использоваться для обучения (если не отключено)Код не используется для обучения (в платных тарифах)

Критика и ограничения

  • Качество предложений: как и другие AI-генераторы кода, CodeWhisperer может генерировать синтаксически правильный, но семантически неверный код, который не решает поставленную задачу или содержит логические ошибки.
  • Зависимость от контекста: при работе с нестандартными или редкими библиотеками качество предложений может снижаться.
  • Проблемы с авторскими правами: хотя сервис предупреждает о лицензионных ограничениях, существуют юридические споры о том, может ли сгенерированный AI код быть защищён авторским правом, и кто несёт ответственность за его использование.
  • Привязка к экосистеме AWS: глубокая интеграция с AWS может быть избыточной для разработчиков, не использующих облачные сервисы Amazon.
  • Производительность: в некоторых случаях генерация кода может занимать больше времени, чем ручное написание, особенно для простых задач.

Интересные факты

  • CodeWhisperer был обучен на коде из более чем 100 000 открытых проектов.
  • Сервис доступен бесплатно для всех разработчиков, независимо от того, используют ли они AWS.
  • В 2023 году Amazon заявила, что CodeWhisperer помогает разработчикам писать код на 57% быстрее (по результатам внутренних тестов).
  • Название «Whisperer» (от англ. whisper — шептать) отсылает к идее, что сервис «шепчет» разработчику подсказки, как «конь-шептун» (horse whisperer) — человек, понимающий лошадей.

Источники

  • Официальная документация Amazon Q Developer (бывший CodeWhisperer) — AWS Documentation.
  • Анонс CodeWhisperer на AWS Summit 2023 — Amazon Press Release.
  • Сравнение AI-ассистентов для кода — аналитические обзоры на TechCrunch, The Verge, InfoWorld.
  • Исследование производительности разработчиков с CodeWhisperer — AWS Blog, 2023.
  • Информация о лицензионной проверке — документация AWS CodeWhisperer.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →