2023-й стал большим годом для больших языковых моделей (LLM). Их влияние в значительной степени проявилось в ИИ-инструментах и помощниках для разработчиков, пишет на портале The New Stack независимый консультант в области разработки ПО Дэвид Истман.

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

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

Суть LLM отражает первое слово в названии — большие. Они работают так удивительно хорошо только после обработки большого количества данных. Способность ChatGPT консолидировать информацию в ответ на запрос дорого стоит (хотя для ответа на многие запросы вам, возможно, больше подойдет Perplexity.ai). А многие разработчики были очарованы тем, как быстро они могут получить полностью объясненный пример кода в свои проекты. Но сила LLM как инструментов заключается в том, что они могут повысить эффективность разработчика с наименьшим трением.

ИИ-инструментарий для разработчиков

Этот год был в основном посвящен оснащению разработчиков, обычно включающему ИИ. Rust помог создать более быстрые полноэкранные инструменты, яркими примерами которых являются Zed и Warp. Zed — это полнофункциональный «многопользовательский» редактор, созданный для ускорения. Скоро должен выйти Zed2, и следует отметить работу над завершением Tailwind. Warp продолжает внедрять инновации в командную строку.

Внедрение ИИ в инструментарий стало центральным элементом многих усилий. Первые большие волны связаны с Copilot в Visual Studio. Я бы также отметил Ghostwriter для Replit, а также генератор тестов CodiumAI. У Cursor появился редактор, ориентированный на ИИ.

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

Генератор тестов CodiumAI определенно доказал, что ИИ может помочь непосредственно в цикле разработки, создавая разумные модульные тесты на основе существующих методов кодирования. Существует множество вспомогательных задач, связанных с кодированием, которые может выполнять ИИ.

А как насчет полного цикла разработки?

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

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

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

Должны ли разработчики беспокоиться о своих рабочих местах?

А как насчет LLM-инструментов, пишущих целые проекты? Под угрозой ли разработчики? Неужели теперь нам всем придется хитрить?

У разработчика есть два навыка, которые он ежедневно использует для продвижения работы: налаживание связей и понимание изменений. Эти навыки вряд ли недоступны для LLM, но пока они остаются специфически человеческими чертами.

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

Налаживание связей — это то, что требует ежедневной наблюдательности, но технически не выходит за рамки ИИ. Визуальный интерфейс WIMP от Xerox PARC появился потому, что дизайнеру пришла в голову метафора рабочего стола. Сейчас LLM в основном реагируют на ситуацию — у них не возникает внезапных идей «под душем».

Я немного сочувствую людям, которые считают, что ИИ общего назначения (AGI) и связанные с ним бедствия не за горами, просто потому, что сила LLM оказалась такой неожиданной. Но на самом деле доказательств этому мало. Распознавание образов очень важно для нас, потому что с его помощью мы ориентируемся в мире. Но реализация понимания языка «в кремнии» — это всего лишь инструмент для нас. Как говорит Майкл Вулдридж, профессор информатики Оксфордского университета и директор отдела исследований фундаментального ИИ в Институте Алана Тьюринга, «ИИ не осознает мир в каком-либо значимом смысле».