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.
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.
Borbély Viktor vagyok, több éves Projekt menedzsment tapasztalattal. Szabadúszóként Flutter és a Spring Boot vagy Firebase Backend alkalmazások tervezését és megvalósítását végzem.
Dolgoztam több vállalatnál, az autóiparon (Continental, Valeo), a távközlésen (Ericsson) át a mobil fejlesztésig (Combit zRt. – Grepton Csoport).
Amikor együtt gondolkozásra van szükség, mindig van egy ötletem, amivel előremozdítom a megoldást. Szívesen mentorálom a körülöttem lévőket.