Понедельник, 27 января, 2025

Второе поколение навыков программирования у искусственного интеллекта уже здесь

Когда кто -то скажет вам, что искусственный интеллект заменит программистов, в ближайшем будущем этого не произойдет. Да, искусственный интеллект способен ответить на уровень научного аспиранта. Тем не менее, ИИ не способен воспринимать контекст в целом, поэтому он не может создать хотя бы простое приложение — в коде будет множество ошибок, и созданная программа ИИ просто не запустится. Тем не менее, второе поколение навыков программирования искусственного интеллекта уже находится на пороге. Разработчики ИИ обещают, что на этом уровне искусственный интеллект действительно поймет, что он должен делать, и исправить ошибки.

«Это то, что очень увлекает разработчиков», — сказал Джаред Каплан, главный ученый компанию Anpropic

Copilot , инструмент, созданный на основе крупных языковых моделей от Openai и запущенный Github (Microsoft), запущенный в 2022 году, теперь используется миллионами программистов по всему миру. Миллионы по -прежнему используют универсальные чат -боты, такие как claude из антропического, Chatgpt от openai и Gemini из Google DeepMind, для ежедневной помощи.

«Сегодня более четверти всего нового кода в Google создается ИИ, а затем проверяется и одобрено программистами», — сказал генеральный директор Alphabet Sundar Pichai во время телефонного разговора о финансовых результатах в октябре. «Это помогает нашим программистам работать более продуктивно и быстрее». Ожидается, что другие технологические компании либо догонят, либо догонят.

Это относится не только к крупным корпорациям, которые вводят инструменты CI для написания кода. Есть много новых стартапов на этом многообещающем рынке. Новички, такие как Zencoder , merly , cosine , tessl (который был оценен в 750 миллионов долларов через несколько месяцев после Создание) и у бассейна (оценивается в 3 миллиарда долларов до выпуска продукта), конкурируют за свою долю рынка.

«Похоже, что программисты действительно готовы платить за такие« Copilles », — говорит нейтан Beanaych, аналитик инвестиционной компании Air Street Capital . «Поэтому код является одним из самых простых способов монетизации ИИ».

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

Но это еще не все. Многие из тех, кто создает генеративных помощников для написания кода, считают, что они могут стать быстрым способом создания общего искусственного интеллекта (AGI), гипотетической технологии с возможностями человеческого интеллекта, которую ряд ведущих компаний называют их конечной целью Полем

«Впервые мы увидим экономически чрезвычайно важную деятельность, которая достигнет уровня способности человека в области разработки программного обеспечения», -говорит Айзо Кант, генеральный директор и CO -Founder у бассейна . (Openai уже хвасталась, что ее недавняя модель O3 выиграла главного ученых компании в написании кода.)

Добро пожаловать во вторую волну AI для написания кода

Правильный код

Инженеры программ говорят о двух типах кода правильно.

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

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

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

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

Проблема заключается в том, что данные, по которым большинство помощников кода (миллиарды фрагментов кода из онлайн -репозиториев) не отражают эти процессы мышления. Они представляют готовый продукт, но не то, как он был создан. «Есть много кода», — отмечает Кант. «Но эти данные не отражают процесс разработки программного обеспечения».

Пуллен, Кант и другие приходят к выводу, что для создания модели, которая может создавать полезные программы, проверить их и исправить ошибки — вам нужно показать ее больше, чем просто готовый код. Ей нужно показать, как был создан этот код.

Цель состоит в том, чтобы создать модели, которые не просто подражают появлению хорошего кода (независимо от его производительности), но и имитируют процесс, что приводит к созданию такого кода.

панировочные крошки

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

Сначала вам нужно определить, какие материалы следует использовать: какие части существующей кодовой базы и какие еще источники информации необходимы для выполнения конкретной программной задачи?

«Контекст имеет решающее значение», — говорит основатель Zencoder Andrew Filev. «Первое поколение инструментов очень плохо сработало с контекстом, они обычно просто просматривали открытые вкладки. Но ваш репозиторий [кодовая база] может содержать 5000 файлов, и они будут пропустить большинство из них.

Zencoder нанял команду ветеранов поисковых систем для создания инструмента, который может анализировать большие кодовые базы и определить, что актуально, а что нет. Такой подробный контекст уменьшает количество ошибочных результатов (галлюцинации) и улучшает качество кода, которое могут генерировать крупные языковые модели, объясняет FileV: «Мы называем его анализом хранилища».

косинус также рассмотрим контекст ключом. Они собирают все возможные «хлебные крошки» и используют их для создания нового типа набора данных. Компания попросила десятки программистов записать все свои действия, выполняя сотни различных задач программного обеспечения. «Мы попросили их записать все», — говорит Пуллен. «Почему вы открыли этот файл? Почему он прокрутил его до половины? Почему они были закрыты? » Они также попросили программистов аннотировать готовые фрагменты кода, отмечая детали, которые должны были бы знать другие части кода или конкретную документацию.

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

poolside , основанный на Сан -Франциско, также создает синтетический набор данных, который отражает процесс кода, но он больше полагается на методику, известную как RLC из выполнения кода). cosine также использует этот подход, но в меньшей степени.

RLCE похож на технику, используемую для производства чат -ботов, таких как CHATGPT, плавное общение. Этот метод известен как RLHF — обучение, основанное на обратной связи человека (подкрепление, обучение от обратной связи человека). В RLHF модель учат генерировать текст, который больше соответствует тому, что человеческие тестеры считаются лучше. В RLCE модель учат генерировать код, который работает больше, так как ожидалось, когда код запускается (выполняется).

обойти систему

косинус и у бассейна укажите, что вдохновение от подхода, используемого DeepMind, с его моделью для игры Alphazero. Альфазеро получил набор шагов, которые она могла выполнить — ходы в игре — а затем она играла с ней один раз после, определяя пробную версию и ошибку, какую последовательность движений выигрывала, а что — нет.

«Они позволили моделям исследовать все возможные движения на каждом этапе игры, чтобы имитировать столько игр, сколько позволяют вычислительные ресурсы», и это в конечном итоге привело к победе над Ли Седолом »,-говорит Пинмин Ван, исследовательская база у бассейна , ссылаясь на корейский граммстер Го, чей Альфазеро выиграл в 2016 году. Прежде чем работать в у бассейна , Ван работал над Google DeepMind по использованию Alphazero Beyond Desktop Games, включая версию Funsearch, версию -разбиралась на сложных математических задачах.

Когда подход Alphazero применяется к программированию, в игре становятся доступны шаги, которые необходимы для создания фрагмента кода, а правильно созданное приложение становится победой в этой игре. Оставая до себя, модель может быть улучшена намного быстрее, чем может сделать человек. «Человеческий программист пытается и терпит неудачу один раз», — объясняет Канти. «Модели могут попробовать 100 вариантов за раз».

Основное различие между cosine и у бассейна заключается в том, что cosine использует специальную версию GPT-4O, предоставленная данными OpenAI, чем возможно для базы модель. у бассейна также создает свою собственную большую языковую модель с нуля.

Канти с у бассейна считает, что моделирование модели на коде с самого начала даст лучшие результаты, чем адаптация существующей модели, которая уже поглотила не только миллиарды кодовых фрагментов, но и большинство Интернет «Я абсолютно подходит, если наша модель забывает об анатомии бабочек», — говорит он.

cosine утверждает, что его помощник по генеративному кодированию, названный Genie, является первым местом в рейтинге SWE-Bench-стандартный набор тестов для моделей кодирования. у бассейна все еще строит свою модель, но утверждает, что то, что уже было создано, соответствует уровню производительности GitHub Copilot.

«Я лично твердо верю, что крупные языковые модели смогут полностью сравнить способность программиста», — говорит Канти.

Однако не все согласны.

нелогичные языковые модели

Для Джастина Готчлиха, генерального директора и основателя Merly , крупные языковые модели являются неправильным инструментом для этой проблемы — и точка зрения. Он приводит пример своей собаки: «Никакое количество тренировок не может научить мою собаку программировать, этого просто не произойдет», — говорит он. «Он может сделать много других вещей, но не способен на такой глубокий уровень познания».

Работая над поколением кода в течение более десяти лет, у Gotchich есть аналогичная проблема с большими языковыми моделями. Программирование требует возможности решать логические задачи с идеальной точностью. Независимо от того, насколько хорошо языковые модели учатся подражать тому, что делают программисты, они все еще остаются, по его словам, статистические игровые автоматы :« Я не могу преподавать нелогичную систему.

Вместо того, чтобы преподавать языковую модель, создайте код, придавая ему много примеров, Merly не показывает ваш код, написанный людьми вообще. Это связано с тем, что, по словам Готчлиха, чтобы действительно создать модель, способную генерировать код, вам необходимо работать на уровне логики, которая лежит в основе кода, а не с самим кодом.

Система Merly обучается промежуточной презентации — по какой -то причине, например, на машино -читаемой нотации, в которую большинство языков программирования преобразуются перед выступлением.

Gotchlich не раскрывает точных деталей того, как выглядит это представление или как работает процесс. Но это дает аналогию: в математике есть идея, что отдельные числа, которые должны существовать, являются основными числами, потому что все остальные числа могут быть рассчитаны с использованием только основных. «Примените эту концепцию к коду», — говорит он.

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

Изменение мышления

Ваше отношение к этим конкурирующим подходам может зависеть от того, что вы ожидаете от помощников по генеративному программированию.

В ноябре Cosine запретил своих программистов использовать любые инструменты, кроме их собственных продуктов. В настоящее время он наблюдает за влиянием инструментов Genie на своих программистов, которые часто просто смотрят, как инструмент создает код для них. «Теперь вы сообщаете модели результат, который вы хотите достичь, и она решает, как ее реализовать», -говорит Ян Ли, другой соучредитель Cosine .

Пуллен признает, что это может сбить с толку и требует изменения в мышлении. «У нас есть программисты, которые выполняют несколько задач одновременно, проходя между окнами», — говорит он. «В то время как Genie выполняет код в одном окне, они могут заставить его выполнить еще одну задачу в другом».

Эти инструменты также позволяют создавать несколько версий системы одновременно. Например, если вы разрабатываете программное обеспечение, которое требует интеграции платежной системы, вы можете попросить помощника по программированию попробовать несколько вариантов одновременно — Stripe, Mango, Checkout — вместо реализации каждого вручную.

Genie может работать над исправлением ошибок вокруг часов. Большинство программных команд используют отчеты об ошибках, которые позволяют пользователям загружать описания идентифицированных проблем. Genie может прочитать эти описания и предложить исправления. Затем человек должен просматривать его только перед обновлением кода приложения.

По словам Ли, никто из людей не может понять триллионы линий кода в современных программных системах, и с увеличением количества кода, которое написано другим программным обеспечением, объем будет расти.

Это сделает ассистентов по программированию, которые будут поддерживать этот код жизненно важным. «Узкое место будет в том, как быстро люди смогут просматривать код, созданный автомобилем», — говорит Ли.

Как инженеры cosine относятся к этому? По словам Пуллена, довольно положительно. «Если я дам вам сложную проблему, вы все равно думаете, как описать ее для модели», — говорит он. «Вместо того, чтобы писать код, вам нужно поместить его на естественный язык. Но это все еще требует большой умственной работы, поэтому вы не избавитесь от радости инженерии. Творческий интерес сохраняется.

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

Задача была нелегкой и требовала знания нескольких разделов миллионов строк кода cosine . Тем не менее, кандидат исполнил это через несколько часов. «Этот человек, который никогда раньше не видел нашу кодовую базу, пришел в понедельник, и во вторник после обеда уже был готов», — говорит Ли. «Мы думали, что это займет у него всю неделю». Этот человек был нанят на работу.

Но есть еще один аспект. Ли считает, что мы скоро увидим новые уровни программистов. С одной стороны, будут элитные разработчики с миллионами зарплат, которые смогут диагностировать проблемы ошибок, созданных искусственным интеллектом. С другой стороны, небольшие команды из 10-20 человек проведут работу, которая ранее нуждалась в сотнях программистов.

«Похоже, что АТМ изменили банковский сектор», — говорит Ли. «Теперь все, что вы хотите сделать, будет определена путем вычисления мощностей, а не количества сотрудников. Я думаю, что все понимают: эпоха, когда компании наняли еще несколько тысяч программистов, закончилась.

Опыт человеческих возможностей

Для Готчшлиха автомобили, которые кодируют лучше, чем люди, станут незаменимыми. По его мнению, это единственный способ создать огромные, сложные программные системы, которые нам понадобятся один день. Как и многие в Силиконовой долине, это включает в себя будущее, когда люди переезжают на другие планеты. Это будет возможно только потому, что ИИ будет разработать необходимое программное обеспечение, он говорит: «Реальная цель merly — доставить нас на Марс».

Готчшлих предпочитает говорить о «машинном программировании», а не о «помощниках по программированию», потому что он считает, что это неправильный вопрос вопроса. «Я не думаю, что эти системы должны помогать людям — я думаю, что люди должны им помочь», — говорит он. «Они могут двигаться со скоростью ИИ. Зачем ограничить их потенциал? »

«Существует такой мультфильм — flinstoons , где автомобили идут только тогда, когда водители толкают их ногами», — говорит Готчлих. «Это немного похоже на то, как большинство людей сейчас используют ИИ в программных системах».

«Но то, что строит Merly , на самом деле, космические корабли», — добавляет он. И он не шутит. «И я не думаю, что космический корабль должен работать через педали человека. Космические корабли должны работать на варп-двигателях.

Если это звучит дико — так и есть. Но здесь важно: те, кто разрабатывает эту технологию, имеют амбициозную конечную цель.

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

На сайте Cosine компания называет себя «Лабораторией человеческого мышления». Она видит программирование только как первый шаг к универсальной модели, которая сможет имитировать человекообразное решение проблем в разных областях.

Poolside имеет схожие цели: компания прямо заявляет, что создает искусственный общий интеллект (AGI). «Код – это способ формализации мышления», — говорит Кант.

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

Пока такие системы остаются мечтой. В то же время программная инженерия меняется быстрее, чем многие на передовой ожидали.

«Мы еще не на том этапе, когда все делается только машинами, но мы точно отходим от привычного представления о роли программиста», — говорит Пуллен из Cosin. «Мы видим первые искры нового рабочего процесса — то, что значит быть программистом в будущем».

По материалам: MIT Technology Review

НАПИСАТИ ВІДПОВІДЬ

Коментуйте, будь-ласка!
Будь ласка введіть ваше ім'я

Євген
Євген
Евгений пишет для TechToday с 2012 года. По образованию инженер,. Увлекается реставрацией старых автомобилей.

Vodafone

Залишайтеся з нами

10,052Фанитак
1,445Послідовникислідувати
105Абонентипідписуватися