Co říká na umělou inteligenci ChatGPT developer? | Coderama
Remote / Rotace v projektech / Bonus za doporučení 2000 € / Práce a cestování.
Získej odhad platu

Víme, že jsi nejlepší, a můžeš pracovat pro kohokoli.

Proto ti nabízíme kromě skvělých VÝHOD i adekvátní finanční ohodnocení. Vyplň náš dotazník a na základě tvých zkušeností ti spočítáme odhad tvé budoucí mzdy v CODERAMA.

Napiš nám:

Zpět

ChatGPT: Nová éra interakce s počítačem z pohledu (nejen) developera

Martin Švoňava|06.07.2023

Umělá inteligence přináší nové možnosti, jak se přiblížit k dokonalosti v interakci s počítačem. Jednou z nich je ChatGPT, na který jsme se podívali zblízka.

Dnešní technologie přinášejí nové možnosti, jak se přiblížit k dokonalosti v interakci s počítačem. Jednou z revolučních novinek v této oblasti je ChatGPT, na který jsme se v CODERAMA podívali pořádně zblízka.

ChatGPT je nová technologie, která umožňuje uživatelům interagovat s počítačem pomocí přirozených jazykových vzorců. Tato technologie je založena na algoritmu Generative Pre-trained Transformer (GPT), který umožňuje počítači rozumět přirozenému jazyku a odpovídat na otázky a požadavky na základě svého tréninku.

Výhodou ChatGPT je, že umožňuje rychlý a efektivní způsob interakce s počítačem. Uživatel nemusí používat speciální příkazy nebo klávesové zkratky, ale může jednoduše zadávat své požadavky pomocí přirozeného jazyka. To snižuje nároky na učení se používání nových programů a zvyšuje pohodlí a efektivitu při práci s počítačem.

Kromě toho ChatGPT umožňuje vytvářet personalizované zkušenosti pro uživatele. Na základě analýzy uživatelských dat a preferencí dokáže počítač nabídnout vhodná řešení a doporučení, která odpovídají potřebám každého jednotlivého uživatele.

ChatGPT má potenciál změnit způsob, jakým interagujeme s počítačem, a přinést novou éru v komunikaci mezi lidmi a technologií. Tato technologie má široké uplatnění v různých odvětvích – od služeb zákazníkům až po medicínské aplikace.

Pokud hledáte nový způsob interakce s počítačem, ChatGPT může být pro vás tou správnou volbou. Vyzkoušejte tuto novinku a objevte výhody, které nabízí pro vaši práci a život. A co na to lidé od fochu? Pojďme se na to podívat.

Co měli programátoři k dispozici doposud?

Mnozí moji kolegové, včetně mě, používali při psaní kódu nějakou formu pomoci. Nejznámějšími jsou GitHub Copilot a TabNine.

TabNine

Je to inteligentní autocorrect a doplňovač kódu, který byl vyvinut společností Codota. Jeho hlavním účelem je poskytovat návrhy a automaticky dokončovat kód během programování. TabNine je založen na strojovém učení a používá neuronové sítě na analýzu kódu a generování návrhů.

GitHub Copilot

Je navržen jako spolupracující programátor a poskytuje návrhy kódu a doplňování v reálném čase při psaní kódu v textovém editoru. Copilot na druhé straně využívá GPT-3.5, podobně jako ChatGPT, model na generování kódu a návrhů na základě kontextu a komentářů programátora.

Hlavní rozdíl mezi ChatGPT a TabNine/GitHub Copilot spočívá v jejich účelu a funkcionalitě. ChatGPT je určený na komunikaci a odpovídání na otázky v textové formě, zatímco TabNine a GitHub Copilot jsou specializované na poskytování návrhů a doplňování kódu při programování.

Kolik z nás využívá ChatGPT?

Zeptal jsem se kolegů, zda již tento nástroj někdy použili, případně jak často a zda jim pomohl.

Na otázku „Používám ChatGPT…“ s možnostmi „denně“, „méně často“ a „ještě jsem nepoužil“ označilo:

  • 35 % kolegů možnost denně,
  • 35 % méně často a zbylých,
  • 30 % se ještě do konverzace s AI nezapojilo.

Na druhou otázku „Pomohl mi ChatGPT“ byly odpovědi následující:

  • 65 % pomohl,
  • 25 % částečně pomohl,
  • 10 % nepomohl.

I z osobní zkušenosti mohu říci, že v poslední době mi tento nástroj pomáhá téměř denně. S AI konverzuji sporadicky od ledna a v květnu jsem jí položil 30 různorodých otázek, ať už pracovních nebo takových, které měly prověřit její limity. Případně jsem zkoušel AI využít na naplánování ideální trasy do naší zamýšlené dovolenkové destinace, což naznačuje stoupající tendenci využívat tento nástroj i namísto Google.

Z typů konverzací, které jsem s AI vedl, bych vypíchl následující:

Výpis TLDR verze článku

Šlo o výpis podstatných informací z článku pro živnostníky. ChatGPT správně vypsal podstatné úseky, ale nesprávně vypsal například některé sumy, kvůli čemuž není možné výstupům plně důvěřovat.

Pokus donutit ChatGPT lhát

V případě, že jsem se zeptal, kdo je osoba X.Y, a neznal ji, odmítl si vymýšlet fakta. Ale když jsem správně zadal dotaz, že daná osoba je z pohádkového světa, ochotně si „fakta“ vymýšlel.

Vytvoření jednoduchého článku pro SEO

Texty měl tvořit na základě zadaných klíčových slov. Výsledek byl v zásadě použitelný, ale velmi generický.

Zaměření se na inkonzistenci

ChatGPT nedokáže říct, kolik zpráv jsme si vyměnili, po opakované otázce si začne čísla vymýšlet.

Vytvoření všech kombinatorických možností scénářů testování s určenými parametry

Velmi užitečné zejména tehdy, když vidíte na první pohled, že výsledek je takový, jaký očekáváte.

Konverzování ve více jazycích

Přechod ze slovenštiny do angličtiny nebyl problém. V jednom případě však ChatGPT začal mluvit česky, když jsem ve slovenštině vynechal diakritiku, a už jsem ho nedokázal donutit používat znovu slovenštinu.


Příklad z praxe

Při jednom z úkolů jsem si chtěl ulehčit život a pokusil jsem se bez programování zadat dotazy, které jsem potřeboval pro své zadání v práci.

Prvotní zadání bylo relativně jednoduché:

JA> pomocí spring webflux synchronně zavolej url, poté vytvoř blok if else a v obou blocích zpracuj tělo odpovědi.


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 proto jsem doplnil další instrukce:


JA > implementuj také blok if, kde podmínka if bere 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);

        }

    }

}


Protože se mi vygenerovaný kód zdál neoptimální, zeptal jsem se, zda správně chápu, že odesíláme 2 požadavky:


JA> odešle kód, který jste vygeneroval, 2 požadavky nebo 1?


GPT> Kód, který jsem poskytl, ve skutečnosti odesílá dva samostatné požadavky na server.

První požadavek se uskuteční, když zavoláme .retrieve().bodyToMono(String.class), abychom načetli tělo odpovědi jako Mono<String>. To odešle požadavek GET na server a načte tělo odpovědi.

JA> můžeš upravit kód tak, aby posílal jen jeden požadavek?


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

        }

    }

}


JA> můžeš upravit kód tak, aby posílal jen jeden požadavek?

Následující kód byl zdánlivě použitelný, ale musel jsem ještě zjistit přesnou verzi Springu použitou v příkladech, protože některé části nefungovaly jen po zkopírování. Na druhé straně, nemusíte mít vždy přesný výsledek, ale možná čím více lidí bude komunikovat s umělou inteligencí, tím více jich pochopí, že důležité je klást správné otázky. Možná se takto dokáže vylepšit i mezilidská komunikace.

Uzavřel bych to konstatováním, že při programování s ChatGPT je možné nástroj přirovnat k Google Maps. Poskytne vám možnosti a cesty, jak dorazit do cíle. Dejte si ale pozor, může vás zavést i na nesprávnou cestu, a proto buďte opatrní a důvěřujte mu do té míry, jako když se vydáte na výlet na místo, kde jste ještě nikdy nebyli.

Pro zajímavost, první dva odstavce tohoto článku byly napsány ChatGPT a mírně upraveny autorem. Všimli jste si? Pokud používáte ChatGPT často, věřím, že ano. ;)

Martin Švoňava

Java developer