Viz též
- ./2023.03.30-chatGPT-kecy.html
- ./2023.03.30-chatGPT-sesny.html
- ./2023.04.01-chatGPT-snippets.html
- ./2023.04.02-chatGPT-hibernace.html
- ./2023.04.05-chatGPT-Liar-Liar-Pants-On-Fire.html
1 chatGPT
Roste to tady - https://chat.openai.com/chat - a chce to k zaregistrování email a telefon (a asi i jméno, nepamatuju se)
2 kecy na okounu
Zkusil jsem tomu předhodit takový problém, co teď řeším a bylo to zajímavé (ale méně užitečné, než jsem čekal)
Jde o static web generátor - píšu si stránky v nějakém značkovacím jazyku, přihodím nějaké obrázky, zdrojáky a tak a on z toho udělá websitu s navigací a RSS a vším v čistém HTML+CSS. Výhodou je, že ty stránky jsou by default zabezpečené, dají se stáhnout pro pozdější využití, obejdou se bez šmírovadel a tak.
Samozřejmě jsou stovky takových generátorů, navíc je to teď módní, takže jsou aktivně vyvíjené, ale co jsem tak procházel a zkoušel a hledal, tak mi tam pořád něci chybí, nebo dost nesedí a tak. A ty týmy za nima jdou jiným směrem a moje požadavky tam nechtějí zahrnout, tak jsem se rozhodl napsat vlastní, který by mi vyhovoval víc.
Rozmyšlené to mám částečně, tak jsem na chatGPT zkusil hodit takový úplně malý základ, že uvidím, jak na to jde a pak to postupně budu komplikovat a upřesňovat.
Základní boilerplate vystřihnul správně a jednoduše, pak jsem začal přidávat další požadavky a začlo to drhnout ve stylu "něco, co se téměř úplně, ale ne zcela naprosto nepodobalo čaji".
Začal jsem RST->HTML konvertor, ok. Přidal požadavek na parametrizaci výsledku (nahradit podle dict. City za Prague ...), ok, upravil rendrovaní templetu (kde to upravuje ten template). Přidal jsem požadavek na obdobné úpravy v RST souboru ({root} za "../.." a podobně) a on to zase přidal do templatu. Po několika opravách to nakonec ale do toho RST nějak dal (doufal jsem v nějakou chytrou funkci, ale udělal to otrocky "ručně"). Chtěl jsem další vylepšení a čím dál, tím víc to drhnulo, i když jsem mu výslovně řekl, co chci, tak to udělal na první pokus(y) jinak (takže se to minulo cílem) i u věcí typu "pro blond sekretářku" (přesuň sekci X tam a tam - protože ve výsledném kódu v ní budu ještě kutit, ale teď chci, abychom pracovali oba na stejném kódu).
A to jsem mu to podával docela jasně a po lopatě.
Druhý den jsem chtěl pokračovat, ale už si nepamatoval, o čem jsme mluvili (mám verzi zdarna, jen za email+mobil registraci), tak jsem mu to tam copy+paste a on to zkritizoval (hlavně věci, co byly jeho vlastní invence). Tak jsem ho to nechal po libosti upravit, něco bylo prima, něco ne, tak jsem mu řekl, že to a to se mi nelíbí a on odstranil asi dvakrát víc změn, než bylo třeba. (Srát naňho, docpu si to tam později sám, však si kopíruju všechno.)
Další úpravy šly stále nějak pomaleji a neohrabaněji. Nakonec jsem měl pocit, že si víc hraju s tím, jak mu to vysvělit, než že bychom někam postupovali, tak jsem toho nechal a začal řešit jiné problémy okolo, jako pomocné bash-skripty.
Zase na poměrně jasné zadání vyplivnul něco, co se tvářilo, že problém řeší, ale ve skutečnosti to fungovalo špatně - potřeboval jsem relativní adresy (místo /home/usr/.../logo/obr.png mít prostě ../../logo/obr.png ) a on tam aplikoval dvě věci, které to dělaly, takže to pro hloubku zanoření 0 a 1 chodilo správně a od 2 výš se ty mu tam ty "../" množily příliš, ale pořád tvrdil, je je to tak správně (a prokazatelně nebylo).
A tak podobně.
Je pěkné, že po vyplivnutí kódu vyplivne i nějaký pokec na to, co teď řešil (jak on pochopil zadaní) a jakým způsobem a jak to případně vylepšit. Jednak má člověk zpětnou vazbu, zda se vůbec chápeme, jednak i vidí další souvislosti -
Takže zatím mi přijde, že je to fajn na takové to rychlé "napiš mi něco, co dělá X", kde vyplivne generický example, ale na složitější práci s tím už to docela drhne, čím dál tím víc.
Takže zadat mu jeden relativně ucelený problém fajn, ale moc ho nerozvíjet. Dodělat ručně. Nechat si od něj radit vždycky jen jednu věc/obrat/myšlenku/... s tím, že to nějak pojme (a možná to nebude ani úplně správně, ani úplně špatně) a pak si to dál dozpracovat sám. A nechat si případně zase ukazovat jednotlivé obraty jako samostatné věci, nikoli v kontextu toho, co se snaží tvořit. Takové jakoby párové programování s kolegou, co moc programovat neumí, ale zná hrozné množství příkladů a dokumentace.
Jo, dělal jsem to na pokusné mašině, tak že jsem mu všechno zadával jednoduchou angličtinou a IMHO mi rozuměl naprosto vše tak, jak jsem to zamýšlel říct, že nestrefil výsledek nebylo nepochopením toho, co píšu, ale nepochopením problému. Teď už jsem tam rozchodil i češtinu tak uvidím, co udělají české dotazy. ( "XkbLayout nově neobsahuje XkbVariant, takže se musí uvádět zvlášť" a "XkbOptions grp:shift_toggle se nově píše jako grp:shiftS_toggle s S" - "nově" berte s rezervou)
Asi to bude dost užitečný nástroj, ušetří místy spoustu psaní a místy navrhne šikovné věci, ale celkově bude nad sebou potřebovat hodně zkušený dozor, který mu tam bude hrnout ta zadání tak, jak to chatGPT zvládá a pak z odpovědí bude skládat výsledek a hlavně ověřovat, co to dělá doopravdy, nikoli jen co o tom chatGPT tvrdí.
4 chatGPT a GPL
Gilhad > can i publish code generated by you under GPL license?
chatGPT > As an AI language model, I do not generate any code myself. However, if you use me to help write code, the resulting code is considered to be authored by you and you are free to publish it under the GPL license, as long as you comply with the terms of the license.
It's worth noting that using an AI language model to assist in writing code does not exempt you from your obligations under the GPL or other open-source licenses. If you incorporate any open-source code into your project, you must comply with the terms of the license that governs that code, which may require you to release your own code under the same or a compatible open-source license. Be sure to carefully review the license terms of any third-party code you use in your project to ensure compliance.