A ChatGPT és a Flutter

ChatGPT logo

Ebben a cikkemben az elmúlt hónapok felkapott AI technológiájával fogok foglalkozni, az OpenAI ChatGPT-jével. Ezen belül is, hogy hogyan köthető össze egy mobil alkalmazással. Mire használhatjuk?

Mi a ChatGPT?

A ChatGPT az OpenAI által 2022 novemberében elindított chatbot. Az OpenAI GPT-3.5 nagy nyelvi modell (LLM) családjára épül, és mind a felügyelt (federated), mind a megerősített (reinforced) tanulási technikákkal finomhangolták.

Az elmúlt héten kijött a ChatGPT-4-es változata, ami csillagászati magasságokba lökte a tudását.

A ChatGPT és a Flutter

Eszembe juttot, hogy összeházasítsam a ChatGPT intelligenciát a Flutter keretrendszer rugalmasságával, és létrehozzak olyan appokat, amelyek a felhasználóknak hasznosak lehetnek.

Elég a felturbózott Duolingo Max-ra gondolni, ami elképesztő, új megoldásokat hoz.

Ha nem is ilyen mélységben, de magam is elkezdtem kísérletezni egy egyszerű megoldással. Kíváncsi voltam, hogy mi kell hozzá? Egy Flutter mobil appot terveztem, amiben a chat szövegét elküldés előtt átnézettethetjük, hogy az mennyire sértő / durva. Ez sokszor segít olyan helyzetekben, amikor a két félnek érzelmileg túlfűtött a kommunikációja.

ChatGPT beállítása

Ez a legegyszerűbb része a dolognak. Nincsen más teendőnk, mint a https://chat.openai.com/auth/login oldalon egy Google vagy Microsoft accounttal beregisztrálni.

Ezután navigáljunk el a https://platform.openai.com/account/api-keys oldalra, és hozzunk létre egy API key-t a Create new secret key gombra kattintva. Az itt látott kódot jegyezzük le valahova, mert csak egyszer látjuk. A későbbiekben ezt fogjuk használni. Ha mégsem írtuk volna fel, bármikor hozhatunk létre egy újat.

Kell egy jó termék ami a ChatGPT -t használja

Az volt az elképzelésem, hogy egy olyan, saját API-t (végpont) hozok létre, ami a ChatGPT Instruction modell közül a text-davinci-003-t használja. A különböző model típusokról itt olvashatsz. Én az un. Completion közül választottam, mert ennek lehet utasításokat adni.

Az volt a cél, hogy kap egy rövid, maximum 300 karakteres szöveget (prompt), és …

“Határozza meg, hogy mennyire agresszív a másik fél számára! Ezt osztályozza 0.0 és 1.0 között, ahol 0.0 a nem agresszív, és 1.0 a nagyon agresszív.”

A fenti model leírásoknál mutat példa kódokat, amiket fel tudunk használni pl. Python scriptben (vagy Curl hívással). Én is így indultam neki. Nagyjából 5 perc alatt kipróbáltam, hogy azokkal a beállításokkal már elég jól meg tudja határozni a kapott szöveg agresszivitás mértékét.

Az MVP megvolt, már csak össze kellett rakni!

A Flutter és a Firebase szeretik egymást

Mivel korábban már használtam a Google Firebase szolgáltatását, ezért gyorsan létrehoztam benne egy végpontot.

Ehhez a Firebase Cloud Functions használtam. Létrehoztam a Firebase-ben egy új projektet, engedélyeztem a Cloud Function-t, és már írhattam is a végpontomat TypeScriptben (TS).

...
export const toneAnalysis = functions.runWith({
    secrets: [openAiApiKey, organization],
    timeoutSeconds: 30,
}).https.onRequest(async (request, response) => {
...
const configuration = new Configuration({
    organization: organization.value(),
    apiKey: openAiApiKey.value(),
});
const openai = new OpenAIApi(configuration);
...
const openAPIResponse = await openai.createCompletion({
    model: 'text-davinci-003',
    prompt: myPrompt,
    max_tokens: 5,
    temperature: 0.5,
    n: 1,
    top_p: 1.0,
    stop: "None",
    frequency_penalty: 0.5,
    presence_penalty: 0.0
});
...
...
const output = openAPIResponse.data['choices'][0]['text'];
...

Itt volt szükség a fenti kódban vastagon szedett saját openAiApiKey, organization kulcsokra, amit a ChatGPT felületéről másoltunk ki.

A ChatGPT teszt

Az egyszerűség kedvéért most egy parancssori verzióban tesztelek, egy cUrl hívással. A data részben van a lényeg:

Kérés

curl --location 'https://us-central1-my-apis-567693.cloudfunctions.net/toneAnalysis' \
--header 'Authorization: Bearer o62fvWkiAYkDkGUCzJJe' \

--header 'Content-Type: application/json' \

--data '{
    "query": "Szeretlek Drágám! Nagyon boldoggá tettél a múlt héten találkozásunk alkalmával. Nagyon várom az újabb találkozást! :)" 
}'

Végpont válasza

{
	"version": "1.0",
	"input": "Szeretlek Drágám! Nagyon boldoggá tettél a múlt héten találkozásunk alkalmával. Nagyon várom az újabb találkozást! :)",
	"aggressive": 0
}

A válaszban pedig az aggressive értéke most 0. Próbálgasd, hogy mire mit ad!

A Flutter package

Ezután pörögtek a dolgok tovább, adódott a következő lépés, hogy hasznos lehet egy mobil appban. Például egy olyan komponenst hozok létre, ami egy beviteli mezőhöz van kapcsolva. Letölthető a Pub.dev-en a tone_detector néven.

Amikor a Küldés gombra nyomok, előtte behív az előző végpontra, és kapok egy értékelést. Ez lehet szöveges, vagy egy bar meter kinézetű. Innentől már csak a fantázia szab határt. De tehet javaslatot a mondandó enyhébb változatára is.

Tone detector widget
A Tone Detector meter skálája

Külön jó volt, hogy a nyelvi nehézségeket észrevétlenül leküzdöttem. Írhattam akár magyarul, angolul, ugyan olyan jól értékelt ki!

Összefoglalva

Néhány napot játszva a ChatGPT-vel, már most elmondható, hogy nagyon jó úton halad, hogy átformálja a mindennapjainkat. Biztosan sokan tartanak az AI-tól, de legalább ugyan ennyien várták már.

Ha tetszett az írásom, olvasd el a többit is. A ChatGPT még nagyon új terület, de érdemes foglalkozni vele. Egy nagyon egyszerű példán keresztül mutattam be, hogy mire képes. Azonban a lehetőségek korlátlanok, csak jól kell tudni kérdezni. Ebben rejlik a nagy lehetőség. Az AI még nagyon sokáig nem helyettünk, hanem velünk együtt fog gondolkozni.

Keress meg bizalommal, ha egy ötletedet / termékedet szeretnéd megvalósítani. Tudok benne segíteni.