Jak bezpečně a efektivně programovat s AI

Zadávejte úkoly jako kolegovi, ale kód kontrolujte jako přísný reviewer. Prompty pro ladění, nový kód, testy i revize a klíčové bezpečnostní zásady.

6 min čteníAktualizováno

Glass blocks connected by glowing lines with small gears

AI chat je při programování opravdu užitečný: vysvětlí neznámý kód, najde příčinu chyby, napíše boilerplate kód, navrhne testy a pomůže vám naučit se nový jazyk nebo knihovnu. Zároveň se ale často a sebevědomě plete – ke každé odpovědi byste proto měli přistupovat jako k pull requestu od rychlého, ale nepozorného kolegy. Tento průvodce vám ukáže, jak se správně ptát a jak výstupy ověřovat.

V čem AI chat při kódování exceluje

  • Vysvětlování kódu: „projdi se mnou tuto funkci řádek po řádku“.
  • Debugging: přečte chybovou hlášku i stack trace a navrhne pravděpodobné příčiny.
  • Malé, jasně definované funkce: parsování dat, validace vstupů, transformace dat.
  • Boilerplate: konfigurační soubory, parsování argumentů příkazové řádky, základní handlery pro API.
  • Testy: návrhy unit testů včetně okrajových případů (edge cases), na které jste zapomněli.
  • Regex, SQL a jednořádkové shell skripty, včetně vysvětlení jednotlivých částí.
  • Učení: „Umím v Pythonu; ukaž mi, jak by to vypadalo v Go, a vysvětli rozdíly“.
  • Code review: odhalení problémů s čitelností, chybějícího ošetření chyb a zjevných bezpečnostních rizik.

Slabší je naopak u velkých architektonických rozhodnutí závislých na celé vaší kódové bázi, u zbrusu nových verzí knihoven a u všeho, co nevidí. V chatu jako ChatG vidí AI pouze to, co do něj sami vložíte. Nemůže otevírat vaše soubory ani spouštět kód.

Jak se ptát na opravu chyb (debugging)

Většina špatných odpovědí pramení z chybějícího kontextu. Dobrý prompt pro debugging obsahuje pět věcí: jazyk a jeho verzi, relevantní kód, celou chybovou hlášku, očekávané chování oproti skutečnému a co jste již zkusili.

Slabé:
Můj kód nefunguje, oprav ho.
[vloženo 200 řádků]
Silné:
Python 3.12, pandas 2.x. Tato funkce má vracet průměrnou hodnotu
objednávky na zákazníka, ale hází KeyError: 'customer_id'.

Kód:
[vložte pouze samotnou funkci a ukázku 5 řádků dat]

Celý traceback:
[vložte traceback]

Ověřil jsem, že CSV sloupec customer_id obsahuje. Jaké jsou pravděpodobné
příčiny? Před zobrazením opraveného kódu nejprve vysvětli řešení.

Zkraťte kód na nejmenší možný úryvek, na kterém se problém stále projevuje. Často tak chybu odhalíte sami a udržíte pozornost na důležitých řádcích. Můžete si také otevřít debugging prompt přímo v chatu a jen doplnit podrobnosti.

Jak žádat o nový kód

Napište minispecifikaci. Čím přesněji popíšete vstupy, výstupy a hraniční případy, tím méně práce budete mít s následnými opravami.

Napiš TypeScript funkci slugify(title: string): string.
- Malá písmena, pouze ASCII; převeď běžné znaky s diakritikou
  (například é na e).
- Nahraď jakoukoli sekvenci nealfanumerických znaků jednou pomlčkou.
- Ořež pomlčky na začátku a na konci; maximální délka 60 znaků,
  nikdy neořezávej uprostřed slova.
- Bez externích knihoven.
Poté napiš 8 unit testů pomocí Vitest, včetně prázdného řetězce
a vstupu obsahujícího emoji.

Žádejte o testy rovnou spolu s kódem. Pokud si kód a vygenerované testy vzájemně odporují, našli jste chybu dříve, než se dostala do produkce.

Uveďte i to, co nechcete: „žádné nové závislosti“, „zachovej stávající signaturu funkce“, „pouze standardní knihovna“, „neměň nic mimo tuto funkci“. Bez vymezení mantinelů má AI tendenci přepisovat víc, než jste chtěli.

Před nasazením vše důkladně ověřte

Kód vygenerovaný umělou inteligencí může vypadat čistě, a přesto být chybný. Zařaďte tyto kontroly do své rutiny:

  1. Spusťte ho. Nikdy nevkládejte kód do projektu bez jeho spuštění a otestování.
  2. Zkontrolujte, zda všechny funkce a parametry existují. AI si občas vymýšlí metody, parametry nebo konfigurační klíče, případně používá ty ze starších verzí. Ověřte si je v oficiální dokumentaci verze, kterou reálně používáte.
  3. Před instalací zkontrolujte každý balíček. Bezpečnostní experti popsali případy, kdy AI asistenti doporučovali neexistující balíčky – a útočníci mohou tyto názvy zaregistrovat a naplnit škodlivým kódem (útok známý jako „slopsquatting“). Než balíček nainstalujete, ověřte si v oficiálním registru, že jde o skutečný a udržovaný projekt.
  4. Zkontrolujte bezpečnost. Hledejte SQL dotazy skládané spojováním řetězců, chybějící validaci vstupů, vypnuté kontroly certifikátů, hesla v kódu nebo příliš široká oprávnění. Zeptejte se AI přímo: „Zkontroluj v tomto kódu bezpečnostní rizika s předpokladem, že každý vstup je nepřátelský.“
  5. Čtěte kód, dokud mu neporozumíte. Pokud nedokážete vysvětlit, co daný blok dělá, zeptejte se, nebo kód nemergujte. Vy jste ti, kdo ho budou spravovat.

Chraňte tajemství a privátní kód

Do žádného AI chatu nikdy nevkládejte API klíče, hesla, tokeny, privátní klíče ani connection stringy. Nahraďte je zástupnými symboly, například YOUR_API_KEY. Pokud reálné tajemství omylem odešlete mimo své vlastní systémy, okamžitě ho zneplatněte a vygenerujte nové (rotate).

Pokud píšete kód pro zaměstnavatele nebo klienta, před vložením kódu do jakékoli externí AI služby si ověřte jejich pravidla. Mnoho firem povoluje pro proprietární kód pouze schválené nástroje. V případě pochybností zredukujte problém na obecný příklad, který o samotném projektu nic neprozradí. Více podrobností najdete v našem průvodci soukromím a bezpečností při práci s AI.

Užitečné prompty pro vývojáře

Vysvětli tento kód vývojáři, který zná [jazyk], ale nezná tuto knihovnu.
Postupuj blok po bloku a na závěr vypiš vše, co působí riskantně nebo
zastarale.
[vložte kód]
Zreviduj tento diff jako seniorní vývojář. Připomínky rozděl na chyby,
bezpečnost, výkon a čitelnost. Buď konkrétní a cituj přesné řádky.
[vložte diff]
Napiš regulární výraz, který odpovídá [popis]. Vysvětli každou jeho část
a uveď 5 řetězců, které mají projít, a 5, které projít nemají.
Velmi dobře ovládám Python a učím se Rust. Ukaž mi, jak v Rustu vyřešit
[úkol], a vysvětli principy ownership a borrowing tak, jako bych je
viděl poprvé.

Další inspiraci najdete ve sbírce promptů pro programování. Pro rychlé jednorázové úkoly můžete využít nástroj asistent pro kódování, který z popisu či úryvku vytvoří okomentovaný kód, nebo vestavěného asistenta pro programování, který udrží vývojářský kontext po celou dobu konverzace.

Časté chyby

  • Vkládání celého projektu. Dlouhé texty zahltí důležité detaily a mohou překročit kapacitu kontextu AI. Posílejte pouze relevantní soubory či funkce.
  • Přijetí „opravy“, která pouze skryje symptomy. Obalení všeho do bloku try/except odstraní chybovou hlášku, ale ne samotnou chybu. Ptejte se, proč k chybě dochází.
  • Točení se v kruhu. Pokud dva nebo tři pokusy selžou, zastavte se a změňte přístup: dodejte více kontextu, zmenšete příklad nebo otevřete nový chat s jasným shrnutím problému.
  • Neuvedení verzí. Rozhraní frameworků se mezi hlavními verzemi mění – vždy zmiňte, jakou verzi používáte.
  • Ignorování licencí. Pokud AI vygeneruje rozpoznatelný kus cizího kódu, před použitím si zkontrolujte jeho licenci.

Přečtěte si také, jak ChatG používají vývojáři, a projděte si obecného průvodce psaním promptů.

Pracovní postup, se kterým máte kód pod kontrolou

  1. Nejprve popište cíl bez kódu. Požádejte o dva až tři možné přístupy a jejich výhody a nevýhody, než začnete psát kód.
  2. Vyberte jeden přístup a začněte malým krokem. Jedna funkce nebo jeden soubor naráz se kontroluje mnohem snáze než celá feature.
  3. Spusťte kód a předejte zpětnou vazbu. Vložte reálný výstup nebo chybovou hlášku, ne pouhé „nefunguje to“.
  4. Požádejte o testy a následně o review. Otázka „Jaké hraniční případy zde chybí?“ často odhalí další skrytou chybu.
  5. Commit message napište sami. Pokud nedokážete shrnout, co a proč se změnilo, změně ještě sami dostatečně nerozumíte.

Často kladené otázky

Může AI nahradit výuku programování?

Ne. Zrychluje práci lidem, kteří už kódu rozumí a dokážou ho posoudit. Pokud nedokážete poznat, zda je odpověď správná, nemůžete ji bezpečně použít. Využijte AI k rychlejšímu učení: ptejte se nejen „jak“, ale hlavně „proč“.

Jaké programovací jazyky AI zvládá?

AI chat si obecně velmi dobře poradí s rozšířenými jazyky, jako jsou Python, JavaScript, TypeScript, Java, C#, C++, Go, PHP, SQL či shell scripty. U méně běžných jazyků bývá méně spolehlivý. Kvalita klesá také u nejnovějších verzí a nově vydaných knihoven.

Může ChatG spustit můj kód nebo nahlížet do repozitáře?

Ne. ChatG je chatovací rozhraní: vidí pouze to, co do něj sami vložíte, a kód nespouští. Vše spouštějte a testujte ve svém vlastním prostředí.

Lze kód vygenerovaný pomocí AI bezpečně použít ke komerčním účelům?

Přistupujte k němu jako ke kódu z jakéhokoli externího zdroje: zrevidujte ho, otestujte, zkontrolujte licence závislostí i kódu, který působí převzatě, a dodržujte interní pravidla své firmy. Toto je obecná informace, nikoli právní poradenství.

Připraveno, kdykoli budete chtít

Otevřete chat a položte svou první otázku. Je to zdarma a nemusíte nic instalovat.

Začít chatovat