Как стать автором
Обновить

Я перестал использовать Copilot после 2 месяцев. И вот почему

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров78K
Всего голосов 155: ↑133 и ↓22+136
Комментарии126

Комментарии 126

Я перестал использовать Copilot после 2 месяц.

Это на каком языке? И почему даже в заголовке?

Статью видимо тоже copilot написал.

А местами так и кажется.

Или не кажется.

Было бы прикольно если бы это копайлот за меня такой текст написал да :D Ошибку поправи!

И тут такая же ошибка :)

Разв?

Всё нормально. У них просто неправильная русска языка.

Эт прждврмнна оптмзци. Есл скртит лшн бквы, мжн сэкнмт до 30% мст! Прктчск без ущрб читблнсти ;)

Птчк, я прнс!

Т бнк?

.

Пмн ткй бнк в рклм Лпнк

Потому и перестал. Копилот умнее

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

А если нет таких опций. Вот например использую Codeium в phpstorm. Настроек клавиш нет. Что развернется по табу - неизвестно, родной автокомплит или подсказка ассистента.. Пришлось отрубить AI в редакторе и оставить только чат.

Ну так не используйте такой редактор, в котором в 2024 нет гибкой настройки хоткеев на любой чих

>А если нет таких опций

Что кстати само по себе показательно. Уже не один год прошел с начала хайпа, но нет _ни одного_ нормально сделанного нейросетевого автокомплита!

@hooy

А это не проблема редактора, это проблема самих автокомплит-плагинов. Которых нормально сделанных просто не существует в природе. На уровне настройки редактора тут решить ни чего нельзя.

так Codeium в вскоде вполне себе удобен, использую его уже около года или больше. по умолчанию он прелагает свои подсказки, но по хоткею вызываю автокомплит стандартный и расширение убирает свой вариант

А еще удобно точечно и последовательно принимать автокомплит от кодиума хоткеем "ctrl+стрелочки"

исключительно бесит, когда нужно позиционироваться на пару слов правее, а вместо этого вставляются рандомные куски кода. Если успеют. Если я нажимаю быстрее - не вставляются. Если чуть задумался - откатывать и вычищать

Это также работает и в PHPStorm с Copilot

Запилить хоткей это прогресс конечно)

Нормальный нейросетевой автокомплит должен уметь хотя бы адекватно комплитить внутрь не фейля со скобочками и учитывать контекст language servera

Проверьте настройки.

Settings > Keymap > Plugins > Codeium

Вот же ж блин... Спасибо!

Как нет настроек клавиш? Settings->Keymap. Настроил себе нужные хоткеи и не проскакивает по табу непойми что.

Несколько месяцев пользуюсь Сodeium в LazyVim и что-то и с ним не удобно и без него как-то грустно - иногда он удачные правки предлагает.

Ранее пробовал только играться с порядком вывода подсказок в меню автокомплита, но получалось довольно криво.

Сегодня с утра подкрутил свой конфиг - при включении редактора Codeium выключается, чтобы не мешал, а по хоткею его можно включить обратно:

https://github.com/utrumo/myConf/blob/master/nvim/lua/plugins/codeium.lua

Спасибо за идею!

Мне кажется, было бы удобнее - если бы копайлот "жил" своей жизнью на соседнем экране. В то-же время программист писал бы стандартный код с автокомплитом и мог бы задавать ему вопросы (как в поисковик). Но и при обычном написании - он бы подсказывал, что тут можно сделать так или вот тут лишнее (главное - сам не лез в код и автокомплиты)...
Судя по тому, что пишет автор - копайлот похож на джуно-мидла, за которым надо обязательно проверить - что он там написал.

Это как раз GitHub Copilot Chat :) Сидит в отдельном окне, при этом понимает контекст. Можно сказать что-то типа "перепиши выделенный участок кода"

На самом деле, оба варианта - это инструменты, к которым нужно привыкнуть и выработать эффективные практики применения, на что нужно гораздо больше 2 месяцев, особенно учитывая, что за эти 2 месяца там "под капотом" немеряно изменений произойдет.

Зашла только ради того, чтобы посмотреть, сказал ли кто-нибудь что-нибудь про заголовок.

так все-таки Копайлот, Copilot или copilot?

сопилот (по аналогии coprocessor - сопроцессор).

-- Какая разница между авторством и соавторством?
-- Примерно как между пением и сопением.

"Спутник" как-то привычнее в словах для новых сервисов, он и поисковик и вакцина, поистине универсальное слово.

На авиационном жаргоне второй пилот называется «права́к», потому что сидит на правом пилотском кресле; на левом сидит командир.

Дак вот кто такой "левак" 🙃

Соплелёт.

Даже "соплемёт", скорее - т.к. накидывает бесполезного мусора нереально. :)

“правак”, а в некоторых случаях ещё и “Сусанин”

Встречный опыт: Qt Creator/C++, VS Code/TypeScript+HTML

Работает как продвинутый автокомплит, и в хорошем и в плохом смысле. В хорошем - предлагает поля структур, рутинные аксессоры / циклы / проверки, иногда он разумно предлагает блок в несколько десятков строк "по аналогии" (убрать который вообще в порядке следования DRY архитектурно очень нетривиально). В плохом - когда правишь файл с неидеальным чужим кодом, успешно подтаскивает из него неидеальные привычки его автора.

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

В Qt Creator работает вместе с обычным автокомплитом, так что проблем с непредсказуемым вводом имён полей/методов я не наблюдал.

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

Поскольку их не происходит и без Copilot, я не рассматриваю это как минус (а то что разводить много зависимостей неудобно - даже как маленький плюс).

В некоторых случаях его автокомплит вообще синтаксически не корректен.

Это бывает, но требует мелких правок (в частности, при каких-то условиях он начинает ставить лишнюю закрывающую скобку в конец блока - то ли его пространства имён озадачивают, то ли что). Или же изредка он предлагает бред, но тогда его вставлять не надо вообще.

У меня такой же опыт с ChatGPT-4o, который пытаюсь приспособить для анализа массивов отзывов и генерации соответствующих отчетов. В начале кажется, что работает круто и отлично все классифицирует, выявляет часто повторяемые проблемы, умеет отличать негатив от позитива и т.д.

Но когда углубляешься, то руками приходится столько доделывать, переделывать и проверять, что толку от ИИ практически нет.

А особенно мне понравилось, что на команду "дай примеры более подробных отзывов" по такой-то теме, он начал генерировать отзывы сам. Причем заметил это только благодаря "гладкости" текста.

на команду "дай примеры более подробных отзывов" по такой-то теме, он начал генерировать отзывы сам.

Ну так вы сами его попросили........

здесь подразумевается примеры из входного массива, а не из общей базы гпт

Просто тема обработки отзывов тоже передо мной стояла, понимаю боль

здесь подразумевается примеры из входного массива, а не из общей базы гпт

Это вами подразумевается. А в запросе "дай примеры более подробных отзывов" нет требования брать эти примеры из массива, а не генерировать. Основная сложность использования ChatGPT и иже с ними - правильно формулировать то, что действительно хочешь получить, и ничего не подразумевать.

И да, лично мне часто приходится в контексте требовать у ChatGPT выдумывать, а не обрабатывать ранее сказанное.

Основная сложность использования ChatGPT и иже с ними - правильно формулировать то, что действительно хочешь получить, и ничего не подразумевать.

Собственно, в этом её большое преимущество перед людьми - люди даже в этом случае умудряются всё услышанное полностью перевирать.

люди даже в этом случае умудряются всё услышанное полностью перевирать.

...и в этом сопилоты семимильными шагами приближаются к человеку!

Насчёт проблемы правильного формулирования запроса: Джин, я хочу, чтобы у меня всё было! Ок мужик, у тебя все было!

Джин, я хочу, чтобы

Допился мужик, уже с алкоголем разговаривает...

Сопилот не понравился, а вот локальная ллама в этом плане будет получше. Ну есть ошибка в программе. Говорю ей - переписать заново. И зависимости она обычно прописывает вначале, то есть использование библиотек возлагается на ИИ. Иногда конечно оно выдумывает библиотеки, да и вызовы выдумывает. Если модулей в программе много, то обычно работает просто "Напиши вот это и это на питоне, используя qt", если идти по функциям, а не прям вот всю программу. То есть майн с инитом у нас в начале - заставляем ИИ поработать архитектором и правим, а затем уже мелкие моторные навыки - Напиши функцию, чтобы принимала на входе строку в формате () и на выходе эта функция возвращает число букв в строке. Это я утрированно, не думайте что я про Len не знаю)

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

А подскажите детальнее про тонкую грань плз: на каком языке пишете, какая локальная модель, какая среда выполнения и какой промпт?

Я вот экспериментирую с этими:

$ docker exec -it ollama ollama ls
NAME                    	ID          	SIZE  	MODIFIED    
codellama:13b-instruct  	9f438cb9cd58	7.4 GB	4 weeks ago	
deepseek-coder-v2:latest	8577f96d693e	8.9 GB	4 weeks ago	
codestral:latest        	fcc0019dcee9	12 GB 	4 weeks ago	
llama3:latest           	365c0bd3c000	4.7 GB	4 weeks ago	

и надо сказать, что когда в видуху влазит максимум около 6.5GB а остальная часть модели оказывается в обычной памяти, то codestral уже заметно тормозит.

Какая модель в результате даёт наиболее приемлемый результат, хотя бы и с задержкой? А то я было начал устанавливать -все игры-, но может кто-то уже успел пощупать.

Я посмотрел как у других копилот работает и подумал - ну нахрен. Интеллекта там нет, предлагает переставить местами проверки условий в цепочке If else if ибо один из блоков короче другого и ему пофиг что одно условие это просто сравнение инта с интом, а второе условие - вызов какой-то функции весьма даже не лёгкой по процессору.

В своей статье про доверие и LLM я пишу, что для доверия нужна еще и предсказуемость. Ваша статья это хорошо иллюстрирует. У редактора с автозаполнением есть предсказуемость, а у Copilot -а предсказуемости нет, а значит и нет доверия.

Предсказуемость - это общее неявное требование для программных систем. Но про неё очень часто забывают, причём даже гранды построения UI - в той же OSX, например, система по-умолчанию сортирует виртуальные рабочие столы, убивая предсказуемость.

Оно, оно. По-умолчанию после установки оно включено.

Copilot это не столько про доверие, сколько про автоматизацию понятной вам рутины, где результат вы сами можете критически оценить. Работа с ним больше напоминает работу со стажёрами, нежели с оракулом.

> Работа с ним больше напоминает работу со стажёрами, нежели с оракулом.

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

Да но иногда можно скинуть задачу которой заниматься сам не хочешь но надо бы сделать.

то естественно никаких автоматических импортов не произойдет. Это
сбивает, потому что каждый раз непонятно, что уже импортировано, а что нет.

Pycharm c Python хорошо подсвечивает такие моменты и через хоткей предлагает добавить импорты.

Плюс рядом есть chatgpt

У сопилота тоже есть свой чат. Не пробовали его?

Пробовал, но мне как-то проще оказалось работать через chatgpt. Не отрицаю что конкретно в этом случае текстовый интерфейс вима не помогает.

У меня плюсы на минусы складываются в ноль. На работе есть копилот на домашних проектах нет. Ни там ни там не страдаю. Вот только чатом так и не начал пользоваться, его поддержку в IDE завезли с опозданием.

Как им в России пользоваться?

Через VPN

Платить за него как?

Казахстанской картой

А её где в России выдают? Как пополнять?

Заказать с доставкой через посредников, погуглите, вариантов много, конкретный советовать не хочется.

Фридомфинанс, например. На авито куча народа оформляет

Рублями. Есть миллион вариантов.

За миллион рублей?

Vdsina — 200 р/месяц. Еще вопросы?

Delims, как вариант (не реклама).

Прокси поставить в редакторе кода и не придется включать впн

Каждый раз когда он что-то подсказывает, нужно внимательно смотреть, что он там предлагает и даже после вставки кода проходит некоторое время на осознание того, кто я, где я и что с этим теперь делать.

Ну как бы чем сложнее подсказка тем внимательнее надо смотреть и да, конечно при этом нужно время на осознание
Выше уже предложили разделить обычные простые подсказки компилятора и подсказки copilot

Есть ещё режим, когда желаемый результат описываешь в комментарии, а он под ним пишет код. Так Copilot получает больше контекста и результат становится точнее. Комментарии можно потом не убирать, оставляя их для потомков и него же самого.

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

Детальная постановка задачи это уже 50% решения.

Местами и 100% - см Prolog/SQL и прочие декларативные языки.

А я не перестал. Плагин в JetBrains Rider (C#) большую часть времени молчит, но иногда предлагает (не вставляет сам внаглую) варианты. Порой удивительно в тему, буквально то, что я и сам думал написать. Иногда (реже) - какую-то фигню, которую я игнорирую. В общем, пользы больше, чем вреда.

Автокомплит больше мешает, чем помогает. Однако, если лень писать какой-то кусок кода, он очень помогает. Разумеется, при вызове вручную.

Вот да, скорее это явный запрос на написание какого-то кода, причем чаще это скорее определение функции, тест или что-то такое, а не строчка кода.

В качестве редактора nvim (сборка LazyVim на скрине)

"Скрин" - это скриншот?

Да.

Не отображается.

Елки, забыл приложить

Мотороллер не мой (с)

А все таки подобные инструменты здорово жизнь упрощают. Например сегодня написал инструкцию с помощью ChatGpt. Просто накидал тезисов и заставил сгенерить Markdown файл. После немного поправил. На все ушло часа полтора. Сам бы писал пару дней. Так как дофига времени потратил бы на оформление.

Тоже был подобный опыт. В качестве автокомплита LLM чаще мешает и раздражает, чем помогает, но когда понадобилось написать объемную документацию для end-user - ИИ помощник оказался весьма кстати.

когда понадобилось написать объемную документацию для end-user

поздравляю, Вы изобрели переводчик с машинного на человеческий!

Я так понял, что основной негатив автора связан с пыхой. Я вот использую копю в контексте go, и с его тулзами авто форматирования и автоимпортов без всяких "ии" - копя-чан офигительно помогает писать очередной сервис по перекладыванию жысонов. Типа, пара строк для контекста, два-три таба -- и строя готова. Потом ctrl+s, нужные и порты подтянуты go-fmt, и дело сделано

Я вот тоже php-шник и постоянно использую Copilot в работе. Не понимаю претензий автора. Да, помощник иногда бредит, но ведь не обязательно принимать предлагаемые им варианты.

Блин, писать всякие тривиальные проверки и early return'ы просто по нажатию Tab - это супер удобно. А подобный код, как ни крути, составляет минимум процентов 30.

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

Програмирование с КоПилотом - это как парное програмирование, а помошник "креативный" и тупой, но хорошо умеет в copy-paste. И весь плохой код он активно копирует и вставляет.

Ты ж программист, сделай своего бота в телеге!

Я ж программитст, а не извозчик!

А я все больше Tabnine и chat gpt использую))

Вот да, мне в сопилоте не хватает какой-то опции вроде «не пиши много кода, пиши мало».

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

Я не тестировал Copilot, я тестировал любительские поделки на эту тему. Поэтому одно из двух:
ЛИБО
* Автор текста нихрена не понял или врёт.
ЛИБО
* Copilot намного хуже большинства любительских поделок на эту тему.

Потому что по статистике я сразу принимаю 85% предложенных комплитов от модели.

Жаль copilot (или плагин), по крайней мере на обычных тарифах, не показывает статистику. Было бы удобной фичей - вы сэкономили столько то времени, столько то строк (символов?) кода, выбираете версию копилота в X% случаев

Либо автор текста пишет более сложные / необычные / непонятные модели вещи.

В одних проектах оно правда неплохо понимает, в других всё мимо. Целиком зависит от предметной области и типичности задачи.

Пишу на GO, использую chatGPT для генерации разных функций. Он скорее показывает общий подход - "как это делается", а потом всё равно переписывать приходится. Меня раздражает то что он часто использует анонимные функции и множество return на одну функцию. Кроме того, пишет сложные выражения в условных операторах. Моему стилю это совершенно не соответствует. Знаю что можно поправить давая ему правильное задание, и указав хотелки в настройках. Но всё равно, он генерирует код не соответствующий моим представлениям о правильном структурировании.

Используйте специализированный промпт разработчика, чтобы chatGPT писал весь код, а не только шаги. Свой стиль можете также 1 раз кратко описать и подавать в виде контекста - уверен, все это подхватится. В том числе этот промпт можно указать в настройках chatGPT, чтобы не копипастить в каждый новый чат.

P.S. ссылки на телеграм не приветствуются, тем более не мой, но промпт, который я использую выкладывали на vc, гуглится по "I have no fingers and the placeholders trauma." (авторство промпта все же укажу - Денис Ширяев).

Что за заголовок? Можно просто написать без этого "ивотпочему"?? Надоел этот тупой штамп.

Ха, зря я ругался на этот же штамп. Надо было сначала комменты почитать :)

Прямо сейчас открыл, например, РБК (просто для иллюстрации). "Эксперты назвали вид напитка, рынок которого будет расти ближайшие 10 лет", "Назван российский город, обогнавший Москву по ценам на аренду жилья". И всё в таком духе :(

Всегда хочется спросить - кем назван, какие эксперты назвали, вы о чём вообще?

использую Copilot с GO. (у нас микросервисы, все по примерно одной архитектуре)

мне прям нравится! но да, надо проверять что он пишет! вот прям надо, надо, надо!

res, err := someFunc()
потом жмешь tab и там дописывается обработчик ошибки - красота

нужно какой-нить датамапер написать - написал функцию

toGRPCUser( нажа tab - у тебя 15 полей заполнены

запрос из базы данных.. я часто просто называние функции пишу, появляется 30-40 строк кода (правок минимум). Иногда достаточно написать название UserRepository - 5-6 раз нажать tab - у тебя написан тупейший CRUD

пишешь switch он поймет какой тип данных, тут же найдет все константы этого типа и распишет все case

ну, это давно известно, что бывают прогеры которые годами крудошлёпят. главный вопрос - зачем вы это делаете?

Хорошо оплачивается.

зачем мы автоматизируем тупейшие задачи? (посыл поста был именно в этом)

ну я не знаю что вам на это ответить... )

запрос из базы данных.. я часто просто называние функции пишу,
появляется 30-40 строк кода (правок минимум). Иногда достаточно написать
название UserRepository - 5-6 раз нажать tab - у тебя написан тупейший
CRUD

В спринг Бут для джавы, просто делаешь пустой метод в интерфейсе и даже таб нажимать не надо.

А как-то автоматически строить такие toGRPCUser библиотекой нельзя? Ну напишет, это Copilot один раз, но читать-то это потом придётся десять раз и людям...

Можно. https://github.com/google/python-proto-converter

Ptotobuf сам по себе убирает много кода, так как генерит сервер и клиент. Мне подход описания того что ты хочешь, вместо кода очень нравится.

Меня одного раздражают заголовки, оканчивающиеся "и вот почему" или "что из этого получилось"?

Меня тоже!

А что ж вы кактус-то жуёте тогда? :)

Так работает же :)

Обычно было как на этой картинке, поэтому через месяц перестал этим пользоваться. Ещё пробовал Codeium в виде плагина для Idea, невозможно пользоваться из-за того, что весь тот бред, что он генерирует, вставляется по кнопке tab. Особенно выбешивает, когда пишешь на Python. Хочешь вставить отступ, а вставляется экран какого-то мусора.

Использую кодиум + гпт4о как автокомплитер и генератор сниппетов. В 98% генерится то что нужно, остальное допиливаю напильником. Стэк Vue3 (ts).

Аналогичный опыт. Да, когда помощник угадывает, этим приятно пользоваться.

Проблема заключается в том, что иногда он сильно не угадывает и поэтому ты должен быть постоянно в супер напряжении, чтобы каждый раз проверять и перепроверять выдачу. И еще и переключаться из режима "я переношу свои идеи из головы в код" в режим чтения, понимания и перепроверки чужого кода. Проще вообще от такого отказаться.

А я в восторге от copilot как от переводчика. Его можно попросить и перевести и объяснить смысл и привести примеры, и прудумать примеры использования слов.

Мне также очень понравилось как он сгенерировал код на С++, когда я простыми словами поставил ему задачу. Мне нравится, что его можно попросить проаналирзировать имеющийся код и улучшить.

Он очень хорошо справляется с задачами например написания резюме, составления договоров и стандартных писем.

Он так же может перефразировать имеющийся текст.

Вот например как он перефразировал и дополнил мой текст выше:

QT

Я в восторге от Copilot как переводчика. Его можно попросить не только перевести текст, но и объяснить его смысл, привести примеры использования слов в различных контекстах и придумать варианты их применения. Это делает его невероятно полезным для изучения новых языков и улучшения навыков общения.

Мне также очень понравилось, как он сгенерировал код на C++, когда я задал ему задачу простыми словами. Он не только написал код, но и объяснил каждый шаг, что помогло мне лучше понять процесс. Мне нравится, что его можно попросить проанализировать существующий код, выявить ошибки и предложить улучшения, что значительно ускоряет процесс разработки.

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

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

UNQT

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории