Kód od AI může vypadat přesvědčivě a přitom dělat něco jiného, než jste zadali. Před použitím si proto napište několik vstupů a výsledků, které od něj čekáte, uložte první verzi a teprve pak ji spusťte. Ukážeme to na malé offline kalkulačce rozdělení účtu. Tentokrát kontrola chybu neodhalila; i to je poctivý výsledek, nikoli důvod nějakou dodatečně vymyslet.

Nejdřív určete, co má program dělat
Zadání pro model bylo konkrétní: vytvořit jediný offline soubor index.html, který rozdělí částku v korunách mezi 1 až 100 lidí. Částku zadáváte s desetinnou čárkou, nejvýše se dvěma desetinnými místy. Výpočet musí probíhat v celých haléřích; když nejde účet rozdělit rovnoměrně, přebytečné haléře dostanou první osoby v seznamu. Chybné zadání musí vyvolat srozumitelnou zprávu a smazat předchozí výsledek. Bez knihoven, síťových volání a ukládání dat.
Ještě před vytvořením kódu jsme uložili přesné zadání a očekávané výsledky do pre-registered.json. Mezi příklady patří 100,01 Kč / 3 → 33,34 + 33,34 + 33,33 Kč a 0,01 Kč / 3 → 0,01 + 0,00 + 0,00 Kč. Taková kontrola odděluje zadání od první odpovědi AI: neměníte pravidla až podle toho, co vám program zrovna vypíše.
První verzi uložte, než začnete opravovat
První HTML soubor vznikl pomocí modelu gpt-6-sol v Hermes Agentu. Nedotčená kopie first-pass.html se shoduje s testovaným index.html. Nejde o porovnání různých modelů ani o test GitHub Copilotu. Když si schováte původní výstup, uvidíte, zda oprava skutečně změnila chybnou část, nebo jen přepsala test.
Podstatná část výpočtu pracuje s haléři:
const base = Math.floor(total / count);
const remainder = total % count;
const shares = Array.from({length: count}, (_, index) => {
const cents = base + (index < remainder ? 1 : 0);
return `${Math.floor(cents / 100)},${String(cents % 100).padStart(2, '0')}`;
});Čitelný výpočet ještě není důkaz správnosti. Ověřte i převod vstupu na haléře, hranice povolených hodnot a chování formuláře při chybě.
Co ukázaly předem určené testy?
Spustili jsme node test.mjs: 22 z 22 automatických kontrol prošlo. Zahrnují 16 předem zapsaných vstupů, pět kontrol součtu podílů a jednu omezenou kontrolu externích zdrojů v souboru. V prohlížeči jsme navíc ověřili dva stavy: správné rozdělení a odstranění starého výsledku po neplatném vstupu. Záznamy jsou součástí stažitelného balíčku.
| Vstup | Očekávaný i skutečný výsledek | Shoda |
|---|---|---|
120,00 / 3 | 40,00 / 40,00 / 40,00 | Ano |
100,01 / 3 | 33,34 / 33,34 / 33,33 | Ano |
0,01 / 3 | 0,01 / 0,00 / 0,00 | Ano |
1,001 / 3 | Chyba, bez podílů | Ano |
10,00 / 0 | Chyba, bez podílů | Ano |

Teprve test v prohlížeči prověřil i vazbu mezi tlačítkem, vstupními poli a zobrazením výsledku. Po zadání 1,001 jako neplatné částky se předchozí podíly ztratily a objevila se chyba:

Jak si pokus zopakovat
- Stáhněte si zdroják, zadání, testy a výsledky (ZIP). Balíček obsahuje i původní verzi
first-pass.html; neobsahuje žádné účty ani přístupové údaje. - Otevřete
index.htmllokálně v prohlížeči a zkuste100,01a3. Potom místo částky napište1,001a zkontrolujte, že zmizí předchozí podíly. - Máte-li Node.js, otevřete terminál v rozbalené složce a spusťte
node test.mjs. Skript znovu vytvořítest-results.json; porovnejte počet průchodů i jednotlivé případy.
Cizí kód obecně nespouštějte s vlastními hesly nebo v důležité pracovní složce. Tento příklad je lokální, bez závislostí a bez síťového požadavku podle kontroly zdrojáku; jednoduchá textová kontrola ale není bezpečnostní audit ani záruka pro jiné projekty. Před použitím vlastního AI kódu zkontrolujte importy, síťové požadavky, přístupy k souborům a případné nové balíčky.
Co když test skutečně selže?
Nejdřív si uložte vstup, očekávaný a skutečný výsledek. Přidejte právě tento případ do testů a ověřte, že na první verzi selže. Pak opravte zdrojový kód, nikoli očekávání jen proto, aby se rozsvítila zelená. Znovu spusťte nový test i všechny původní případy a v prohlížeči prověřte stejný scénář. V našem konkrétním pokusu žádný test neselhal, a proto zde nemáme opravu ani porovnání „před a po“.
Stejný princip doporučuje i dokumentace GitHubu ke kontrole kódu od AI: ověřovat funkčnost, soulad se zadáním, závislosti a možná bezpečnostní rizika. Jedna malá úspěšná ukázka neprokazuje bezchybnost všech vstupů ani připravenost k nasazení. U aplikace, která pracuje s platbami, účty nebo osobními daty, je potřeba důkladnější kontrola a odpovídající odborník.
Pokud teprve vybíráte pomocníka pro psaní kódu, máme zvlášť přehled AI nástrojů pro programování. Ten řeší výběr nástroje; tady šlo o ověření jednoho jeho konkrétního výstupu.

