Požádal jsem tři modely umělé inteligence, aby opravily stejný poškozený kód. Jeden z nich předčil ostatní.
Jedním z nejužitečnějších aspektů používání AI pro programování je ladění chyb. Před érou AI jsem musel číst kód řádek po řádku, používat ladicí programy a vkládat tiskové příkazy, abych našel chyby. Pokud všechno selhalo, byl tu Stack Overflow a další weby pro začátečníky, kde lidé váš kód rozebírali. Ale teď? Stačí sdílet úryvek kódu s AI, poskytnout nějaký kontext a požádat ji o opravu kódu, a máte hotovo.
To mi dalo nápad otestovat, jak daleko mohou tyto AI modely zajít, pokud jde o kreativní myšlení při opravování vašeho kódu. Tak jsem se rozhodl udělat malý experiment s ChatGPT, Gemini a Claudem, abych zjistil, který model dokáže můj kód opravit nejlépe.
Pochopení problému a vytváření promptu
Nechávám to otevřené pro větší zábavu
Minule jsme zkoušeli program na kontrolu hesel pro stejné tři modely. Pro tento souboj AI jsem se rozhodl použít jednoduchý Python skript pro organizaci souborů. Zde je skript, který jsem testoval:
import os
source_dir = "Downloads"
dest_dir = "Images"
def clean_my_downloads():
all_files = os.listdir(source_dir)
for f in all_files
if ".jpg" in f or ".png" in f:
old_path = source_dir + "/" + f
new_path = dest_dir + "/" + f shutil.move(old_path, new_path)
print("Moved file: " + f)
clean_my_downloads()
Dobře, než začneme testovat modely, dovolte mi vysvětlit chyby a pasti, které jsem zde připravil.
Syntaktické chyby (Snadné)
- Chybějící dvojtečka: Na konci řádku
for f in all_filesnení žádná dvojtečka ':'.
- Chybějící dvojtečka: Na konci řádku
- Chybějící import: Kód používá
shutil.move(), aleimport shutilchybí na začátku. - Všechny tři modely by tyto problémy měly snadno zachytit a opravit. Pokud jeden zde selže, je to okamžitý neúspěch.
Pád logiky (Střední)
- Chybějící složka: Kód předpokládá, že složka Images již existuje. Pokud ne,
shutil.move()selže.
- Chybějící složka: Kód předpokládá, že složka Images již existuje. Pokud ne,
- Dobrý model přidá
os.makedirs(dest_dir, exist_ok=True), aby zajistil, že složka bude vytvořena, pokud chybí. Past napříč platformami (Středně těžké)
- Neuspořádané cesty: Kód používá spojování řetězců (+ "/" +) k vytváření cest k souborům. To je špatná praxe a může to způsobit problémy na Windows vs. Mac.
- Lepší model přepíše toto s použitím
os.path.join(source_dir, f)nebo, ještě lépe, aktualizuje kód tak, aby používal moderní knihovnupathlibv Pythonu. Chyba rozšíření (Těžké)
- Naivní porovnávání: Kód používá
if ".jpg" in f. To je nebezpečné, protože soubor s názvem "my_photo.jpg.zip" bude přesunut, i když to není obrázek! Také ignoruje velká písmena jako ".JPG".
- Naivní porovnávání: Kód používá
- Chytrý model to změní na
f.lower().endswith(('.jpg', '.png')). Past ztráty dat (Konečný test)
- Tiché přepsání: Pokud již existuje soubor pojmenovaný screenshot.png ve složce Obrázky a skript přesune nový screenshot.png ze složky Stahování,
shutil.move()okamžitě přepíše ten starý. Uživatel tak navždy ztratí svůj původní obrázek.
- Tiché přepsání: Pokud již existuje soubor pojmenovaný screenshot.png ve složce Obrázky a skript přesune nový screenshot.png ze složky Stahování,
- To je to, co korunuje našeho vítěze. Nejlepší AI si uvědomí, že uživatel ji požádal, aby byla neprůstřelná, a přidá kontrolu, zda soubor již existuje. Skutečný vítěz přidá logiku pro přejmenování duplicitního souboru (např. screenshot_(1).png), aby nebyla ztracena žádná data.
S tímto vyřízeným se pojďme nyní zaměřit na zadání. U zadání jsem ho také ponechal trochu vágní, s jemným nasměrováním k problému a cíli. Tímto způsobem mohu otestovat kreativitu každého modelu, aniž bych je přímo instruoval. Zde je zadání, které jsem zvolil:
I'm a beginner trying to write a Python script to clean up my Downloads folder by moving all my images into an 'Images' folder. The code won't even run, and I keep getting errors. Even if I get it to run, I'm worried I might have missed something that could mess up my files. Can you fix my code, explain what I did wrong in simple terms, and make it bulletproof?Všimněte si, že jsem mu jen nepřikázal opravit můj kód. Také jsem ho požádal, aby ho udělal neprůstřelným. To ponechává modelu prostor pro implementaci různých technik, aby to bylo ještě lepší.
Bitva začíná
Testování každého modelu
Pro srovnání budu používat modely s podobným výkonem od všech tří AI. Také si všimněte, že všechny jsou nejlepší volně dostupné modely, ne součást jejich placených verzí.
ChatGPT
Začínáme s ChatGPT. Protože jsem si nemohl vybrat model sám, musel jsem spoléhat na ten, který vybral systém. Zvolil GPT 5.5. Opravený kód, který poskytl, byl skvělý. Opravil syntaktické chyby a použil os.makedirs(), aby se předešlo selhání logiky.
Použil os.path.join() pro kompatibilitu s různými operačními systémy. Tady také udělal něco geniálního. Použil os.path.expanduser("~/Downloads"). V původním kódu by source_dir="Downloads" fungovalo pouze tehdy, pokud by uživatel spustil skript ze své domovské složky. ChatGPT pochopil, že začátečník by se tím mohl zmást, a dynamicky našel skutečnou cestu ke složce Downloads na jejich pevném disku. To je obrovský plusový bod.
Také opravil chybu s příponou tím, že ji upgradoval na f.lower().endswith(...), takže zachytí velká písmena .JPG a náhodou nepřesune soubor s názvem „my_photo.jpg.zip“. Také proaktivně přidal .jpeg, .gif a .webp.
Co se týče pasti na ztrátu dat, ta ji úspěšně chytila. Ale jediná věc, která v jejím kódu chyběla, byla, že místo přejmenování souboru, aby se zabránilo ztrátě dat, ho prostě úplně přeskočila, což není zamýšlené řešení. Celkově si však vedla docela dobře.
Vysvětlení bylo také špičkové. Vysvětlilo každý řádek kódu, který měl problém, poskytlo několik tipů pro začátečníky a dokonce navrhlo budoucí vylepšenou verzi. Celou odpověď můžete vidět zde.
Blíženci
Dále je tu Gemini. Použil jsem Google AI Studio a zvolil verzi 3.1 Pro Preview. Pokud ChatGPT nastavil vysokou laťku, Gemini ji právě přehodil. Se svým řešením šel úplně do moderního Python inženýra.
Opravilo to chyby syntaxe a selhání logiky. Pro multiplatformní pasti zvolil Gemini jinou cestu. Místo použití modulu os v Pythonu použil pathlib. Je to moderní, pythonický způsob, jak pracovat se soubory. Stejně jako ChatGPT také dynamicky našel domovský adresář. Chybu s příponou zpracoval pomocí stejné knihovny.
Pokud jde o past na ztrátu dat, Gemini zde také předčil ChatGPT. Gemini implementoval bezchybnou smyčku while, která kontroluje, zda název existuje, a pokud ano, dynamicky vloží číslo do názvu souboru (např. photo_1.jpg) před jeho přesunutím. Vaše data jsou uložena a složka je vyčištěná.
Kromě toho Gemini používal try/except pro zpracování chyb, což je nejlepší postup v programování. Celkově tyto faktory zvyšují skóre Gemini nad ChatGPT.
Pokud jde o sekci vysvětlení, řekl bych, že Gemini zaostává za ChatGPT. Nevysvětlil vše podrobně, což je pro začátečníky potřeba. Kompletní kód a vysvětlení můžete vidět zde (vyžaduje přihlášení pomocí vašeho účtu Google).
Claude
Naším posledním soutěžícím je Claude. Pro model jsem zvolil Sonnet 4.6.
Stejně jako ty dva ostatní AI, dostal přesně syntaktickou chybu a logický pád. Jedna věc, kterou Claude přidal navíc, bylo nejdříve zkontrolovat, zda složka Stažené soubory skutečně existuje. Pokud uživatel spustil tento program z nesprávné složky, místo pádu program pěkně vypíše chybu.
Pokud jde o past napříč platformami, na rozdíl od ChatGPT a Gemini, Claude nedokázal změnit relativní cestu na absolutní cestu. Nechal source_dir="Downloads". To znamená, že pokud začátečník uloží tento skript na svou plochu a dvojklikem jej spustí, selže, protože hledá složku Downloads na ploše. Jak ChatGPT, tak Gemini to předvídaly a dynamicky namapovaly do domovského adresáře uživatele.
Claude také dobře obstál v pasti s příponou tím, že použil os.path.splitext()[1].lower(). Proaktivně přidal .heic (výchozí formát fotografií Apple).
Stejně jako Gemini, Claude zvládl past na duplicitní soubory na jedničku. Napsal while smyčku pro automatické přejmenování souborů (photo_1.jpg), takže nic nebylo smazáno a složka se skutečně vyčistila. Poslední věc, kterou Claude přidal, byla proměnná moved_count pro sledování toho, kolik obrázků bylo přesunuto, aby vám poskytla pěkné shrnutí.
Celý kód je dobře okomentovaný, uvádí, kde byla provedena každá oprava. Vygeneroval také souhrnnou tabulku všech oprav. Ale promarněná příležitost zabezpečit meziplatformní rozdíl sníží jeho hodnocení. Celou Claudeovu odpověď najdete zde.
Konečný verdikt
Kdo bere korunu?
Na rozdíl od minulého kola bylo tentokrát těžší vybrat. ChatGPT prošel většinou testů, ale jeden pokazil. Gemini vynikl ve všech testech a u některých dokonce překročil očekávání. Claude bojoval dobře, ale přehlédl jednu menší chybu. Takže po veškerém hodnocení musím oznámit, že vítězem této soutěže je Gemini. ChatGPT byl skvělý vysvětlovatel a Claude měl nejlepší dokumentaci kódu.
AI usnadňuje ladění
Ačkoliv hlavním cílem zde bylo ukázat schopnosti každého AI modelu v myšlení a opravném kódu, je bezpečné říci, že všechny odváděly skvělou práci. Takže ať už si vyberete kterýkoli, je to mnohem lepší než ladit kód sami staromódním způsobem.









