Сейчас многие компании пытаются внедрять ИИ-помощники в среды разработки в надежде упростить работу программистам и повысить эффективность работы. В начале этого года у нас провели пилотное тестирование бесплатной Codeium. Нейросеть использовалась из коробки (без дообучения). В статье расскажу про использование Codeium при разработке на C# в Visual Studio 2022(продуктовый код и тесты). За месяц использования работоспособность Codeium мне не понравилась и вот почему.
Понимание контекста
Создается ощущение, что нейросеть смотрит только в контексте текущего файла. Неправильно советует использовать поля и методы (публичные !) из других классов, просто генерирует рандомные имена. Не умеет работать со сторонними библиотеками.
Лучше генерирует код, если в коде присутствуют комментарии. Пробовала специально в некоторых местах добавлять комментарии, чтобы проверить поведение нейросети. И да, Codeium в таких случаях начинает реагировать быстрее и советовать более ожидаемый код. Для меня это неудобно, т.к. я не оставляю в коде такое количество комментариев, которое требует Codeium. Еще замечена особенность, что для совершенно нового кода генерирует предложения лучше, при доработке текущего - хуже.
При декларации нового метода теста может посоветовать вызвать метод, с таким поведением столкнулась несколько раз в течение месяца. По поему опыту, ассистенты сред разработок никогда не подсказывают вызывать функцию вместо декларации в этом меcте:
[Test]
public void Test_1()
{
...
}
// Ставлю курсор здесь и получаю рекомендацию от Codeium
Test_2();
[Test]
public void Test_2()
{
...
}
Качество сгенерированного кода
Что касается синтаксического сахара: советует что-то из более старых стандартов языка. После принятия сгенерированного кода приходится его редактировать, это занимает время.
Скорость работы
Предлагает код, но при его принятии может добавить еще какую-то строку, которой не было в предпросмотре. Кажется, что идет какая-то задержка по времени.
Часто не может предложить варианты вообще.
Раздражает, что после установки расширения Codeium в Visual Studio наблюдались небольшие тормоза. После удаления Codeium среда разработки снова работает как обычно.
Дообучение нейросети
Создатели Codeium обещают повышение качества генерируемого кода за счет дообучения нейросети. Тут есть два варианта, и к каждому из них есть вопросы:
-
Обучение на продуктовой кодобазе
Большие проекты содержат код совершенно разного качества и, конечно, много легаси кода. Вопрос в том, на чем обучать? Какой код более подходящий? Код пятилетней давности будем считать приемлемым?
-
Сгенерированный код принят, значит он правильный
При работе с нейросетью программисты часто придерживаются позиции: принимаешь сгенерированный код, даже если он не совсем корректный, а потом редактируешь до нужного вида. Но если нейросеть способна обучаться, то принятие рекомендуемого кода трактуется нейросетью как правильный вариант. В этом случае нейросеть никогда не поймет, что код неверный.
Есть одна вещь, которая реально понравилась
Единственное, на чем экономишь время с использованием Codeium: нейросеть отлично автодополняет комментарии (на русском и английском). И для меня это все. Но ради этого устанавливать Codeium, думаю, не стоит :) Помню, на прошлой работе использовали ReSharper, который тоже отлично с этим справлялся.
За месяц использования Codeium обнаружила для себя много минусов, и они перевешивают плюсы. Из коробки нейросеть Codeium работает слабовато. Аргументов для внедрения Codeium в качестве помощника на каждый день, на мой взгляд, мало.
Комментарии (19)
gudvinr
24.07.2024 17:20Codeium довольно сносно предлагает дополнения для обработки енумов, если они все одинаковые, вроде
case ENUM-VALUE_1: return "VALUE_1";
Из того же, всякие стандартизированные вещи типа кодов ответа HTTP или MIME типов
Но даже в этом случае все равно приходится исправлять ответы, потому что порой выдумывает несуществующие сущности
А вот когда дело касается логики, то подсказки наоборот чаще мешают, потому что они вставляются посреди кода, а угадывают то, что хочется сделать, не так уж и часто
Homyakin
24.07.2024 17:20+2А я как раз буквально пару недель назад начал пользоваться
Неправильно советует использовать поля и методы (публичные !) из других классов, просто генерирует рандомные имена.
С одной стороны недостаток, а с другой, подсказывает какой лучше контракт реализовать, мне даже помогло несколько раз. Не серебряная пуля, но неплохой помощник, как мне кажется.
AnROm Автор
24.07.2024 17:20Codeium генерирует произвольные имена полей и методов для сторонних библиотек, менять которые невозможно. Это действительно мешает.
itmind
24.07.2024 17:20+2Мне наоборот Codeium зашел для Go и Rust и он активно развивается и бесплатный. Есть возможность указывать предварительно контекст (например: "Rust, отвечать по русски"). Gigachat, codium пока в разы хуже.
VicIamQuick
24.07.2024 17:20Кто-нибудь может прояснить пожалуйста. Вот Codeium, написано бесплатен для индивдуального использования. А что если сначала проект создавался в одиночку, а потом разросся в командный из нескольких человек. Я всё еще могу использовать Codeium по индивидуальному плану или должен переходить на платный?
Sigest
24.07.2024 17:20+1У меня жутко тормозит Intelij IDEA с codeium на очень хорошей конфигурации (i9 13000K, 64Gb ram, хотя видео слабое - 1050Ti). Тормозит на Котлине, на java тоже тупит, но меньше, на k8s yaml файлах работает нормально, но и бесполезен. Тормозит и при этом жрет цпу на 100%
Sigest
24.07.2024 17:20Дополню свой комментарий и возьму свои слова назад. По причине жутких тормозов я отключил данный плагин и он у меня не обновлялся. После прочтения статьи решил дать еще один шанс. Включил, он попросил обновить себя. После обновления, о чудо, тормозить перестал и пока полёт нормальный. И кстати забыл сказать, что тормозил только под Windows 11, там какой-то language_server процесс забирал под себя все 100% цпу. На маке с М1 все работало без проблем.
Vladek
24.07.2024 17:20в Visual Studio у них ужасное расширение, что мешает выдавать нормальные примеры кода. В VS Code расширение гораздо лучше - стоит проверить работу Codeium именно там.
MaksimMukharev
24.07.2024 17:20Я заметил, что он довольно хорошо даёт подсказки, если написать комментарий с тем, что ожидается. После комментария получается очень адекватный результат.
qiper
24.07.2024 17:20Скоро-скоро, вот-вот-вот, всё станет хорошо! https://habr.com/ru/posts/831268/ :D
alexMolex
24.07.2024 17:20+1А какая модель используется? Base или GPT-4? При выборе последней качество подсказок становится выше. Да, согласен, что контекст как правило берется из открытого файла, но все равно, подсказывает в целом неплохо. А основным преимуществом является чат, с ним даже гуглить ничего не надо. Лично на своем опыте могу сказать, что с ним скорость написания именно нового функционала возрастает чуть ли не x2. Недостатки тоже есть, но они перекрываются преимуществами. А главное преимущество это бесплатность и доступность в России. Пользовались как-то платным copilot, так там качество подсказок заметно ниже, к тому же танцы с бубном при пополнении
Alexander_Front-end
24.07.2024 17:20Я уже месяц где-то использую codeium для Typescript в VS Code. Вполне неплохо угадывает и подсказывает, часто пихаю в него функцию и прошу юнит тесты написать
undersunich
24.07.2024 17:20+1Codeium раздражает тем что всегда что то предлагает дополнить. Даже когда это не нужно Это отвлекает в больших проектах
avran02
24.07.2024 17:20Пишу на go в vscode и мне в целом нравится эта сетка. Бойлерплейт генерирует хорошо, что ускоряет написание кода. Насчёт логики согласен, обычно справляется плохо НО есть одно большое но. Если нет интернета, или он очень плохой, у меня из-за этого расширения падает языковой сервер и IDE не может давать вообще никаких подсказок
45stvol
24.07.2024 17:20Достаточно сносный ИИ для фрагментов кода. Получил доступ к 4 версии и мелкие .py скрипты, для промышленных задач, удовлетворительно пишет. На объёмный легаси код - её бессмыслено пускать(тут уже жду llama3.2). Пользуюсь с апреля+-
nakirrrr
попробуй https://www.codefy.ai/ .