ChatGPT: Nová éra interakcie s počítačom z pohľadu (nielen) developera
Martin Švoňava|06.07.2023
Umelá inteligencia prináša nové možnosti, ako sa priblížiť k dokonalosti v interakcii s počítačom. Jednou z nich je ChatGPT, na ktorý sme sa pozreli zblízka.
Dnešné technológie prinášajú nové možnosti, ako sa priblížiť k dokonalosti v interakcii s počítačom. Jednou z revolučných noviniek v tejto oblasti je ChatGPT, na ktorý sme sa v Coderame pozreli poriadne zblízka.
ChatGPT je nová technológia, ktorá umožňuje používateľom interagovať s počítačom pomocou prirodzených rečových vzorcov. Táto technológia je založená na algoritme Generative Pre-trained Transformer (GPT), ktorý umožňuje počítaču porozumieť prirodzenému jazyku a odpovedať na otázky a požiadavky na základe svojho tréningu.
Výhodou ChatGPT je, že umožňuje rýchly a efektívny spôsob interakcie s počítačom. Používateľ nemusí používať špeciálne príkazy alebo klávesové skratky, ale môže jednoducho zadávať svoje požiadavky pomocou prirodzeného jazyka. To znižuje nároky na učenie sa používania nových programov a zvyšuje pohodlie a efektivitu pri práci s počítačom.
Okrem toho, ChatGPT umožňuje vytvárať personalizované skúsenosti pre používateľov. Na základe analýzy používateľských dát a preferencií dokáže počítač ponúknuť vhodné riešenia a odporúčania, ktoré zodpovedajú potrebám každého jednotlivého používateľa.
ChatGPT má potenciál zmeniť spôsob, akým interagujeme s počítačom, a priniesť novú éru v komunikácii medzi ľuďmi a technológiou. Táto technológia má široké uplatnenie v rôznych odvetviach – od služieb zákazníkom až po medicínske aplikácie.
Ak hľadáte nový spôsob interakcie s počítačom, ChatGPT môže byť pre vás tou správnou voľbou. Vyskúšajte túto novinku a objavte výhody, ktoré ponúka pre vašu prácu a život. A čo na to ľudia od fachu? Poďme sa na to pozrieť.
Čo mali programátori k dispozícií doposiaľ?
Mnohí moji kolegovia, vrátane mňa, používali pri písaní kódu nejakú formu pomoci. Tými najznámejšími sú GitHub Copilot a TabNine.
TabNine
Ide o inteligentný autokorektor a dopĺňač kódu, ktorý bol vyvinutý spoločnosťou Codota. Jeho hlavným účelom je poskytovať návrhy a automaticky dokončovať kód počas programovania. TabNine je založený na strojovom učení a používa neurónové siete na analýzu kódu a generovanie návrhov.
GitHub Copilot
Je navrhovaný ako spolupracujúci programátor a poskytuje návrhy kódu a dopĺňanie v reálnom čase pri písaní kódu v textovom editore. Copilot na druhej strane využíva GPT-3.5, podobne ako ChatGPT, model na generovanie kódu a návrhov na základe kontextu a komentárov programátora.
Hlavný rozdiel medzi ChatGPT a TabNine/GitHub Copilot spočíva v ich účele a funkcionalite. ChatGPT je určený na komunikáciu a odpovedanie na otázky v textovej forme, zatiaľ čo TabNine a GitHub Copilot sú špecializované na poskytovanie návrhov a dopĺňanie kódu pri programovaní.
Koľkí z nás ChatGPT využívajú?
Spýtal som sa kolegov, či už tento nástroj niekedy použili, prípadne ako často a či im pomohol.
Na otázku „Používam ChatGPT…“ s možnosťami „denne“, „menej často“ a „ešte som nepoužil“ označilo:
- 35 % kolegov možnosť denne,
- 35 % menej často a zvyšných,
- 30 % sa ešte do konverzácie s AI nezapojilo.
Na druhú otázku „Pomohol mi ChatGPT“ boli odpovede nasledovné:
- 65 % pomohol,
- 25 % čiastočne pomohol,
- 10 % nepomohol.
Aj z osobnej skúsenosti môžem povedať, že v poslednej dobe mi tento nástroj pomáha takmer denne. S AI konverzujem sporadicky od januára a máji som jej položil 30 rôznorodých otázok, či už pracovných alebo takých, ktoré mali preveriť jej limity. Prípadne som skúsil AI využiť na naplánovanie ideálnej trasy do našej zamýšľanej dovolenkovej destinácie, čo naznačuje stúpajúcu tendenciu využívať tento nástroj aj namiesto Google.
Z typov konverzácií, ktoré som s AI viedol, by som vypichol nasledovné:
Výpis TLDR verzie článku
Išlo o výpis podstatných informácií z článku pre živnostníkov. ChatGPT správne vypísal podstatné úseky, no nesprávne vypísal napríklad niektoré sumy, kvôli čomu nie je možné výstupom plne dôverovať.
Pokus donútiť ChatGPT klamať
V prípade, že som sa opýtal, kto je osoba X.Y, a nepoznal ju, odmietol si vymyslieť fakty. Ak som ale správne zadal dopyt, že daná osoba je z rozprávkového sveta, ochotne si „fakty“ vymýšľal.
Vytvorenie jednoduchého článku pre SEO
Texty mal tvoriť na základe zadaných kľúčových slov. Výsledok bol v zásade použiteľný, no veľmi generický.
Zameranie sa na inkonzistentnosť
ChatGPT nedokáže povedať, koľko správ sme si vymenili, po zopakovaní otázky si začne čísla vymýšľať.
Vytvorenie všetkých kombinatorických možností scenárov testovania s určenými parametrami
Veľmi užitočné najmä vtedy, ak vidíte na prvý pohľad, že výsledok je taký, aký očakávate.
Konverzovanie vo viacerých jazykoch
Prechod zo slovenčiny do angličtiny nebol problém. V jednom prípade však ChatGPT začal hovoriť po česky, keď som v slovenčine vynechal diakritiku, a už som ho nedonútil používať opäť slovenčinu.
Príklad z praxe
Pri jednej z úloh som si chcel uľahčiť život a pokúsil som sa bez programovania zadať také dopyty, ktoré som potreboval pre svoje zadanie v práci.
Prvotné zadanie bolo relatívne jednoduché:
JA> pomocou spring webflux synchrónne zavolaj url, potom vytvor blok if else a v oboch blokoch spracuj telo odpovede
GPT>
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
public class Example {
public static void main(String[] args) {
String url = "https://example.com";
WebClient webClient = WebClient.create();
Mono<String> responseMono = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class);
String responseBody = responseMono.block();
if (/* some condition */) {
// do something with the response body
System.out.println(responseBody);
} else {
// do something else with the response body
System.out.println(responseBody);
}
}
}
Pseudokód mi však nestačil, a preto som doplnil ďalšie inštrukcie:
JA > implementuj aj blok if, kde podmienka if berie do úvahy, že stav je 200
GPT>
import org.springframework.http.HttpStatus;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
public class Example {
public static void main(String[] args) {
String url = "https://example.com";
WebClient webClient = WebClient.create();
Mono<String> responseMono = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class);
String responseBody = responseMono.block();
if (webClient.get().uri(url).exchange().block().statusCode() == HttpStatus.OK) {
// do something with the response body
System.out.println(responseBody);
} else {
// do something else with the response body
System.out.println(responseBody);
}
}
}
Nakoľko sa mi vygenerovaný kód zdal neoptimálny, spýtal som sa, či rozumiem správne, že posielame 2 požiadavky:
JA> odošle kód, ktorý ste vygenerovali, 2 požiadavky alebo 1?
GPT> Kód, ktorý som poskytol, v skutočnosti odosiela dve samostatné požiadavky na server.
Prvá požiadavka sa uskutoční, keď zavoláme .retrieve().bodyToMono(String.class), aby sme načítali telo odpovede ako Mono<String>. Toto odošle požiadavku GET na server a načíta telo odpovede.
JA> môžeš upraviť kód tak, aby posielal len jednu požiadavku?
GPT>
import org.springframework.http.HttpStatus;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
public class Example {
public static void main(String[] args) {
String url = "https://example.com";
WebClient webClient = WebClient.create();
Mono<String> responseMono = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class);
String responseBody = responseMono.block();
HttpStatus statusCode = responseMono.toFuture().join().statusCode();
if (statusCode == HttpStatus.OK) {
// do something with the response body
System.out.println(responseBody);
} else {
// do something else with the response body
System.out.println(responseBody);
}
}
}
Nasledovný kód bol zdanlivo použiteľný, no musel som ešte zistiť presnú verziu Springu použitú v príkladoch, nakoľko niektoré časti nefungovali len po skopírovaní. Na druhej strane, nemusíte mať vždy presný výsledok, no možno čím viac ľudí bude komunikovať s umelou inteligenciou, tým viac ich pochopí, že dôležité je klásť správne otázky. Možno sa takto dokáže vylepšiť aj medziľudská komunikácia.
Uzavrel by som to konštatovaním, že pri programovaní s ChatGPT je možné nástroj prirovnať ku Google Maps. Poskytne vám možnosti a cesty, ako doraziť do cieľa. Dajte si avšak pozor, môže vás zaviesť aj na nesprávnu cestu, a preto buďte ostražití a dôverujte mu do takej miery, ako keď sa vyberiete na výlet na miesto, kde ste ešte nikdy neboli.
Pre zaujímavosť, prvé dva odseky tohto článku boli napísané ChatGPT a mierne upravené autorom. Všimli ste si? Ak používate ChatGPT často, verím, že áno. ;)