Использование ИИ-инструментов в программировании ожидаемо оказывается сопряжено со сложностями: LLM-модели игнорируют тесты, рекомендуют фейковые пакеты и в целИспользование ИИ-инструментов в программировании ожидаемо оказывается сопряжено со сложностями: LLM-модели игнорируют тесты, рекомендуют фейковые пакеты и в цел

Галлюцинациям тут не место — как могут выглядеть специализированные ЯП для разработки с помощью LLM

Использование ИИ-инструментов в программировании ожидаемо оказывается сопряжено со сложностями: LLM-модели игнорируют тесты, рекомендуют фейковые пакеты и в целом требуют повышенного внимания и аудита. Чтобы у нейросетей было меньше шансов оказать разработчикам медвежью услугу, некоторые исследователи предлагают использовать специализированные ЯП. В идеале они должны ограничивать бурную фантазию ИИ-ассистентов и направлять её в мирное русло. Мы в Beeline Cloud решили рассмотреть несколько таких экспериментальных проектов.

Изображение: freepik (free freepik license)
Изображение: freepik (free freepik license)

Подводные камни «нейросетевого» кода

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

Весной 2025 года исследователи из Техасского университета в Сан-Антонио, Университета Оклахомы и Вирджинского политехнического института попытались оценить масштаб явления. Они отобрали серию вопросов с площадки Stack Overflow, взяли 5 тыс. описаний наиболее популярных пакетов Python и JavaScript и сформировали датасет из промптов, которые «скормили» нескольким LLM-моделям.

Ситуацию усугубляет тот факт, что на практике многие разработчики не перепроверяют код, сгенерированный нейросетями. В январе 2026 года компания Sonar провела опрос среди тысячи разработчиков по всему миру. 96% респондентов сказали, что по умолчанию считают сгенерированный код ошибочным. Но при этом лишь 48% отметили, что всегда проверяют такой код перед коммитом.

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

Если отвлечься от проблемы слопсквоттинга: современные LLM используют не только для написания кода. Агентские системы на их основе становятся частью «полного цикла»: участвуют в ревью и даже генерируют тесты. И здесь возникает другая проблема — в марте прошлого года исследователи из OpenAI опубликовали результаты работы, в которой отметили, что LLM-модели способны «подгонять» тесты под код или вообще их игнорировать. Среди отмеченных приемов числился досрочный выход из среды выполнения с помощью exit(0) или принудительный пропуск тестов через raise SkipTest и вызов исключений. Причем подобные «костыли» закреплялись в процессе обучения и неоднократно воспроизводились.

С учетом этих рисков ряд специалистов считает, что индустрии необходимы специальные языки программирования, которые бы одновременно ограничивали и направляли ИИ-ассистентов. Есть мнение, что ЯП, рассчитанные на совместную работу с нейросетями, должны опираться на строгую типизацию, исключающую двусмысленность [чтобы модели не могли ссылаться на несуществующие библиотеки или «придумывать» зависимости]. Дополнительно требуется жесткая привязка к контексту — например, через постоянные идентификаторы и явные ссылки. Рассмотрим несколько таких экспериментальных языков. Хотя стоит заметить, что большинство из них пока находятся на ранней стадии развития и скорее представляют собой proof-of-concept, нежели полноценные инструменты, готовые к использованию в продакшене.

Как могут выглядеть такие ЯП для работы с LLM

Convo-Lang. Это — интерпретируемый язык программирования с лицензией GPL 3.0. Он представляет собой некий гибрид процедурного программирования и системы для промпт-инжиниринга. Проект развивает анонимный автор — как минимум два года. Изначальная идея заключалась в том, чтобы уйти от постановки задач для LLM в «свободной» форме на английском языке и предложить более строгий подход к работе: позволить объявлять функции и типизированные переменные, задавать алгоритмы рассуждений и инструкции для агентов. В документации автор пишет: «Convo-Lang стандартизирует работу с промптами и агентами примерно так же, как SQL в свое время стандартизировал взаимодействие с базами данных».

Convo-Lang даже успел обрасти экосистемой, в которую вошли CLI, парсер, интерпретатор, библиотеки Typescript, Javascript и Python, а также расширение VSCode для подсветки синтаксиса. Весь исходный код можно найти в репозитории на GitHub, а подробную документацию — на официальном сайте. Там же собрано большое количество примеров, которые можно запустить и протестировать в браузере. Например, вот так может выглядеть вызов внешней JavaScript-функции, меняющей цвет SVG-фигуры в зависимости от пользовательского промпта.

SPELL. Исследователь Маурици Сантино из агентства Santino Research считает, что традиционные ЯП плохо подходят для генерации кода с помощью LLM и предлагает язык программирования SPELL, построенный вокруг строгой типизации. Проект пока находится на ранней стадии развития; работу над ним Сантино начал лишь в прошлом году, поэтому спектр возможностей SPELL ограничен. На данный момент реализованы базовые компоненты — Const для объявления констант, арифметические операции Add, Sub, Mul, Div, операции обработки коллекций вроде Map и Filter и некоторые другие. В дальнейшем автор планирует добавить поддержку работы с файлами и строками, а также пользовательскими функциями.

Информация о проекте выложена в репозитории на GitHub с лицензией MIT. Чуть более подробное описание можно найти в PDF-файле по теме. Авторы также выложил несколько примеров использования — в частности, для анализа массива с данными о продажах.

Universalis. Название этого языка программирования вдохновлено работами Готфрида Вильгельма Лейбница, который стремился создать «универсальный язык науки». Universalis предложил американский специалист по машинному обучению Эрик Мейер — соответствующую статью он опубликовал в прошлом году в журнале для практикующих разработчиков ACM Queue [выпускает Ассоциация вычислительной техники].

Скрипты для Universalis максимально приближены к естественному языку, что делает их понятными даже людям без навыков программирования. Простота синтаксиса также облегчает генерацию корректного кода и уменьшает вероятность ошибок. Операторы языка напоминают формулы в электронных таблицах — например, [@D is (@S-@B)] — с комментариями. Чтобы запустить программу на Universalis, необходимо определить значения переменных и выдать задание в виде промпта.

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

Mirror. Этот язык программирования представил Остин Хэнли, профессор из Университета Каренги — Меллона. Он реализовал концепцию «программирования на примерах» (programming by example). Вместо явного описания логики пользователь задает имя функции, параметры, типы, несколько примеров входных данных и ожидаемые результаты. На основе этих примеров система сама пишет реализацию функции на JavaScript, удовлетворяющую ограничениям.

Как говорит автор, «Mirror — это всего лишь прототип [proof-of-concept], демонстрирующий возможности интеграции систем ИИ в традиционные языки программирования». Для желающих поближе познакомиться с этим необычным языком автор подготовил тестовую площадку — поэкспериментировать можно прямо в браузере. Исходный код доступен на GitHub под лицензией MIT.

Что интересно, существуют и другие проекты, реализующие похожую концепцию — например, язык neuro-lingo. В этом случае программист прописывает только комментарии и типы, а остальную работу на себя берет LLM-модель. При этом автор отмечает, что нейросети не всегда выдают корректные решения, поэтому комментарии должны быть подробными и в точности отражать задуманную логику.

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

Какие еще статьи есть в нашем блоге на Хабре:

  • Роботы в дата-центре? Что им доверяют, и куда не пускают

  • Бастионы, SSH-шлюзы и не только — инструменты для удаленного подключения к домашним лабораториям

  • Легкое «нелегкое чтение» — книги, которые можно прочесть за вечер

  • Неэтичные чат-боты и дипфейки: какие еще проблемы кибербеза предсказали фантасты 40-70-х?

  • Еще один шаг в тему селф-хостинга и домашних лабораторий — серверные системы и платформы для управления приложениями

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу service@support.mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно