OpenAI Codex

OpenAI Codex (англ. OpenAI Codex) — искусственный интеллект, разработанный организацией OpenAI в 2021 году на основе языковой модели GPT-3. Система анализирует естественный язык (технология prompt engineering[1]) и генерирует программный код в ответ, позволяя даже непрофессионалам создавать приложения и веб-сайты[2][3].

Codex является наследником модели GPT-3 от OpenAI, адаптированной для задач программирования. В 2021 году OpenAI представила API для Codex в статусе бета-версии[4]. В марте 2023 года OpenAI закрыла доступ к Codex[5], однако под давлением научного сообщества вновь предоставила его в рамках своей исследовательской программы[6].

Технические особенности

В основе Codex лежит крупная нейронная сеть, обученная на текстах, а также на 159 гигабайтах кода на языке Python, собранных из 54 миллионов файлов с ресурса GitHub[7][8]. Кроме помощи при программировании приложений и веб-сайтов, Codex лежит в основе инструмента GitHub Copilot, реализующего автодополнение кода для выбранных IDE, таких как Visual Studio Code и Neovim[4][1]. Обычный сценарий работы с Codex — ввод команды (prompt engineering) в виде комментария на Python, например:

# посчитать скользящее среднее для массива с заданным размером окна

и далее — использование ИИ для генерации подходящего блока кода по сформулированному запросу[9]. По данным OpenAI, Codex может корректно завершить примерно 37 % пользовательских запросов, делая упор на ускорение рутинных этапов программирования, а не на полную его замену. Особенность системы — эффективное сопоставление простых задач с уже существующими решениями, что, по оценке разработчиков, является «наименее увлекательной частью программирования»[10][11]. Джереми Ховард (Jeremy Howard), сооснователь проекта Fast.ai, отметил: «Codex — это способ писать код, почти не вводя его вручную: он не всегда прав, но обычно довольно близок к верному»[12]. По результатам статьи исследователей OpenAI, при 100 прохождениях теста Codex выдал рабочее решение в 70,2 % случаев[13]. Codex может создавать код на более чем дюжине языков программирования, включая Go, JavaScript, Perl, PHP, Ruby, Shell, Swift и TypeScript, хотя наиболее эффективен именно на Python[4]. В обзорах отмечено, что система способна например, создавать браузерные игры на JavaScript и визуализировать научные данные с помощью matplotlib[11]; она также взаимодействует с различными сервисами, включая Mailchimp, Microsoft Word, Spotify и Google Календарь[11][14]. Microsoft проявляет интерес к дальнейшему развитию Codex[14].

В качестве примера: чтобы создать персонажа в стиле Minecraft при помощи библиотеки, неизвестной Codex, требуется описать ИИ интерфейс API в подсказке[1]. В таком случае Codex использует API Simulated Player для Minecraft (библиотеку typescript для управления персонажем через команды: движение, диалог, осмотр инвентаря и т.д.)[1]. Можно указывать специфические команды API для генерации и автодополнения кода[1][15]:

Команда:
/* Команды Minecraft-бота через Simulated Player API. Если комментарий носит разговорный характер, бот отвечает как дружелюбный бот Minecraft. Иначе выполняется как приказ.*/

// СПРАВОЧНИК API:
// moveRelative(leftRight: number, backwardForward: number, speed?: number): void - Заставляет персонажа идти в указанном направлении относительно текущего поворота.
// stopMoving(): void - Останавливает движение, если персонаж идёт.
// lookAtEntity(entity: Entity): void - Поворачивает голову/тело персонажа к указанной сущности.
// jumpUp(): boolean - Прыжок персонажа.
// chat(message: string): void - Отправляет сообщение в игровой чат от лица персонажа.
// listInventory(object: Block | SimulatedPlayer | Player): InventoryComponentContainer - возвращает список всех предметов у игрока или в сундуке.

/* Несколько примеров использования API */
// Идти влево
bot.moveRelative(1, 0, 1);
// Стоп!
bot.stopMoving();
// Двигаться назад полсекунды
bot.moveRelative(0, -1, 1);
await setTimeout(() => bot.stopMoving(), 500);
// Вперёд на немного

Результат:
bot.moveRelative(0, 1, 1);
await setTimeout(() => bot.stopMoving(), 500);

Гиперпараметры

Поведение моделей Codex регулируется рядом гиперпараметров, включая количество токенов и температуру[1]. Гиперпараметр temperature определяет вариативность ответов: при значении 0 ИИ генерирует один и тот же ответ на одинаковый запрос в рамках одной сессии[1]. Параметр stop sequence позволяет ограничить генерацию — достаточно указать в команде или комментарии маркёр окончания, например # для Python или // для JavaScript[1].

Проблемы и ограничения

Демонстрации OpenAI выявили недостатки: неэффективность или странности некоторых сгенерированных участков кода[11], а по признанию технического директора OpenAI Грега Брокмана, Codex «иногда не понимает, что вы хотите», что требует нескольких попыток[14]. Исследователи отмечают трудности с решениями высокоуровневых и многошаговых задач — модель может выдавать ошибочные результаты или действовать неинтуитивно[13].

Кроме того, отмечались вопросы безопасности: например, излишняя самоуверенность у новичков-программистов, унаследованные предвзятости с обучающего корпуса и опасность генерации уязвимого кода[13]. Так как Codex обучался на открытых данных, существует риск «отравления данных» путём загрузки вредоносных фрагментов[11]. Согласно исследованию Нью-Йоркского университета, примерно 40 % кода, сгенерированного GitHub Copilot (на базе Codex), в сценариях с высокими рисками по CWE содержали ошибки или потенциальные уязвимости[16].

Авторские права

Free Software Foundation (FSF) выразила опасения, что сгенерированные Codeх и Copilot фрагменты кода могут нарушать права разработчиков, в частности условия GPL, требующей, чтобы производные работы распространялись на аналогичных условиях[17]. Среди проблем: допустим ли тренировочный анализ открытых файлов, как определить нарушения в сгенерированном коде, могут ли модели машинного обучения считаться изменяемым исходным кодом или лишь агрегатом данных, и подчиняются ли такие модели авторскому праву и кем оно может быть заявлено[17][18]. Внутреннее исследование GitHub выявило, что около 0,1 % сгенерированного кода полностью совпадает с исходными обучающими данными. В частности, Codex воспроизвёл код для алгоритма быстрой обратной квадратной корня с оригинальным комментарием/копирайтом[9]. В ответ OpenAI признала, что неопределённость в области авторских прав на ИИ-модели приводит к дополнительным тратам для разработчиков, поэтому необходимы законодательные разъяснения[9]. Дебаты вокруг прав на Codex сравниваются с делом Authors Guild, Inc. v. Google, Inc., где суд разрешил Google использовать фрагменты текстов оцифрованных книг в целях, признанных добросовестным использованием[9][19].

Примечания

  1. 1 2 3 4 5 6 7 8 How to get Codex to produce the code you want! (англ.). Prompt Engineering. Дата обращения: 21 января 2025. Архивировано 19 января 2024 года.
  2. OpenAI разработала инструмент, переводящий английский язык в программный код (бр. порт.). Olhar Digital (11 августа 2021). Дата обращения: 21 января 2025. Архивировано 11 августа 2021 года.
  3. OpenAI Codex (бр. порт.). Comandos de Voz. Дата обращения: 21 января 2025. Архивировано 26 августа 2021 года.
  4. 1 2 3 Zaremba, Wojciech OpenAI Codex. OpenAI (10 августа 2021). Дата обращения: 3 сентября 2021. Архивировано 10 августа 2021 года.
  5. Kemper, Jonathan. OpenAI закрыла модель генерации кода Codex, рекомендует использовать GPT-3.5, THE DECODER (22 марта 2023). Архивировано 22 марта 2023 года. Дата обращения: 29 марта 2023.
  6. Researcher Access Program application. OpenAI. Дата обращения: 8 апреля 2023. Архивировано 8 апреля 2023 года.
  7. Wiggers, Kyle. OpenAI предупреждает: ИИ, лежащий в основе GitHub Copilot, может быть подвержен предвзятости (англ.), VentureBeat (8 июля 2021). Архивировано 8 августа 2021 года. Дата обращения: 3 сентября 2021.
  8. Alford, Anthony. OpenAI анонсировала ИИ Codex с 12 миллиардами параметров для генерации кода (англ.), InfoQ (31 августа 2021). Архивировано 1 сентября 2021 года. Дата обращения: 3 сентября 2021.
  9. 1 2 3 4 Первые недостатки автокодера GitHub Copilot: от утечек секретов до некачественного кода, но есть и довольные (англ.), The Register (6 июля 2021). Архивировано 7 июля 2021 года. Дата обращения: 4 сентября 2021.
  10. Dorrier, Jason. Codex от OpenAI переводит повседневный язык в программный код (англ.), SingularityHub (15 августа 2021). Архивировано 16 августа 2021 года. Дата обращения: 3 сентября 2021.
  11. 1 2 3 4 5 Dickson, Ben. Чего ожидать от Codex API от OpenAI (англ.), VentureBeat (16 августа 2021). Архивировано 16 августа 2021 года. Дата обращения: 3 сентября 2021.
  12. Metz, Cade. ИИ теперь может писать собственный программный код. Это хорошие новости для людей (англ.), The New York Times (9 сентября 2021). Архивировано 9 сентября 2021 года. Дата обращения: 16 сентября 2021.
  13. 1 2 3 Chen, Mark; Tworek, Jerry; Jun, Heewoo; Yuan, Qiming; Pinto, Henrique Ponde de Oliveira; Kaplan, Jared; Edwards, Harri; Burda, Yuri; Joseph, Nicholas; Brockman, Greg; Ray, Alex (14 июля 2021). “Evaluating Large Language Models Trained on Code”. arXiv [англ.]. arXiv:2107.03374 [cs]. Дата обращения 2021-09-04. Используется устаревший параметр |class= (справка)
  14. 1 2 3 Vincent, James. OpenAI умеет переводить английский текст в код с помощью новой модели машинного обучения Codex (англ.), The Verge (10 августа 2021). Архивировано 10 августа 2021 года. Дата обращения: 3 сентября 2021.
  15. Как использовать модели Codex для работы с кодом — Azure OpenAI Service (бр. порт.). Microsoft Learn (20 сентября 2024). Дата обращения: 21 января 2025. Архивировано 20 сентября 2024 года.
  16. Pearce, Benjamin; Ahmad, Baleegh; Tan, Brandon; Dolan-Gavitt, Brendan; Karri, Ramesh (16 декабря 2021). “Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions”. arXiv [англ.]. arXiv:2108.09293 [cs.CR]. Дата обращения 2021-12-16. Используется устаревший параметр |class= (справка)
  17. 1 2 Krill, Paul. FSF: GitHub Copilot неприемлем и несправедлив (англ.), InfoWorld (2 августа 2021). Архивировано 2 августа 2021 года. Дата обращения: 3 сентября 2021.
  18. Robertson, Donald. FSF приглашает представить белые книги по философским и правовым вопросам, связанным с Copilot (англ.), Free Software Foundation (28 июля 2021). Архивировано 28 июля 2021 года. Дата обращения: 4 сентября 2021.
  19. Barber, Gregory. Коммерческий инструмент GitHub на основе ИИ построен из открытого кода (англ.), WIRED (12 июля 2021). Архивировано 16 июля 2021 года. Дата обращения: 4 сентября 2021.