Comments 126
Я перестал использовать Copilot после 2 месяц.
Это на каком языке? И почему даже в заголовке?
На самом деле почти все описанные недостатки фиксятся если использовать AI помощника рядом с обычным автокомплитом, а не вместо. Назначить на отдельный хоткей. Довольно часто он может неплохо подсказать, особенно если как писали, код повторяющийся. А в стальное время можно работать как будто его нет.
А если нет таких опций. Вот например использую Codeium в phpstorm. Настроек клавиш нет. Что развернется по табу - неизвестно, родной автокомплит или подсказка ассистента.. Пришлось отрубить AI в редакторе и оставить только чат.
Ну так не используйте такой редактор, в котором в 2024 нет гибкой настройки хоткеев на любой чих
>А если нет таких опций
Что кстати само по себе показательно. Уже не один год прошел с начала хайпа, но нет _ни одного_ нормально сделанного нейросетевого автокомплита!
А это не проблема редактора, это проблема самих автокомплит-плагинов. Которых нормально сделанных просто не существует в природе. На уровне настройки редактора тут решить ни чего нельзя.
так Codeium в вскоде вполне себе удобен, использую его уже около года или больше. по умолчанию он прелагает свои подсказки, но по хоткею вызываю автокомплит стандартный и расширение убирает свой вариант
Проверьте настройки.
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
У сопилота тоже есть свой чат. Не пробовали его?
У меня плюсы на минусы складываются в ноль. На работе есть копилот на домашних проектах нет. Ни там ни там не страдаю. Вот только чатом так и не начал пользоваться, его поддержку в IDE завезли с опозданием.
Как им в России пользоваться?
Каждый раз когда он что-то подсказывает, нужно внимательно смотреть, что он там предлагает и даже после вставки кода проходит некоторое время на осознание того, кто я, где я и что с этим теперь делать.
Ну как бы чем сложнее подсказка тем внимательнее надо смотреть и да, конечно при этом нужно время на осознание
Выше уже предложили разделить обычные простые подсказки компилятора и подсказки copilot
Есть ещё режим, когда желаемый результат описываешь в комментарии, а он под ним пишет код. Так Copilot получает больше контекста и результат становится точнее. Комментарии можно потом не убирать, оставляя их для потомков и него же самого.
А я не перестал. Плагин в JetBrains Rider (C#) большую часть времени молчит, но иногда предлагает (не вставляет сам внаглую) варианты. Порой удивительно в тему, буквально то, что я и сам думал написать. Иногда (реже) - какую-то фигню, которую я игнорирую. В общем, пользы больше, чем вреда.
Автокомплит больше мешает, чем помогает. Однако, если лень писать какой-то кусок кода, он очень помогает. Разумеется, при вызове вручную.
В качестве редактора nvim (сборка LazyVim на скрине)
"Скрин" - это скриншот?
А все таки подобные инструменты здорово жизнь упрощают. Например сегодня написал инструкцию с помощью ChatGpt. Просто накидал тезисов и заставил сгенерить Markdown файл. После немного поправил. На все ушло часа полтора. Сам бы писал пару дней. Так как дофига времени потратил бы на оформление.
Тоже был подобный опыт. В качестве автокомплита LLM чаще мешает и раздражает, чем помогает, но когда понадобилось написать объемную документацию для end-user - ИИ помощник оказался весьма кстати.
Вас скоро заменят
@
Суетливый бот фейлит при вызове функции и пишет комменты рода here we add value a to value b
Я так понял, что основной негатив автора связан с пыхой. Я вот использую копю в контексте 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 один раз, но читать-то это потом придётся десять раз и людям...
Меня одного раздражают заголовки, оканчивающиеся "и вот почему" или "что из этого получилось"?
Обычно было как на этой картинке, поэтому через месяц перестал этим пользоваться. Ещё пробовал Codeium в виде плагина для Idea, невозможно пользоваться из-за того, что весь тот бред, что он генерирует, вставляется по кнопке tab. Особенно выбешивает, когда пишешь на Python. Хочешь вставить отступ, а вставляется экран какого-то мусора.
Использую кодиум + гпт4о как автокомплитер и генератор сниппетов. В 98% генерится то что нужно, остальное допиливаю напильником. Стэк Vue3 (ts).
Аналогичный опыт. Да, когда помощник угадывает, этим приятно пользоваться.
Проблема заключается в том, что иногда он сильно не угадывает и поэтому ты должен быть постоянно в супер напряжении, чтобы каждый раз проверять и перепроверять выдачу. И еще и переключаться из режима "я переношу свои идеи из головы в код" в режим чтения, понимания и перепроверки чужого кода. Проще вообще от такого отказаться.
А я в восторге от copilot как от переводчика. Его можно попросить и перевести и объяснить смысл и привести примеры, и прудумать примеры использования слов.
Мне также очень понравилось как он сгенерировал код на С++, когда я простыми словами поставил ему задачу. Мне нравится, что его можно попросить проаналирзировать имеющийся код и улучшить.
Он очень хорошо справляется с задачами например написания резюме, составления договоров и стандартных писем.
Он так же может перефразировать имеющийся текст.
Вот например как он перефразировал и дополнил мой текст выше:
QT
Я в восторге от Copilot как переводчика. Его можно попросить не только перевести текст, но и объяснить его смысл, привести примеры использования слов в различных контекстах и придумать варианты их применения. Это делает его невероятно полезным для изучения новых языков и улучшения навыков общения.
Мне также очень понравилось, как он сгенерировал код на C++, когда я задал ему задачу простыми словами. Он не только написал код, но и объяснил каждый шаг, что помогло мне лучше понять процесс. Мне нравится, что его можно попросить проанализировать существующий код, выявить ошибки и предложить улучшения, что значительно ускоряет процесс разработки.
Он отлично справляется с такими задачами, как написание резюме, составление договоров и стандартных писем. Его способность создавать структурированные и профессиональные документы делает его незаменимым помощником в деловой переписке и административных задачах.
Кроме того, он может перефразировать уже существующий текст, улучшая его читабельность и делая его более понятным. Это особенно полезно, когда нужно адаптировать текст для разных аудиторий или улучшить его стиль.
UNQT
Я перестал использовать Copilot после 2 месяцев. И вот почему