Úplně mě fascinuje pod těmahle článkama jak spoustu lidí považuje AI za slope, nekvalitní kod a kód od liských vývojářů za dokonalost.
Osobně bych rád upozornil že ty statisíce CVE které existují vygenerovali právě ti dokonalí vývojáři. Člověk je tvor omylný, náladový, (občas) unavený a kde jaká drobnost mu dokáže uniknout. Navíc spoustu lidí má fakt vysoké ego a myslí si že jsou neomylní. Naopak AI tímto netrpí. Podle mě osobně dokonalost je právě v souhře člověka a AI. Člověk by měl dát AI mantinely, architekturu, kontrolovat výsledky. AI se krásně může postarat o to aby někdo ten kód napsal. Navíc když ještě na pre-CR se použije další (jiný) model, dost se snižuje pravděpodobnost že tam budou chyby.
Řešení problému s AI je více AI, oukej.
Člověk je tvor omylný a náladový, ale minul jste tu část článku, že člověk se alespoň snaží, aby takový nebyl. Pokud mu "vynadáte" za chybu, pokusí se ji znovu neudělat. Kod než odešle do repa zkontroluje.
AI mi vygeneruje cokoliv. A je jí uplně jedno, jestli to funguje. Když nahlásím chybu, pokusí se ji opravit a je mu uplně jedno, jestli ta oprava je funkční nebo ne. Častokrát střílí možnosti naslepo. Ne že by měl jinou možnost, nemá debugger, nevidí výsledek. Opravím jednu chybu.. a on vklidu pokračuje dál, a to že ta samá chyba je na více místech je mu jedno... když nepřijde prompt, "podívej se, zda není tato chyba i jinde"
Tohle čék samozřejmě ví a s tím to používá, nějaký boilerplate to sestaví pěkně. Ale problém je, že někdo tohle popadne a dá do pull requestu a od té doby je to maintainera problém. Z pomoci se tak stane sabotáž s jediným výsledkem, pomoc nepřijímat. Všechno v tom článku je.
Ne že by měl jinou možnost, nemá debugger, nevidí výsledek.
Osobně nevím, ale můj model tedy debugger používá. Taky používá třeba browser, developer tools atd. když jde o chybu ve zobrazení na webu. Taky občas aby daný problém nebo chybu pochopil si přidá třeba nějaký kód který po sobě následně uklidí. Občas použije další nástroje (honeybadger, grafanu ...) pokud jsou relevantní k promptu. Jinak řečeno používá nástroje které mu dáte.
Nicméně nikdy jsem nezkoušel jestli se podívá při opravě chyb na další kus kódu jestli se tam daná chyba nevyskytuje. Otázka je jestli to udělá běžný programátor ;-) A otázka je jak kvalitně je asi napsaný kód který používá stejné konstrukce na více místech.
Tohle čék samozřejmě ví a s tím to používá, nějaký boilerplate to sestaví pěkně. Ale problém je, že někdo tohle popadne a dá do pull requestu a od té doby je to maintainera problém
Jinak řečeno programátor použil nástroj, dal mu všeobecné instrukce a nezkontroloval výsledek. Jaký je rozdíl od programátora který nepoužije AI a zprasí kód ve stylu vrstvy/nevrstvy, já to přebuju fixnout tady :-)
AI mi vygeneruje cokoliv. A je jí uplně jedno, jestli to funguje.
Pokud máte správný prompt a správné workflow tak se to dá minimalizovat (např. osobně jsem začal experimentovat s loopem mezi implementatorem a codereviewerem který vrací nehezký kód zpátky ať to implementator přepracuje).
Pokud mu "vynadáte" za chybu, pokusí se ji znovu neudělat.
Pokud to napíšete do AGENTS.md nebo do memory že takové chyby nemá dělat, samozřejmně je AI dělat nebude (pokud dokážete vysvětlit proč je daný kód špatně).
Celé to stojí na tom, pokud s tím AI umíte. Přiznávám, sám zřejmě neumím, o Agents.md slyším prvně.
<cite>Jaký je rozdíl od programátora který nepoužije AI a zprasí kód ve stylu vrstvy/nevrstvy, já to přebuju fixnout tady :-)</cite>
Ten programátor musel vyvinout usilí, pochopit kde se ta chyba nachází, pokusit se ji tam fixnout a otestovat že to alespoň řeší ten jeho problém.
Přímo v článku je ale případ, kdy oprava jednoho překlepu vedla k přeformátování celého kodu s uvozovkami, protože proč ne. Věřím, že člověk by nezačal přepisovat uvozovky v celém kodu nevědouc, co činí. Člověk se alespoň pokusí udělat opravu s minimem zásahu už kvůli lenosti / jasnosti opravy / budoucí kompatibility patche.
Ak o Agents.d pocujes prvy krat, tak vsetko tvoje doterjasie pozuivanie AI bolo na urovni vibecodingu a to sa potom nemozes cudovat vysledku, co ti AI dala.
Ano s AI musim vedie pracovat.
AI nieje na urovni AI aby si vsetko domyslela. Je to ako tvoj zivy novy koelga v teame, ktoreho musis zaskolit a vysvetlit ako to u vas funguje.
Ak mu das instrukcie a povies mu, ze sa ma ucit/znacit si poznatky, tak ons abude vylepsovat a bude cim dalej, tym lejsie produkovat take vystupy ako chces.
Teraz pracujem na projekte, kde pouzivame spec driven development(github spec-kit) a kde nepiseme ani ciarku kodu rcne ale mame specky, na zakalde ktorych AI generuje kod.
Samozrejem mame k tomu subory s instrukciami pre AI aby sme pri kazdom taksu nemuseli opakovat a zadavat mu rovnake instrukcie na zaciatku. Tam ma zapisane, co ako ma pouzivat, ako am vyzerat kod, ake patterny ma pouzivat atd.
Funguje to celkom dobre. Postupne sa uci AI a aj my ako to robit lepsie. AI si dpolnuje do .md suborov poznatky/instrukcie aby neopakovla rovnake chyby/nedostatky a kazdym taskom to ide lepsie.
Teraz pracujem na projekte, kde pouzivame spec driven development(github spec-kit) a kde nepiseme ani ciarku kodu rcne ale mame specky, na zakalde ktorych AI generuje kod.
Ano, věřím tomu, že pro překlápění podrobné specifikace do kódu funguje AI velmi dobře, bohužel realita open-source projektů je jiná. Minimum z nich začíná nějakou specifikací. Většinou to začíná nějakým nápadem autora, který se mnoha iteracemi v komunitě rozvíjí a dostává nějakou podobu. Tento proces vyžaduje velké množství lidské interakce, do které se "AI only" přístup těžko roubuje.
To je jasne ale ide to aj bez toho. Zalezi na konkretnom projekte a ako to autor projektu chce.
Da sa to robit po starom uplne bez AI az po AI only.
Podla mna "AI only" pristup dnes ide pouzit bez problemov na open-source projekte.
Na zaciatok uplne staci ten napad a to ci a ako iterujes v komunite tam nehra taku rolu.
AI si vie s tym poradit/ nieje to problem pre nasadenie AI only modelu.
Mam mensi side project, kde mam len agents.md a project-knowledge.md.
V agents.md ma vseobecne rules, co chem a nechcem aby AI robila. Nieco taketo
- Keep changes small, focused, and maintainable.
- Prefer runtime, memory, build-time, and operational efficiency.
- Prefer readable business logic over clever or overly generic code.
- Preserve existing code style, architecture, naming, and formatting conventions.
- Do not rewrite unrelated code or clean up outside the requested task.
- Do not revert user changes unless explicitly requested.
....
A project-knowledge.md sme vytvorili spolu s AI. Ja som jej povedal nech si prirpavi file, ktory jej bude vyhovovat.
AI si presla projekt, zakladne veci, co si vycitala tam zapisala a co nevedela vycitat alebo jej boli nejasne, tak sa na nich pytala a psotupne sme ten file naplnili sekciami a informaciami.
Je to v podstate tak strucna dokumentacia projektu pre AI.
Tieto dva files mi stacia na to aby AI robila to, co chcem a aby vystup bol dostatocne kvalitny. Oba subory priebezne aktualizuje aj sama AI podla toho ako sa vyvija projekt. Len zrdiedka nastane nejaky problem, ze zblbne a neurobi to podla pravidiel.
Toto hadam zvladne kazdy a u maleho projektu to bohato staci.
Zacinal som tak, ze AI som pouzival ako lepsiu dokumentaciu pre dany programovaci jazyk(to boli casy prvych public modelov ChatGPT).
Dnes fungujem v podstate "AI only" tak sa odvtedy AI zlepsila.
Já si třeba nemyslím, že AI generuje apriori nekvalitní kód, minimálně poslední verze těch nejlepších modelů. Problém nastává právě, když mu nenastavíte ty mantinely, architekturu a nekontrolujete ho. Když vezmete projekt, řeknete AI "přidej mi tam XY". A potom bez kontroly, pochopení architektury a znalosti pravidel toho projektu jim to předhodíte jako příspěvek. Pak se bavíme o AI slopu.
V tomto suhlasim, a osobne mam pocit, ze lepsiu kvalitu kodu dosahujem pouzivanim chetu ako agenta. Agenti s Antropicom su neskutocne ukecani, ako keby ich platili od riadkov kodu. Casto mi premazavaju veci.
Ale osobne by som nepovedal, ze ten kod je vyslovene nekvalitny - je v kontexte, ktory ma priemerny. Ale to casto nestaci.
Casto mi premazavaju veci.
To se mi stávalo když jsem nějakou věc opravil nebo přepsal po AI a ve stejném contextu kde to AI o pár bloků dřív napsala AI jsem řekl ať něco upraví. Hmm... "Někdo mě přepsal kód. Jdu to vrátit." :-) Od té doby si dávám pozor při těhle operacích aby ji na to upozornil, nebo compact/new context. A samozřejmně je dobrý pomocník git commit před zásahama AI :-)
pouzivanim chetu ako agenta
Pro mě osobně je třeba problém chatu než AI uvedu vůbec do problému, do kódu, do jazyku a do architektury. Agentu řeknu Mám tenhle a tenhle problém. Navrhni řešení. On projde kód, zanalyzuje to a navrhne řešení.
Agenti s Antropicom su neskutocne ukecani
To jde určitě upravit
Mě nepřijde že by mě model nepřiznal chybu. Zvlášt když ho pošlu "doloje" s nabízeným řešením a vysvětlím mu proč je to špatně. Ještě se mě mnohdy omluví ;-). To samé třeba pozoruju v loopu implementator -> reviewer kdy implementátor otevřeně přizná chybu kterou mu reviewer vytýká...
Když občas čtu diskuze tak asi používám divné modely
Alebo ste príliš optimistický. Vám sa nikdy nestalo, že ste dali jasný pokyn použiť napríklad vyhľadávanie, dostali ste sebavedomú odpoveď, ktorá sa ukázala ako nezmyselná, aby ste nakoniec po čase preverovania zistili, že váš pokyn použiť vyhľadávanie bol ignorovaný, pretože model viac verí tomu, čo má naučené ako tomu, čo by našiel vyhľadávaním? Mne sa to o stávalo často.
Občas se mi to stávalo dřív, hlavně u starších nebo non-frontier modelů. A pak při používání API na vlastních projektech, kde jsem zjistil, že se podobné chování často objevovalo když jsem např. neměl dobře napsaný system/developer prompt či když jednotlivé nástroje neměly jasný a explicitní popis (v kombinaci s dalšími hýblatky jako tempature etc.) = špatný prompting.
Osobně musím říct že dobře promptovat AI totiž není úplně jednoduché, a mě (osobně) hodně pomohlo, že jsem ji začal napojovat na vlastní projekty. Díky tomu jsem zjistil jak se chovají modely přes API (jinak řečeno čisté modely bez dlouhých promptů od výzkumníků z oblasti AI). Člověk pak lépe pochopí jak ten model vlastně funguje, vyhodnocuje věci, jak se chová např. při neexplicitních požadavcích nebo požadavcích které se překrývají (např. kategorizace s promptem kdy daný text se dá zařadit do více kategorií) atd.
Ale popravdě dodneška to považuju tak trochu za magii a experimentování, což u mě jako člověka který byl skoro celý život zvyklý na deterministické chování je trochu změna ;-)
"Člověk je tvor omylný, náladový, (občas) unavený a kde jaká drobnost mu dokáže uniknout."
Pokud vím, LLM se trénují na datech vytvořených lidmi. A proto jsou téměř bezchybnaté :-)
"Podle mě osobně dokonalost je právě v souhře člověka a AI."
S tím bych souhlasil, ovšem doplnil bych: "nebojme se dokonalosti, nikdy jí nedosáhneme" :-)