Tak jsem si také vyzkoušel spolupráci s AI, konkrétně Anthropic Claude, ale narazil jsem na jeden problém. Tím problémem je vysvětlit té AI, co vlastně chci. A přestože AI dává zajímavé výsledky, měl jsem problém jí vysvětlit, nejen co po ní chci, ale jak to má udělat.
Přes veškerou snahu jsem dospěl k závěru, že ta AI si to dělá po svém a já jí musím hodně moc usměrňovat a říct jí, že to chci jinak.
Jak tedy spolupracovat s AI, abych z ní dostal to co chci a jak to chci?
1. Když něco nevíš nebo máš problém s AI, řekni to AI a požádej, ať navrhne, jak problémům předcházet.
2. AI není jasnovidec a do hlavy ti nevidí. Člověk není superman a málokdy napíše vše jednoznačně, takže počítej s iteracemi.
3. Naprosto zásadní je příspěvek
https://forum.root.cz/index.php?topic=31827.msg436090#msg436090 Jestli nevíš jak na to, požádej Claude: "V diskusi jsem četl, že pro efektivní práci s Claude jsou třeba tyto sobory .... Vysvětli mi, k čemu jsou dobré obecně a k čemu budou dobré pro tento projekt."
4. Na začátku je dobré s AI probrat, co se vlastně chystáš dělat a jak se to chystáš dělat. Začátek konverzace v projektu "Chci si udělat transpiler vlastního jazyka do C++. Mám celkem jasno v hlavních vlastnostech svého jazyka. Poraď mi, jak postupovat efektivně tak, abychom se nemuseli vracet k již odladěným částem kódu." Claude navrhne právě ty soubory, o kterých tady už byla řeč. Jestli nevíš, jak je vytvořit, nechej Claude, ať je vytvoří sám a postupně je můžeš doplňovat ty nebo Claude požádta, ať do nich přidá / upraví informace. Je dobré definovat nejzákladnější pravidla jako:
- V případě nejasností se zastav a zeptej se mě.
- Nikdy, ale vůbec nikdy sám nedávej žádné příkazy externímu úložišti, jako commit nebo revert. Tyto příkazy musím vždy schválit.
- Budeme používat soubory .... s popisem architektury jazyka. Vždy se jimi musíš řídit. Pokud vyvstane nesrovnalost s mými požadavky, zastav se, napiš mi, jakou nesrovnalost jsi našel a čekej na mé rozhodnutí, jak pokračovat dále.
- Před implementací vždy vytvoř implementační plán a čekej na mé schválení nebo připomínky.
- Budeme implementovat vždy jen jednu feature, tu pak otestujeme a až ji schválím, teprve půjdeme na další.
- Testovat budeme každou feature po jedné. Za tímto účelem budeme mít sadu tetsů, které mají projít a sadu testů, které projít nemají. Po implementaci každé feature skontroluj, zda stále prochází všechny regresní testy. Pokud ne, oprav zavlečenou chybu a spusť testy znovu a tak dokola, dokud nebudou všechny zelené.
- atd...
Pak bych mu napsal, ať vytvoří hrubý implementační plán (řekl bych po epicech) pro implementaci hlavních oblastí jazyka. (Začal bych command line, vytvořením infrastruktury unit testů (jak vlastně poznat, že test prošel a jak je mít uloženy)) atd.
Jo, spousta práce, ale tak to je. AI je jen nástroj, ne jasnovidec a pokud chceš mít kvalitní výstup, bude to stát spoustu lidské práce.