Цифра- Научно-практический журнал

Как нейросети помогают программистам в кодогенерации и тестировании

Нейросетевые модели стали мощным инструментом программирования и перешли в разряд массовой практики. Умение ими пользоваться работодатели проверяют уже на этапе тестовых заданий. Да и дальнейшее развитие специалистов без применения таких инструментов уже выглядит практически невозможным. Вместе с инженером лаборатории «Искусственный интеллект» ПГУТИ, программистом Института прикладной математики имени М. В. Келдыша РАН и Исследовательского центра в сфере ИИ по направлению «Транспорт и логистика» НИЯУ МИФИ Константином Ивановым мы разобрали примеры применения нейросетей для кодогенерации и тестирования.
Фото: предоставлено Константином Ивановым

В основе — базовые знания

Нейросети сегодня стали неотъемлемой частью работы программиста — от генерации кода до анализа ошибок и тестирования. Их возможности основаны на больших языковых моделях (LLM), способных понимать запросы на естественном языке и превращать их в программные решения. Такие модели доступны в разных форматах: облачные сервисы (ChatGPT, Claude, Grok) позволяют использовать их через интернет, а локальные версии (Qwen, Phi, Gemma) устанавливаются прямо на рабочую станцию и подходят для защищённых сред. Всё чаще программисты используют LLM как «второго разработчика» — помощника, который ускоряет рутину, помогает искать ошибки и подсказывает варианты реализации.

 «Я обычно использую Cursor IDE — это надстройка, созданная на базе IDE VS Code от Microsoft. В неё встроены интеллектуальные агенты на основе LLM, между которыми можно переключаться в зависимости от задачи. Среди поддерживаемых — модели от OpenAI (GPT-5), Anthropic Claude, Google Gemini, DeepSeek и других разработчиков. Такой выбор позволяет подбирать оптимального помощника под конкретный проект», — отметил Константин Иванов.

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

 «Даже самые продвинутые языковые модели, включая так называемые thinking models, на самом деле не понимают текст так, как человек. Для них это не смысл, а последовательность числовых представлений — токенов, между которыми они ищут статистические зависимости. Архитектура LLM основана на механизме трансформеров, которые анализируют контекст и предсказывают следующий элемент в последовательности. Поэтому, когда запрос сформулирован нечетко или задача требует логического анализа, могут возникать ошибки», — пояснил специалист.

 Работаем от задачи

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

 «Покажу простой пример с локальным LLM-чатом НИЛ ИИ ПГУТИ. Забиваем в контекстном окне задачу: «Сделать приложение калькулятор на Python». Сначала нейронная сеть генерирует текст, описывая то, что ей нужно сделать, а затем начинает генерировать код. От инициализации модели до конечного результата ушло всего 29 секунд», — рассказал Константин Иванов.

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

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

Александра Ламзина

Материал подготовлен при поддержке гранта Минобрнауки России в рамках Десятилетия науки и технологий.