Jak otestuji schopnost kódování chatbota AI - a vy můžete také
Tento článek poskytuje podrobné výzvy a testy, které můžete opakovat na svém oblíbeném chatbotu AI, abyste zjistili, zda vám může pomoci spolehlivě programovat.
Od té doby, co se ChatGPT a generativní umělá inteligence (AI) dostaly do povědomí veřejnosti v roce 2022, zkoumal jsem, jak dobře mohou chatboti AI psát kód. Zpočátku byla tato technologie novinkou, podobně jako povzbuzování štěněte k provedení nového triku.
Ale od té doby, co jsem viděl, jak mohou být AI chatboti efektivními nástroji pro produktivitu a programovacími partnery, podrobuji nástroje hloubkovějšímu testování. Postupem času jsem sestavil sadu čtyř reálných testů, které jsme použili k hodnocení výkonu hlavních modelů velkých jazyků AI (LLM). Zatím jsem otestoval 10 LLM. Na komplexní výsledky všemi deseti se můžete podívat v tomto souhrnném článku:
- Nejlepší AI pro kódování v roce 2024 (a co nepoužívat)
Tento článek je zamýšlen jako živý dokument, kde můžete vidět mé testy a dokonce je zkopírovat a spustit si vlastní. Budu pokračovat ve své sérii jednotlivých testů spolu s články, které popisují jejich výkon. Nyní se však můžete ponořit a hrát si doma (nebo kdekoli, kde máte dobré připojení k internetu).
Pokud aktualizuji nebo přidám testy, aktualizuji také tento článek, takže se sem klidně vraťte po čase.
Jak jsem vyvinul svou testovací sadu kódování AI
Je rozdíl mezi hodnocením výkonu, abyste zjistili, zda AI splňuje libovolné specifikace nebo požadavky, a testováním technologie, abyste zjistili, zda vám může pomoci v každodenních programovacích úlohách.
Zpočátku jsem zkusil to první. Spustil jsem výzvu ke generování klasického výstupu „ahoj, světe“, doplněný nějakými výpočty času a data. Tady je výzva:
Write a program using [language name] that outputs "Good morning," "Good afternoon," or "Good evening" based on what time it is here in Oregon, and then outputs ten lines containing the loop index (beginning with 1), a space, and then the words "Hello, world!".Chcete-li výzvu spustit, nahraďte [název jazyka] jazykem, který chcete testovat. Testoval jsem výzvu v ChatGPT se specifikací 22 programovacích jazyků. Na výsledky se můžete podívat zde:
Použil jsem ChatGPT k napsání stejné rutiny ve 12 špičkových programovacích jazycích. Zde je návod, jak se to povedlo
A více můžete vidět zde:
Použil jsem ChatGPT k napsání stejné rutiny v těchto deseti obskurních programovacích jazycích
Byl to zábavný test, zvlášť když jsem v něm prošel obskurnějšími jazyky a prostředími. Pokud chcete více zábavy, než na kterou má kdokoli právo, nahraďte [jazykový název] výrazem „Shakespeare“. A ano, existuje nový jazyk nazvaný SPL (Shakespeare Programming Language), kde se zdrojový kód objevuje jako Shakespearova hra. Nefunguje to tak dobře, ale teď už víte, co návrháři jazyků dělají, když chceme mít pořádnou párty.
Můžete vidět, jak jsem mohl jít do této králičí nory celé týdny. Důležitou otázkou však je, zda by umělá inteligence mohla pomoci s programovacími úkoly v reálném světě.
Použil jsem svou skutečnou každodenní programovací práci k podpoře testů. Například krátce poté, co se ChatGPT stal veřejným nástrojem, moje žena požádala o vlastní funkci WordPress, která by jí pomohla s pracovním projektem. Rozhodl jsem se zjistit, jestli to ChatGPT dokáže postavit. K mému šoku ano.
Jindy jsem nechal ChatGPT přepsat segment kódu, odladit chybu kódování, která mě mátla, a napsat kód pomocí skriptovacích nástrojů. To byly problémy, které jsem musel řešit v rámci skutečné práce.
Protože existuje tolik existujících programovacích jazyků, rozhodl jsem se nezbláznit se při výběru jazyků k testování. Místo toho jsem si vybral jazyky, které jsem používal pro práci, protože tento přístup by nám řekl více o tom, jak umělá inteligence fungovala jako pomocníci v reálném světě. Testy produktivity se provádějí v PHP, JavaScriptu a troše CSS a HTML.
Stejný přístup jsem použil pro programovací rámce. Vzhledem k tomu, že většinu své práce dělám ve WordPressu, je to rámec, který používám. Některé z testů pomáhají určit, jak dobře AI zná jedinečné aspekty WordPress API.
Nedávno jsem udělal nějaké skriptování pro Mac, takže jsem vytvořil test pomocí AppleScript a Chrome API. Pokud přidám další testy, zařadím je do tohoto článku.
Dále si promluvme o každém testu. Jsou čtyři.
Test 1: Psaní pluginu WordPress
To testuje, zda umělá inteligence dokáže napsat celý plugin WordPress, včetně kódu uživatelského rozhraní. Pokud AI chatbot projde tímto testem, může pomoci vytvořit základní kód jako asistent webových vývojářů. Původně jsem tento test zdokumentoval v článku „Požádal jsem ChatGPT, aby napsal plugin WordPress, který jsem potřeboval. Udělal to za méně než 5 minut“.
Potřeba v reálném světě: Moje žena provozuje web elektronického obchodu WordPress a spravuje rušnou skupinu na Facebooku pro své zákazníky. Každý měsíc používala web, který našla online, k náhodnému výběru seznamu jmen, ale extrahování seznamu bylo těžkopádné. Protože někteří z jejích účastníků měli nárok na více příspěvků a někteří účastníci měli mnoho příspěvků, chtěla, aby byla jména v seznamu rozložena.
Aby tuto situaci napravila, požádala mě, abych vytvořil plugin WordPress pro snazší přístup přímo z jejího panelu. Vývoj základního pluginu s nezbytným uživatelským rozhraním a logikou mohl trvat dny a můj plán byl nabitý. Tak jsem se obrátil na AI.
Poté, co jsem zjistil, že ChatGPT dokáže vytvořit skvělý malý plugin WordPress, který splňuje její potřeby (stále ho používá), rozhodl jsem se, že tento proces bude skvělým testem pro AI.
Testovací data: Použijte následující výzvu jako jeden požadavek:
Write a PHP 8 compatible WordPress plugin that provides a new admin menu and an admin interface with the following requirements:
Provide a text entry field where a list of lines can be pasted into it. A button, that when pressed, randomizes the lines in the list and presents the results in a second text entry field with no blank lines.
Make sure no two identical entries are next to each other (unless there's no other option). Be sure the number of lines submitted and the number of lines in the result are identical to each other.
Under the first field, display text stating "Line to randomize: " with the number of nonempty lines in the source field. Under the second field, display text stating "Lines that have been randomized: " with the number of non-empty lines in the destination field.Po dokončení pluginu použijte následující názvy jako testovací data (William Hernandez a Abigail Williams mají duplikáty):
Sophia Davis
Charlotte Smith
Madison Garcia
Isabella Davis
Abigail Williams
Mia Garcia
Isabella Jones
Alexander Gonzalez
Olivia Gonzalez
Emma Jackson
Ethan Jackson
Sophia Johnson
Abigail Williams
Liam Jackson
Noah Lopez
Olivia Jackson
Ava Martin
Benjamin Johnson
Alexander Jackson
Alexander Lopez
Charlotte Rodriguez
Olivia Rodriguez
Ethan Martin
Noah Thomas
Isabella Anderson
Abigail Williams
Michael Williams
William Hernandez
Abigail Miller
Emma Davis
Sophia Martinez
William HernandezCo hledat ve výsledcích: Očekávejte textový blok, který můžete vložit do nového souboru .php. Blok by měl obsahovat všechny příslušné informace o záhlaví a uživatelském rozhraní. Není potřeba, aby tento kód vyžadoval přidružený soubor JavaScript.
Jakmile je plugin nainstalován ve vaší instalaci WordPress, měli byste získat nabídku řídicího panelu a uživatelské rozhraní podobné tomuto:
Vložte názvy do prvního pole, klikněte na tlačítko randomize a vyhledejte výsledky ve druhém poli. Zajistěte, aby více položek pro Williama Hernandeze a Abigail Williams bylo distribuováno v seznamu.
Test 2: Přepsání funkce řetězce
Tento test hodnotí, jak AI chatbot aktualizuje funkci nástroje pro lepší funkčnost. Původně jsem tento test zdokumentoval jako "OK, takže ChatGPT právě odladil můj kód. Skutečně".
Potřeba v reálném světě: Měl jsem ověřovací postup, který měl zkontrolovat platnou peněžní částku. Chybová zpráva od uživatele však upozornila, že povoluje pouze celá čísla (tedy 5 a ne 5.02).
Spíše než trávit čas přepisováním kódu, které by mohlo trvat jednu až čtyři hodiny, jsem požádal AI, aby to udělala.
Testovací data: Použijte následující výzvu jako jeden požadavek:
Please rewrite the following code to change it from allowing only integers to allowing dollars and cents (in other words, a decimal point and up to two digits after the decimal point).
str = str.replace (/^0+/, "") || "0";
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;Co hledat ve výsledcích: Otestujte kód proti několika možným scénářům selhání. Zadejte kódu alfanumerickou hodnotu a zjistěte, zda selže.
Podívejte se, jak kód zpracovává předchozí nuly. Podívejte se, jak zpracovává vstupy, které mají více než dvě číslice pro centy. Podívejte se, jak kód zpracovává jednu číslici za desetinnou čárkou.
Podívejte se, zda zvládne pět nebo šest číslic nalevo od desetinné čárky.
Test 3: Nalezení nepříjemné chyby
Tento test vyžaduje důvěrnou znalost WordPress, protože zřejmá odpověď je špatná. Pokud chatbot s umělou inteligencí dokáže správně odpovědět na tento test, jeho znalostní báze je poměrně kompletní, a to i s frameworky, jako je WordPress. Původně jsem tento test zdokumentoval jako "OK, takže ChatGPT právě odladil můj kód. Skutečně".
Potřeba v reálném světě: Psal jsem nový kód pro produkt, který jsem následně prodal. Měl jsem funkci, která vzala dva parametry, a volající příkaz, který poslal dva parametry do mého kódu.
Problém byl v tom, že jsem stále dostával chybovou zprávu.
Nejvýraznější částí zprávy je, že v jednom bodě uvádí „1 prošlo“ a v jiném „očekáváno přesně 2“. Podíval jsem se na volající příkaz a definici funkce a na obou místech byly dva parametry. Tento problém mě na nějakou dobu vyvedl z míry, a tak jsem požádal ChatGPT o pomoc.
Ukázal jsem mu řádek kódu, který provedl volání, samotnou funkci a handler, malý kousek kódu, který odesílá volanou funkci z háčku v mém hlavním programu.
Testovací data: Použijte následující výzvu jako jeden požadavek:
I am using this function to process a WordPress filter:
$transaction_form_data = apply_filters( 'sd_update',
$transaction_form_data, $donation_id);
it's handled by
add_filter( 'sd_update', 'sd_aan_update', 10, 1 ) ;
and the function it calls is:
function sd_aan_update ( $donation_data, $donation_id ) {
// this processes the form data after
// the transaction returns from the gateway
if ( isset( $donation_data['ADD_A_NOTE'] ) ) {
update_post_meta( $donation_id,
'_dgx_donate_aan_note',
$donation_data [ 'ADD_A_NOTE']);
}
return $donation_data:
}
(!) ArgumentCountError: Too few arguments to function sd_aan_update(), 1 passed in /Users/david/Documents/Development/local-sites/sd/app/public/w-includes/class-wp-hook.php on line 310 and exactly 2 expected in /Users/david/Documents/Development/local-sites/sd/app/public/wp-content/plugins/ sd-add-a-note/sd-add-a-note.php on line 233Co hledat ve výsledcích: Zřejmá odpověď není správná. Ve skutečnosti funkce add_filter neměla správné parametry. V mém kódu funkce add_filter specifikovala hodnotu 1 pro čtvrtý parametr (což znamená, že funkce filtru obdrží pouze jeden parametr). Ve skutečnosti očekává dva parametry.
K vyřešení tohoto problému by AI měla doporučit změnu čtvrtého parametru funkce add_filter na 2, aby správně zaregistrovala funkci filtru se dvěma parametry.
Většina AI, které jsem testoval, má tendenci tento problém postrádat. Myslí si, že je třeba aktualizovat jiný parametr ve funkci volání. Jako taková je to triková otázka, která vyžaduje, aby AI věděla, jak funguje funkce add_filter v rámci WordPress.
Test 4: Psaní scénáře
Tento test žádá AI chatbota, aby programoval pomocí dvou poměrně specializovaných programovacích nástrojů, které většina uživatelů nezná. V podstatě testuje znalosti AI chatbota mimo velké jazyky. Původně jsem tento test zdokumentoval v „Google odhaluje Gemini Code Assist a jsem opatrně optimistický, že to pomůže programátorům“.
Potřeba v reálném světě: Chtěl jsem pro svůj Mac vytvořit automatizační rutinu, která by mi ušetřila spoustu kliknutí a stisknutí kláves. Používám nástroj s názvem Keyboard Maestro k provádění spousty automatizací na mém Macu (představte si to jako zkratky na steroidech). Keyboard Maestro je poměrně obskurní program napsaný osamělým programátorem v Austrálii.
V tomto případě jsem chtěl, aby se moje rutina podívala na otevřené karty Chrome a nastavila aktuálně aktivní kartu Chrome na kartu předávanou v rutině. Aby mohl Keyboard Maestro provést tento úkol, musel by také spustit nějaký kód AppleScript pro rozhraní s API Chrome.
Znovu jsem požádal ChatGPT, aby napsal tento kód, abych ušetřil několik hodin psaní AppleScriptu a čas, který bych strávil hledáním, jak získat přístup k datům Chrome.
Testovací data: Použijte následující výzvu jako jeden požadavek:
Write a Keyboard Maestro AppleScript that scans the frontmost Google Chrome window for a tab name containing the string matching the contents of the passed variable instance__ChannelName. Ignore case for the match. Once found, make that tab the active tab.Co hledat ve výsledcích: Toto je dobrý test umělé inteligence, protože testuje poměrně neznámý programovací nástroj (Keyboard Maestro), AppleScript a Chrome API a také to, jak všechny tyto tři technologie interagovat.
Nejprve se podívejte, zda výsledný AppleScript získá proměnnou názvu kanálu z Keyboard Maestro, která by měla vypadat nějak takto:
tell application "Keyboard Maestro Engine"
set channelName to getvariable "instance__ChannelName"
end tellZbytek skriptu AppleScript by měl být zahrnut do bloku. Musí ignorovat velká a malá písmena, takže buď hledejte substituci velkých a malých písmen, nebo použijte „obsahuje“, což v AppleScriptu nerozlišuje velká a malá písmena:
tell application "Google Chrome"Děti, můžete to zkusit doma
Neváhejte a udělejte si tyto testy a zapojte je do vaší AI podle vašeho výběru. Podívejte se, jak dopadnou výsledky. Pomocí těchto a dalších testů, které můžete vyvinout sami, získáte pocit, jak moc můžete důvěřovat kódu, který vaše AI vytváří.
Doposud jsem kromě ChatGPT testoval následující chatboty s umělou inteligencí: ChatGPT Plus, Perplexity, Perplexity Pro, Meta AI, Meta Code Llama, Claude 3.5 Sonnet, Gemini Advanced a Microsoft Copilot. Zde je přehled mých agregovaných výsledků celého souboru:
- Nejlepší AI pro kódování v roce 2024 (a co nepoužívat)
Zůstaňte naladěni. Tento seznam článků aktualizuji, jakmile budeme mít další výsledky testů.
Použili jste některou z těchto AI pro pomoc s programováním? Jaké byly vaše výsledky? Zkoušeli jste některý z těchto testů na vaší AI? jaké máte zkušenosti? Dejte nám vědět v komentářích níže.
Moje každodenní aktualizace projektu můžete sledovat na sociálních sítích. Nezapomeňte se přihlásit k odběru mého týdenního zpravodaje a sledujte mě na Twitteru/X na @DavidGewirtz, na Facebooku na Facebook.com/DavidGewirtz, na Instagramu na Instagram.com/DavidGewirtz a na YouTube na YouTube.com/DavidGewirtzTV.

