1
Vývoj / Re:Produktivita vývojáře v době AI
« kdy: 14. 10. 2024, 14:52:34 »
Ahoj, asi pul roku pouzivam neplacenou verzi SourceGraph Cody v podobne doplnku do VS Code. Pouziva model Anthropic Claude Sonnet 3.5 (tedy dlouhy kontext a fill in the middle a ne predict next word jako ChatGPT modely, coz by melo byt pro programovani uzitecnejsi -- ale nemam osobni zkusenost) spolecne s lokalnim RAG/retrieval-augmented generation (probehne se po celem naklonovanem Git repu a zaindexuje si ho -- napocita embeddingy meho kodu pres LLM API a nahodi lokalni similarity/semantic search, kterym obohacuje dotazy do LLM API) a da se pouzit jak pro code completion, tak pro chat (tam je mozne pridavat kontext -- napr. oznacit blok radku nebo cely soubor). Super bonus je, ze se zasilana data nepouzivaji pro trening modelu -- i ve free verzi!
Free verze nema zadny limit ktery by me realne omezoval a nevyzaduje nic vic nez GitHub ucet (zadny telefon, cele jmeno a datum narozeni apod.). Pokud si nekdo plati nejake LLM API, tak se da pouzit i vlastni API klic. Pomoci GitHub uctu dovede zjistit, jak moc se zmenil kod oproti dobe kdy nad nim napocital embeddingy, takze je muze pregenerovat.
Diky RAG je coding asistent velice relevantni, protoze napovida nejen generickym know-how vydestilovanym z internetu, ale aplikuje lokalni coding style z meho Git repa. Fun fact: Dost mu pomahaji typove anotace, semanticky spravne nazvy trid/metod, docstringy a komentare -- myslim, ze to je ultimatni argument proti zastancum zakazu veskerych komentaru/docstringu. ;-)
Sice pouzivam striktni linting, pomerne striktni typove anotace a v IDE mam doplnek, ktere diky typovym anotacim dovede opravdu slusne doplnovat, ale diky asistentovi je mozne doplnovat i opakujici se fragmenty kodu (napr. konstrukce SQL dotazu pro ruzne DAO metody, kde se casto opakuji jmena tabulek, struktura slozenych primarnich klicu, WHERE podminky apod.). U testu a docstringu pouzivam styl "zacnu psat, necham ho doplnit, doupravim to po nem a zas necham doplnit". Diky specializaci na integraci do IDE se nemusim moc zabyvat prompt engineeringem, protoze system prompt maji zrejme tak vytuneny, ze mi casto staci jen pastnout treba cast interaktivni session v IPython REPL nebo z prikazove radky vcetne chybove hlasky a ani nemusim pripisovat at to opravi nebo poradi co je spatne. Pomerne uzitecna je i prvotni orientace v nezname codebase (nechat si pres chat vysvetlit, k cemu dane repo slouzi a kde jsou zajimave casti kde se deje to nejdulezitejsi).
Naopak, na code review mi hodne vadi, kdyz se autor neobtezuje po asistentovi projit a doplnit docstringy -- protoze pak jen duplikuji to, co se da vycist ze jmena metody/jeji tridy a nemaji tak skoro zadnou pridanou hodnotu.
Za me stoji za to asistenta pouzivat -- rozhodne ze me nedela dva programatory v jednom, ale setri mi cast prace a pomaha generovat napady. Nebojim se, ze by (i pri dnesnim prekotnem vyvoji) tahle technologie nahradila programatory -- ale nektere veci diky tomu pujdou delat s mensi drinou.
Free verze nema zadny limit ktery by me realne omezoval a nevyzaduje nic vic nez GitHub ucet (zadny telefon, cele jmeno a datum narozeni apod.). Pokud si nekdo plati nejake LLM API, tak se da pouzit i vlastni API klic. Pomoci GitHub uctu dovede zjistit, jak moc se zmenil kod oproti dobe kdy nad nim napocital embeddingy, takze je muze pregenerovat.
Diky RAG je coding asistent velice relevantni, protoze napovida nejen generickym know-how vydestilovanym z internetu, ale aplikuje lokalni coding style z meho Git repa. Fun fact: Dost mu pomahaji typove anotace, semanticky spravne nazvy trid/metod, docstringy a komentare -- myslim, ze to je ultimatni argument proti zastancum zakazu veskerych komentaru/docstringu. ;-)
Sice pouzivam striktni linting, pomerne striktni typove anotace a v IDE mam doplnek, ktere diky typovym anotacim dovede opravdu slusne doplnovat, ale diky asistentovi je mozne doplnovat i opakujici se fragmenty kodu (napr. konstrukce SQL dotazu pro ruzne DAO metody, kde se casto opakuji jmena tabulek, struktura slozenych primarnich klicu, WHERE podminky apod.). U testu a docstringu pouzivam styl "zacnu psat, necham ho doplnit, doupravim to po nem a zas necham doplnit". Diky specializaci na integraci do IDE se nemusim moc zabyvat prompt engineeringem, protoze system prompt maji zrejme tak vytuneny, ze mi casto staci jen pastnout treba cast interaktivni session v IPython REPL nebo z prikazove radky vcetne chybove hlasky a ani nemusim pripisovat at to opravi nebo poradi co je spatne. Pomerne uzitecna je i prvotni orientace v nezname codebase (nechat si pres chat vysvetlit, k cemu dane repo slouzi a kde jsou zajimave casti kde se deje to nejdulezitejsi).
Naopak, na code review mi hodne vadi, kdyz se autor neobtezuje po asistentovi projit a doplnit docstringy -- protoze pak jen duplikuji to, co se da vycist ze jmena metody/jeji tridy a nemaji tak skoro zadnou pridanou hodnotu.
Za me stoji za to asistenta pouzivat -- rozhodne ze me nedela dva programatory v jednom, ale setri mi cast prace a pomaha generovat napady. Nebojim se, ze by (i pri dnesnim prekotnem vyvoji) tahle technologie nahradila programatory -- ale nektere veci diky tomu pujdou delat s mensi drinou.