Сравнение сервисов для написания кода



Мы уже разбирались, какие LLM лучше всего показывают себя на аренах и в отдельных задачах. Сегодня узнаем, как популярные сервисы справляются с генерацией программного кода. Для этого я выбрал сервисы, которые чаще всего упоминаются в профессиональном комьюнити — в обсуждения на Reddit, статьях на Хабре, отзывах на GitHub и т.д. В итоге получилось 6 сервисов. 



GitHub Copilot



По состоянию на август 2024 года, Copilot использовал языковую модель GPT-4o.

Плюсы:

Обучение на множестве публичных репозиториев GitHub;


Широкая поддержка языков программирования: лучше всего работает с JavaScript, Python и TypeScript.



Минусы:

Конфиденциальность
: иногда генерируется код, защищенный авторским правом;

Нестабильность качества кода: его качество сильно зависит от четкости и полноты исходного промпта.

Tabnine

Сервис работает на языковых моделях GPT-4o, GPT-3.5



Turbo и Tabnine Protected



Плюсы:

Может работать с данными локально;

Обучение на собственном коде и репозиториях.



Минусы

Иногда выдает фрагменты кода, которые не соответствуют контексту задачи;

Хуже справляется с преобразованием запросов на естественном языке в код.

Replit Ghostwriter



Это комплексная IDE, которая интегрирована в платформу онлайн-кодирования Replit. Replit использует для генерации собственную опенсорcную LLM Replit



Code



Плюсы:

Интеграция с Replit —
AI-платформы для разработки и запуска ПО;

Мощные функции автозавершения кода: Ghostwriter умеет генерировать целые блоки, исправлять ошибки и объяснять код;

Поддержка 50+ языков программирования.



Минусы:

Доступен только в среде Replit;

Проблемы с производительностью

Могут возникнуть сложности с масштабированием проектов.



Cursor



Сервис работает на базе Visual Studio Code (VSC), использует GPT-4o, как и Tabnine. 



Плюсы



Прирост скорости в работе у некоторых пользователей с Cursor вырос на треть;



Формирует граф знаний обо всей вашей кодовой базе, предоставляя предложения с учетом контекста;

Предвосхищает правки, основываясь на предыдущих.



Минусы



ИИ работает неидеально: иногда промпты нужно переписывать несколько раз;



Не подходит новичкам;



Сгенерированный код иногда бывает излишне сложным.



Codeium



Codeium использует проприетарную LLM, сравнимую по производительности с GPT-3.5.



Плюсы



Поддерживает более 70 языков программирования;

Закрепление контекста: в качестве постоянного контекста можно выбрать каталоги, файлы, репозитории или элементы контекста кода.



Минусы




Справляется с генерированием кода хуже, чем с дополнением;



Некоторые пользователи жалуются на подтормаживания в работе;



Периодически приходится отключать подсказки Codeium из-за их бесполезности.



Cody  



Сервис позволяет подключать для работы самые популярные LLM — GPT-4, Claude, Mixtral, Gemini и др.



Плюсы



Позволяет использовать inline-редактирование;



Не зависит от одной LLM: можно менять LLM в процессе генерации кода;

Интеграция с GitHub: это значительно сокращает время, затрачиваемое на проверку кода.



Минусы



Качество кода: может отличаться в зависимости от используемой LLM;

Некоторые пользователи отмечают слабое понимание контекста.



Что выбрать?



Мы с командой попробовал все шесть сервисов и в итоге нам больше всего понравился Tabnine. Его функционал максимально отвечает тем задачам, с которыми он бы мог в теории нам помогать. Для нас критично использование кода только с разрешительной лицензией. Плюс они никогда не берут код клиента для обучения своих моделей.



Поэтому при выборе стоит отталкиваться от потребностей, но в целом могу предложить такой рейтинг:



1.  Tabnine — широкофункционален и хорош для тех, кто заботится о приватности;

2.  GitHub Copilot — оптимален для разработчиков с комплексными задачами;

3.  Codeium — для тех, кто хочет потестировать возможности GitHub Copilot, но не готов за это платить;

4.  Cursor подходит опытным кодерам, знакомых с VSC;

5.  Cody оценят те, кто не хочет быть привязан в работе к одной единственной LLM;

6.  Replit Ghostwriter — подходит для новичков и простых проектов.