Generativní umělá inteligence je teprve v počátcích, ale už teď hrozí, že vnese zásadní změny do řady profesí i celých odvětví. U veřejnosti se dostává značné pozornosti tvorba uměleckých děl a generování textů s pomocí umělé inteligence, ale vývojáři softwaru se zajímají spíše o velké jazykové modely (LLM), jako jsou ChatGPT nebo GitHub Copilot. Tyto nástroje jim totiž mohou pomoci psát kód efektivněji prostřednictvím dotazů formulovaných přirozeným jazykem.
Je pro váš podnik umělá inteligence vhodným řešením některých požadavků?
Pokud jste věnovali alespoň pár minut hraní s veřejnými verzemi nástrojů generativní umělé inteligence, víte, jaké vstupy jim můžete zadávat. A že ne všechny dotazy vedou k zamýšlenému výsledku. Naučit se formulovat dotazy v komunikačním rozhraní umělé inteligence, tak abyste co nejrychleji dosáhli nejlepších výsledků je velmi žádanou dovedností, označovanou jako programování z příkazové řádky („prompt engineering“).
Co je to programování z příkazové řádky AI?
Programování z příkazové řádky je „umění a věda, jak přesně sdělit své požadavky nástroji generativní umělé inteligence“, vysvětluje Mike King, CMO společnosti AIPRM, která poskytuje nástroje pro správu zadání a provozuje jejich komunitní knihovnu. „Jde o jakési tlumočení lidského záměru do řeči stroje. A stejně jako každý jiný překlad vyžaduje hluboké porozumění oběma stranám konverzace.“
„Programování z příkazové řádky AI vyžaduje velmi dobrou úroveň vyjadřování, schopnost laterálního myšlení i znalost fungování příslušné technologie,“ dodává Richard Batt, konzultant v oblasti umělé inteligence, který působí ve Velké Británii a tento způsob programování nabízí jako jednu ze svých služeb. „Na první pokus to může vypadat velmi jednoduché, ale získávat konzistentně kvalitní odpovědi na složité dotazy může být mnohem těžší, než se zdá!“
Hovořili jsme s odborníky z tohoto rychle se rozvíjejícího oboru, abychom zjistili, jaké mají zájemci o programování s pomocí AI možnosti a jak mohou efektivně dosahovat požadovaných výsledků, aby prokázali své schopnosti potenciálním klientům a zaměstnavatelům. Detailnější vhled do problematiky sestavování pokynů pro AI sice přesahuje rámec tohoto článku, ale na závěr uvedeme i příklad ilustrující některé aspekty efektivní formulace dotazů.
Jak se naučit programovat z příkazové řádky AI
Joseph Reeve ve společnosti Amplitude, která poskytuje software pro analýzu produktů, vede tým vývojářů, kteří pracují na funkcích vyžadujících využití AI při programování. Vytvořil také interní nástroje, které práci s nástroji LLM usnadňují. To z něj dělá zkušeného odborníka v tomto novém oboru. Jak poznamenává: „Na LLM je skvělé, že v podstatě neexistuje žádná překážka, která by vám bránila začít – stačí umět psát na klávesnici!“
Pokud chcete posoudit erudici konzultanta, je snadné vyzkoušet jeho dotazy ve vybraném systému LLM. Stejně i z druhé strany, pokud nabízíte služby v oblasti programování z příkazové řádky AI, můžete si být jisti, že vaši zaměstnavatelé nebo klienti budou využívat LLM ke kontrole výsledků.
Na otázku, jak se naučit programovat z příkazové řádky AI a jak se prodávat na trhu práce jako expert, tedy neexistuje jednoduchá a jednoznačná odpověď – alespoň prozatím ne.
„V tomto ohledu se nacházíme v pionýrském období objevování Divokého západu. Pro různé lidi totiž programování s pomocí AI může znamenat různé věci. Pro někoho je to pouze zadávání pokynů. Pro jiné je to ladění a konfigurace LLM a formulace zadání. Neexistují žádná formální pravidla, ale objevují se osvědčené postupy, jako jsou například tzv. mega prompty,“ říká Mike King z AIPRM.
Ačkoli se začínají objevovat formální kurzy od poskytovatelů, jako je například DeepLearning.ai, většina vývojářů se vzdělává a zdokonaluje po vlastní ose. Richard Hruby, technický ředitel start-upu CYQIQ, který se zabývá generativní umělou inteligencí, představuje strategii ovládnutí programování z příkazové řádky AI o třech krocích:
- Seznámit se s architekturami modelů.
- Zkoušet, učit se z nezdarů a zkoušet znovu.
- Trávit čas na Twitteru, Redditu, Discordu a dalších sociálních sítích.
Podívejme se na každý z těchto bodů podrobněji.
Znalost velkých jazykových modelů
Některé aspekty fungování konkrétních programů LLM jsou sice chráněné jako důvěrné, ale většina teorie a výzkumu je veřejně dostupná. Pokud se seznámíte s principy LLM, nebudete zbytečně tápat a vydávat se slepými uličkami.
„I když se konkrétní implementace mohou lišit, všechny LLM jsou postavené na stejných základních konceptech a vrstvách zpracování dat,“ říká Andrew Vasilyev, hlavní programátor ve společnosti JetBrains, který vyvíjí zadání pro AI asistenta v nástroji ReSharper.
„Tyto koncepty je nutné pochopit, abychom poznali limity LLM a úkolů, které mohou efektivně zvládnout. Budeme-li na systém LLM nahlížet pouze jako na černou skříňku, snadno se může stát, že přeceníme jeho schopnosti.“
Randall Hunt, viceprezident pro cloudovou strategii a řešení ve společnosti Caylent, se naučil základy programování z příkazové řádky AI prostřednictvím formálních i neformálních experimentů v rámci využívání modelů umělé inteligence v jeho firmě. Zájemcům o tuto problematiku doporučuje, aby sledovali aktuální stav výzkumu v oblasti rozsáhlých jazykových modelů. Stejně jako Vasilyev i on zdůrazňuje, že klíčem k pochopení fungování LLM je tokenizace.
„Tyto modely se snaží předvídat další token, takže je důležité poskytnout jim kontext v podobě tokenů, se kterými mohou pracovat, a je třeba najít rovnováhu mezi délkou zadání a dosaženým výsledkem.“ Dodává, že je důležité pochopit omezení modelů včetně „rozsahu kontextu, jazykových omezení a omezení definic person“.
Nepřestávejte s dalšími iteracemi
Jednou z nejzajímavějších částí práce s generativní umělou inteligencí je okamžitá zpětná vazba. To znamená, že se vyplatí věnovat čas vylepšování a experimentování s formulací zadání, což je proces, který vám může pomoci zlepšovat své dovednosti. „Formulace zadání není nikdy jednorázový proces,“ říká Hruby ze společnosti CYQIQ. „Správnou cestou je opakované testování a vylepšování. Často jste první osobou, která zkouší zadání pro daný případ, takže jediný způsob, jak se naučit zadání lépe formulovat, je experimentování.“
Najděte si svou on-line komunitu
Ať už se zdokonalujete v programování s pomocí AI, abyste zvýšili svou produktivitu v práci nebo pro své vlastní potřeby ve volném čase, nemusíte na to být sami, jak zdůrazňují všichni, s nimiž jsme hovořili. Komunity nadšenců se hojně vyskytují na různých Reddit a Discord fórech – a samozřejmě i v diskuzích na Twitteru.
Předveďte své promptgramátorské dovednosti
V nově vznikajícím světě programování s pomocí AI mohou on-line komunity sloužit dvojímu účelu. Sdílením získaných poznatků si můžete v komunitě vybudovat dobrou pověst, na jejímž základě můžete postoupit ve své kariéře nebo získat nové zakázky. Rozšíření tohoto přístupu i na další sociální sítě vám může pomoci udělat si jméno.
„Marketing dovedností není nic tajemného,“ říká King z AIPRM. „Pište blogy a natáčejte vlogy, kde ukážete, že problematice rozumíte. Zejména krátká videa se velmi dobře šíří. Aktivně se zapojte do různých nabídkových a poptávkových tržišť, protože existuje spousta lidí, kteří nemají trpělivost budovat si sami potřebné dovednosti.“
Mnoho lidí, se kterými jsme hovořili, také zdůrazňovalo, že byste měli své formulace zadání a nástroje založené na umělé inteligenci dávat k dispozici, za prvé aby si je mohli vyzkoušet potenciální zákazníci nebo klienti, za druhé aby se z nich mohli ostatní učit. Nagendra Kumar, spoluzakladatel a technický ředitel startupové firmy Gleen, která vytváří konverzační roboty založené na generativní umělé inteligenci pro potřeby interakce velkých společností se zákazníky, nabádá ty, kdo se zdokonalují v programování z příkazové řádky AI, aby vytvářeli ucelené produkty, s nimiž si budou moci uživatelé „hrát“. Nejlepším způsobem je vytvořit několik aplikací s předpřipravenými zadáními, která mohou uživatelé podle svého upravovat.
A samozřejmě nikdy neuděláte chybu tím, že svou práci poskytnete jako open source nebo budete přispívat do open source projektů.
„Vytvořte repozitář povedených zadání a pravidelně vkládejte nová. Ukažte příklady včetně případů použití,“ radí Nagendra Kumar. Open source projekty také nabízejí příležitost seznámit se s vnitřním fungováním různých LLM.
„Na GitHubu je mnoho takových nástrojů LLM, které by uvítaly přispěvatele,“ říká Reeve ze společnosti Amplitude. „Najděte si projekt, o němž si myslíte, že by mohl být zajímavý, a začněte v něm hledat slabiny a navrhovat zlepšení.“
Programování s pomocí AI se rychle rozvíjí
Téměř všichni, s nimiž jsme hovořili, zdůrazňovali, že tento obor je stále v zárodku a dynamicky se vyvíjí.
„Domnívám se, že každý, kdo se označuje za odborníka, by měl svá tvrzení doplnit poznámkou ve smyslu, že jde o zcela novou oblast a rady, které mají smysl dnes, nemusejí být stejné jako rady, jež budou mít smysl za šest měsíců,“ říká Hunt ze společnosti Caylent. „Dokonce bych se odvážil tvrdit, že v této oblasti zatím neexistují žádní skuteční odborníci.
Poradenství v oblasti programování z příkazové řádky AI se bude muset přizpůsobovat vývoji – růstu rozsahu kontextu u modelů, snižováním nákladů na jeden token nebo zvyšováním propustnosti.“
Jedním z hlavních důvodů těchto změn je, že se neustále mění samotné podkladové modely, protože velké AI společnosti i open source projekty neustále trénují LLM na dalších a dalších datech a zdokonalují jejich schopnosti. „S vývojem modelů umělé inteligence a jejich architektury – OpenAI vydává nové verze GPT-4 každé čtyři až šest týdnů – by se měly vyvíjet i techniky zadávání dotazů,“ říká Hruby ze společnosti CYQIQ, který opakuje, že on-line komunity jsou skvělým místem, kde lze sdílet znalosti a postřehy o změnách.
„Pokaždé, když nástroje generativní umělé inteligence projdou aktualizací nebo změnou (a to se děje často), může se změnit způsob, jakým interpretují a reagují na zadané pokyny,“ dodává King z AIPRM. „To může být fascinující, ale i naprosto frustrující. Je to jako vlastnit lamborghini, být zvyklí zrychlit z nuly na sto za 2,9 a řezat zatáčky na okruhu stopadesátkou, a jednoho krásného dne nasednout a zjistit, že volant jde ztuha a motor reaguje na plyn jako starý náklaďák. Anebo přesně naopak.“
Formulace dotazů pro AI může znít trochu jako optimalizace obsahu pro vyhledávače (SEO) – což je další oblast, kde je občas nutné zohlednit náhlé a neočekávané změny ze strany tvůrců algoritmů, jejichž zájmy mohou být zcela v rozporu s našimi. Hruby ze společnosti CYQIQ však předpovídá budoucnost, kdy vztah mezi programátory a AI společnostmi bude mnohem více založený na spolupráci než vztah mezi konzultanty SEO a společností Google, a to mimo jiné i proto, že v oblasti LLM nikdo nedosáhl monopolní dominance – alespoň prozatím ne.
„Poskytovatelé modelů budou (možná částečně na popud svých investorů) stále větší měrou sdílet osvědčené postupy a doporučení, jak mohou vývojáři jejich modely využít co nejefektivněji,“ říká. „Zatím neprobíhá žádná čilá oficiální komunikace, spíše se na úrovni komunity diskutuje o tom, jak formulovaná zadání fungují nejlépe pro jednotlivé modely a verze. V budoucnu bych však od poskytovatelů očekával větší transparentnost.“
Jak bude práce AI programátora vypadat v blízkém až střednědobém horizontu? Reeve ze společnosti Amplitude popisuje, jak lze ve firmách, jako je ta jeho, začlenit programování s pomocí AI do celkového procesu vývoje. „Ukazuje se, že tvorba kvalitních zadání pro programování pomocí AI vyžaduje úzkou spolupráci odborníků na danou oblast, datových inženýrů a softwarových inženýrů.“
Jak psát efektivní zadání pro umělou inteligenci
Programování z příkazové řádky AI je proces, říká Reeve. „Jakmile zjistíte, které typy zadání fungují dobře, je třeba je přeskupovat, rozdělovat a slučovat, abyste pokaždé dosáhli perfektních výsledků.“ Proces rozděluje do čtyř fází: tvorba prototypu, produkce, internacionalizace a dolaďování a optimalizace.
Ve fázi tvorby prototypu jde především o experimentování s cílem zjistit, jakými údaji zadání doplnit a čeho jsou různé LLM schopné v souvislosti s konkrétním úkolem, který se snažíte vyřešit. Tato etapa vyžaduje především znalost řešeného problému, jakou disponují např. produktoví manažeři, a dat, jež jsou v systému k dispozici, což vědí např. datoví inženýři.
V produkční fázi se většinou snažíte rozdělit úlohu na co nejmenší počet dílčích zadání, která lze spolehlivě provést a tato zadání propojit se skutečnými daty v kódu aplikace. Tato etapa vyžaduje tradiční programátorské dovednosti, znalosti datového inženýrství a výstupy z fáze prototypování.
Pro mnoho projektů je důležitá také jazyková podpora. Právě ve fázi internacionalizace byste měli zvážit úpravu zadání pro zobrazení všech požadovaných jazyků. V závislosti na modelu to bude pravděpodobně triviální, ale vyplatí se mít k dispozici rodilé mluvčí, kteří výstup zkontrolují.
Obtížná část procesu nastává ve fázi dolaďování a optimalizace. Vyladit zadání tak, abyste z LLM získali naprosté maximum, je v současné době nekonečný úkol. Modely OpenAI se neustále mění, takže je nutné pravidelně kontrolovat, zda zadání stále fungují správně – je možné například vytvořit dílčí testy, které to usnadní. Tato fáze zahrnuje úpravu textu a údajů vkládaných do zadání a měření kvality výsledků v průběhu času. Vyžaduje to znalosti specifické pro danou oblast a někdy i určité dovednosti softwarového inženýrství. Náklady i rychlost přímo souvisejí s počtem tokenů předávaných do a z LLM, což znamená, že je zapotřebí, aby zadání (včetně dat) a výstupní formát byly co nejstručnější. Náklady na jednotlivé programy LLM se také liší, takže prvotní rozhodnutí může mít v tomto ohledu zásadní vliv.
Příklad tvorby kódu s pomocí AI
Celý kurz tvorby požadavků pro AI dalece přesahuje rámec tohoto článku, ale na závěr vám poskytneme alespoň několik tipů a příklad formulace od Nagendry Kumara ze společnosti Gleen, který ukazuje, jak postupovat a jaký myšlenkový proces je zapotřebí k sestavení užitečného a efektivního zadání.
Kumar nabídl následující tipy, jak postupovat při vývoji softwaru s využitím umělé inteligence:
- Zadávejte konkrétní úkoly jeden po druhém: rozdělte zadání na jednotlivé úkoly.
- Doplňte další kontext: před samotným požadavkem uveďte podrobný kontext a upřesněte, jakou roli bude AI hrát.
- Poskytněte jednoznačné, separované informace: jednotlivé části zadání musejí být jasné a srozumitelné. Napište například „můj kód je psaný kurzivou“ nebo „můj kód je ohraničený uvozovkami“.
- Neodbíhejte od tématu: držte se výhradně kontextu, který souvisí s vaší konverzací. Pokud žádáte umělou inteligenci o ladění kódu pro front-end, mluvte specificky o kódu pro front-end. Vyvarujte se zmínek o věcech, které nesouvisejí s vaším kontextem.
Podívejme se na tyto tipy v praxi. Zde je konkrétní příklad od Kumara.
Jako frontendoví vývojáři máme k dispozici řadu komponent React a CSS, které nám umožňují vytvořit efektní a efektivní uživatelské rozhraní. Někdy musíme upravit CSS, což ale může být komplikované. V tomto případě jsme s úspěchem využili AI, abychom výsledky ještě zdokonalili.
Problém: vezměte seznam log zákazníků a na stránce zobrazované uživatelům je rotujte v kruhu.
Zadání: jste skvělý frontendový vývojář. Pomůžete mi napsat kód v JavaScriptu a CSS pro mé potřeby podle uvedených pokynů.
Pokyny:
Můj kód je v Reactu. Proto se držte standardu programování pro React.
Vytvořte samostatnou sekci pro CSS.
Nekomplikujte kód. Udělejte kód snadno pochopitelný.
Napište kód React, který reaguje na velikost obrazovky mobilních a stolních zařízení.
Nic nepředpokládejte – v případě potřeby položte doplňující otázky.
Budoucnost programování z příkazové řádky AI
Kam se bude ubírat programování s pomocí AI, se můžeme jen dohadovat. Ale skutečným snem o generativní umělé inteligenci je, že specializované programátorské znalosti nebudou vůbec nutné.
„Máme určité náznaky, že se OpenAI snaží posunout technologii směrem, kde zadání budou vyžadovat méně znalostí kódu,“ říká King z AIPRM. „Myslím, že v dlouhodobém horizontu bude mnohem snazší získat s pomocí nástrojů generativní umělé inteligence to, co si přejete. Zároveň budou různé nástroje schopné vzájemně spolupracovat a abstrahovat funkce, takže formulace zadání přestane být prací na plný úvazek.“
O snadné a bezproblémové interakci s počítačem sní lidé už od počátků jazyka COBOL a zatím se toho nepodařilo uspokojivě dosáhnout. Naučit se komunikovat s generativní umělou inteligencí však bude pro vývojáře softwaru v příštích letech pravděpodobně nová lukrativní dovednost.
Článek vyšel v magazínu CIO BW5/2023.
CIO Business World si můžete objednat i jako klasický časopis (v tištěné i v digitální podobně) Věnujeme se nejnovějším technologiím a efektivnímu řízení podnikové informatiky. Přinášíme nové ekonomické trendy a analýzy a zejména praktické informace z oblasti podnikového IT se zaměřením na obchodní a podnikatelské přínosy informačních technologií. Nabízíme možná řešení problémů spojených s podnikovým IT v období omezených rozpočtů. Naší cílovou skupinou je vyšší management ze všech odvětví ekonomiky.
Chcete si článek přečíst celý?
Tento článek je součástí exkluzivního obsahu pouze pro odběratele našeho newsletteru.
Přihlaste se k odběru newsletteru a my vám do mailu pošleme odkaz na celý článek.