Čo hovorí na umelú inteligenciu ChatGPT developer? | Coderama
Remote / Rotácie na projektoch / Refferal bonus 2000€ / Work&Travel.
Získaj odhad platu

Vieme, že ak si najlepší, môžeš pracovať pre kohokoľvek.

Preto ti ponúkame okrem skvelých BENEFITOV aj adekvátne platové ohodnotenie. Vyplň náš dotazník a my ti na základe tvojich skúseností vypracujeme odhad tvojej budúcej výplaty v CODERAMA.

Napíšte nám:

Späť

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. ;)

Martin Švoňava

Java developer

Čo je u nás nové?