Ako používať AI pri programovaní bezpečne a efektívne

Zadajte úlohu AI ako kolegovi a skontrolujte jej prácu ako reviewer. Prompty na ladenie, nový kód, testy a revízie vrátane dôležitých kontrol.

6 min čítaniaAktualizované

Glass blocks connected by glowing lines with small gears

AI chat je pri programovaní skutočne užitočný: vysvetlí neznámy kód, nájde príčinu chyby, napíše boilerplate kód, navrhne testy a naučí vás nový jazyk či knižnicu. Zároveň sa však sebavedomo mýli dosť často na to, aby ste ku každej odpovedi pristupovali ako k pull requestu od rýchleho, no nepozorného kolegu. Tento návod vám ukáže, ako sa správne pýtať a ako si overiť výsledok.

V čom AI chat pri programovaní vyniká

  • Vysvetľovanie kódu: „prejdi so mnou túto funkciu riadok po riadku“.
  • Ladenie chýb (debugging): prečítanie chybovej hlášky a stack traceu s návrhom pravdepodobných príčin.
  • Malé, presne definované funkcie: parsovanie dátumov, validácia vstupov, transformácia dát.
  • Boilerplate kód: konfiguračné súbory, spracovanie argumentov príkazového riadku, základné handlery pre API.
  • Testy: návrh jednotkových testov vrátane okrajových prípadov, na ktoré ste zabudli.
  • Regulárne výrazy, SQL a jednoriadkové shell skripty s vysvetlením jednotlivých častí.
  • Učenie sa: „viem písať v Pythone; ukáž mi, ako to vyzerá v Go a vysvetli rozdiely“.
  • Code review: odhalenie problémov s čitateľnosťou, chýbajúceho ošetrenia chýb a zjavných bezpečnostných rizík.

Horšie si poradí s veľkými architektonickými rozhodnutiami, ktoré závisia od celej vašej kódovej základne, s najnovšími verziami knižníc, ktoré ešte nemusí poznať, a so všetkým, čo nevidí. V chate ako ChatG má AI k dispozícii iba to, čo doň vložíte. Nemôže otvárať vaše súbory ani spúšťať váš kód.

Ako požiadať o opravu chyby

Väčšina slabých programátorských odpovedí pramení z chýbajúceho kontextu. Dobrý prompt na debugging obsahuje päť vecí: jazyk a verzie, relevantný kód, celú chybovú hlášku, čo ste očakávali oproti tomu, čo sa stalo, a čo ste už skúsili.

Slabé:
Kód mi nefunguje, oprav ho.
[vložených 200 riadkov]
Silné:
Python 3.12, pandas 2.x. Táto funkcia by mala vrátiť priemernú hodnotu
objednávky na zákazníka, ale vyhodí KeyError: 'customer_id'.

Kód:
[vložte iba funkciu a 5-riadkovú vzorku dát]

Celý traceback:
[vložte]

Overil som, že CSV obsahuje stĺpec customer_id. Aké sú pravdepodobné
príčiny? Pred zobrazením opraveného kódu mi vysvetli samotnú opravu.

Zredukujte kód na najmenšiu možnú časť, ktorá stále reprodukuje problém. Často tým chybu odhalíte sami a udržíte pozornosť na podstatných riadkoch. Môžete si otvoriť prompt na debugging v chate a doplniť prázdne miesta.

Ako požiadať o nový kód

Napíšte miniatúrnu špecifikáciu. Čím presnejšie popíšete vstupy, výstupy a okrajové prípady, tým menej toho budete musieť neskôr opravovať.

Napíš funkciu v TypeScript: slugify(title: string): string.
- Malé písmená, iba ASCII; nahraď bežné znaky s diakritikou
  (napríklad é sa zmení na e).
- Nahraď akýkoľvek sled nealfanumerických znakov jednou pomlčkou.
- Osekaj pomlčky z oboch koncov; maximálna dĺžka 60, nikdy neodstrihni
  slovo v strede.
- Žiadne externé knižnice.
Potom napíš 8 jednotkových testov vo Vitest vrátane prázdneho reťazca
a vstupu, ktorý obsahuje emoji.

Požiadajte o testy spolu s kódom. Ak si testy vygenerované AI odporujú s jej kódom, našli ste problém skôr, než sa dostal do produkcie.

Jasne uveďte, čo nechcete: „žiadne nové závislosti“, „ponechaj existujúcu signatúru funkcie“, „iba štandardná knižnica“, „nemeň nič mimo tejto funkcie“. Bez obmedzení má AI tendenciu prepísať viac, než ste chceli.

Pred nasadením všetko overte

Kód vygenerovaný umelou inteligenciou môže vyzerať čisto, no napriek tomu môže byť nesprávny. Zaveďte si do rutiny tieto kontroly:

  1. Spustite ho. Nikdy nevkladajte kód do projektu bez toho, aby ste ho nespustili spolu s testami.
  2. Overte, či každá funkcia a možnosť naozaj existuje. AI si občas vymýšľa metódy, parametre alebo konfiguračné kľúče, prípadne používa tie zo starších verzií. Vyhľadajte si ich v oficiálnej dokumentácii pre verziu, ktorú skutočne používate.
  3. Pred inštaláciou skontrolujte názov každého balíčka. Bezpečnostní experti zaznamenali prípady, keď AI asistenti odporúčali neexistujúce balíčky a útočníci takéto názvy zaregistrovali so škodlivým kódom (útok známy ako „slopsquatting“). Pred inštaláciou si v oficiálnom registri overte, či ide o skutočný a udržiavaný balíček.
  4. Skontrolujte bezpečnosť. Hľadajte SQL dotazy skladané spájaním reťazcov, chýbajúcu validáciu vstupov, vypnuté kontroly certifikátov, tajné kľúče priamo v kóde a príliš široké oprávnenia. Spýtajte sa AI priamo: „Skontroluj tento kód z hľadiska bezpečnosti s predpokladom, že každý vstup je škodlivý.“
  5. Čítajte ho, kým mu neporozumiete. Ak neviete vysvetliť, čo daný blok robí, opýtajte sa, alebo kód nemergujte. Vy budete tí, ktorí ho budú udržiavať.

Tajné kľúče a súkromný kód do chatu nepatria

Do žiadneho AI chatu nikdy nevkladajte API kľúče, heslá, tokeny, privátne kľúče ani prihlasovacie reťazce k databázam. Nahraďte ich zástupnými symbolmi ako YOUR_API_KEY. Ak nechtiac odhalíte skutočné tajomstvo mimo vlastných systémov, okamžite ho zneplatnite a vygenerujte nové.

Ak píšete kód pre zamestnávateľa alebo klienta, pred vložením do externej AI služby si overte ich interné pravidlá. Mnoho firiem povoľuje pre vlastný kód iba schválené nástroje. Ak máte pochybnosti, zredukujte problém na všeobecný príklad, ktorý o projekte nič neprezrádza. Náš sprievodca súkromím a bezpečnosťou pri AI sa tomu venuje podrobnejšie.

Užitočné prompty pre vývojárov

Vysvetli tento kód vývojárovi, ktorý pozná [jazyk], ale nepozná túto
knižnicu. Postupuj blok po bloku a potom vypíš všetko, čo vyzerá
rizikovo alebo zastarane.
[vložte kód]
Urob code review tohto diffu ako senior engineer. Rozdeľ komentáre na chyby,
bezpečnosť, výkon a čitateľnosť. Buď konkrétny a cituj riadky, ktoré
máš na mysli.
[vložte diff]
Napíš regulárny výraz, ktorý zodpovedá: [popis]. Vysvetli každú časť
a uveď 5 reťazcov, ktoré by mali prejsť, a 5, ktoré by prejsť nemali.
Dobre ovládam Python a učím sa Rust. Ukáž mi, ako vyriešiť [úloha] v Ruste,
a vysvetli ownership a borrowing tak, ako keby som ich nikdy nevidel.

Ďalšie nájdete v zbierke promptov na kódovanie. Na rýchle jednorazové úlohy poslúži nástroj asistent na kód, ktorý z popisu alebo útržku vytvorí okomentovaný kód, a vstavaný programátorský asistent udrží vývojársky zameraný tón počas celej konverzácie.

Časté chyby

  • Vkladanie celého projektu. Dlhé texty zahltia to podstatné a môžu presiahnuť kapacitu, ktorú AI zvládne spracovať naraz. Posielajte iba relevantné súbory alebo funkcie.
  • Prijatie „opravy“, ktorá iba zakryje príznak. Obalenie celého kódu do bloku try/except odstráni chybovú hlášku, nie samotnú chybu. Pýtajte sa, prečo k chybe dochádza.
  • Točenie sa v kruhu. Ak dva alebo tri pokusy zlyhajú, zastavte sa a zmeňte prístup: doplňte kontext, zvoľte menší príklad alebo začnite nový chat s jasným zhrnutím problému.
  • Neuvedenie verzií. Rozhrania frameworkov sa medzi hlavnými verziami menia, preto vždy uveďte, ktorú používate.
  • Ignorovanie licencií. Ak AI vygeneruje rozpoznateľný kus cudzieho kódu, pred jeho použitím si overte licenciu.

Pozrite si aj to, ako ChatG využívajú vývojári a všeobecného sprievodcu písaním promptov.

Pracovný postup, vďaka ktorému máte všetko pod kontrolou

  1. Najprv popíšte cieľ bez kódu. Skôr než začnete písať kód, požiadajte o dva alebo tri možné prístupy a ich výhody a nevýhody.
  2. Vyberte si jeden prístup a požiadajte o malý prvý krok. Jednu funkciu alebo jeden súbor overíte oveľa jednoduchšie než celú novú funkciu.
  3. Kód spustite a dajte spätnú väzbu. Vložte reálny výstup alebo chybu, nie iba vetu „nefunguje to“.
  4. Požiadajte o testy a potom o review. Otázka „Aké okrajové prípady tu chýbajú?“ často odhalí skrytú chybu.
  5. Commit správu napíšte sami. Ak neviete zhrnúť, čo a prečo sa zmenilo, zmene ešte nerozumiete dostatočne dobre.

Časté otázky

Môže AI nahradiť učenie sa programovať?

Nie. Iba zrýchľuje prácu ľuďom, ktorí vedia kód čítať a posúdiť. Ak nedokážete rozoznať, či je odpoveď správna, nemôžete ju bezpečne použiť. Využívajte AI na rýchlejšie učenie: pýtajte sa prečo, nielen čo.

Aké programovacie jazyky zvláda?

AI chat si vo všeobecnosti veľmi dobre poradí s rozšírenými jazykmi, ako sú Python, JavaScript, TypeScript, Java, C#, C++, Go, PHP, SQL a shell skripty, pri menej bežných jazykoch je menej spoľahlivý. Kvalita klesá aj pri najnovších knižniciach a verziách.

Môže ChatG spustiť môj kód alebo vidieť môj repozitár?

Nie. ChatG funguje ako chat: vidí iba to, čo doň vložíte, a kód nespúšťa. Všetko spúšťajte a testujte vo vlastnom prostredí.

Je bezpečné používať kód z AI na komerčné účely?

Pracujte s ním ako s kódom z akéhokoľvek externého zdroja: skontrolujte ho, otestujte, overte licencie závislostí aj akéhokoľvek kódu, ktorý vyzerá ako skopírovaný, a riaďte sa internými pravidlami zamestnávateľa. Toto sú všeobecné informácie, nie právne poradenstvo.

Sme pripravení, keď vy

Otvorte čet a položte svoju prvú otázku. Je to zadarmo a nemusíte nič inštalovať.

Spustiť čet