Tällä kertaa käydään läpi Power Automaten uusi suosikkitoimintoni (action). Nimittäin tekstin luominen GPT:llä promptin avulla (Create text with GPT using a prompt). Se on ehdottomasti helpoin tapa hyödyntää GPT:tä Power Platform -ratkaisuissa.

Mihin Power Automatessa omia prompteja voi käyttää? Vaikka mihin! Kunhan pitää mielessä miten nämä kielimallit toimivat ja mitä rajoituksia niillä on. Avataan tätä muutaman esimerkin avulla.

Esimerkki – CSV:n muodostaminen

Aloitetaan jollain joka onnistuu mainiosti myös Power Automaten perustoiminnoilla. Mutta mikäli promptaus on tuttua (ja Power Automate ei), voi tämä olla luontevampaa. Itse en tätä tekisi 🙂

Haetaan Dataversestä kaikki asiakkaat (account) ja muodostetaan niistä CSV-muotoinen teksti, joka sisältää ainoastaan asiakkaan nimen ja päivän, jolloin se on lisätty Dataverseen.

Aloitetaan hakemalla kaikki asiakkaat (list rows).

Lisätään tämän perään GPT prompt -toiminto (Create text with GPT using a prompt).

Ei valita valmista promptia, vaan luodaan oma (New custom prompt).

Meille avautuu prompt-editori. Yläosaan kirjoitetaan prompt, eli ohjeet kielimallille siitä mitä toivomme sen tekevän. Alaosassa näemme promptia testatessa sen lopputuloksen.

Jutun pihvi on se, että promptille voi välittää sisältöä (input) parametereina Power Automatesta.

Luodaan uusi parametri (Accounts), joka saa arvokseen (Dataversen) List rows -toiminnon palauttamat asiakkaat. Kopioidaan toiminnon palauttama arvo (body/value) promptille esimerkkidataksi (sample data). Näin voimme testata promptin toimivuutta suoraan editorissa.

Vaikein osuus on kirjoittaa prompt, joka tuottaa halutun lopputuloksen. Muutaman kokeilun jälkeen päädyin seuraavaan. Parametrit lisätään mukaan oikean yläreunan Add -painikkeella.

Lopputulos on juuri sitä mitä toivoinkin.

Eikä tarvitse äheltää usean eri Power Automate -toiminnon kanssa.

Työnkulussa välitämme haetut asiakkaat parametrina promptille.

Ja sieltä se muodostunut CSV löytyy.

Jatketaan esimerkeillä, joita ei voi tehdä suoraan Power Automaten muilla toiminnoilla.

Esimerkki – Luokittelu

Meillä on järjestelmästä x poimittuja havaintoja (observations). Yksi havainto per rivi. Lisäksi meillä on havaintojen luokitteluun käytettävät luokat (observation categories).

Haluamme muodostaa JSON-formaatissa olevan tekstin, joka sisältää annetun luokituksen mukaan luokitellut havainnot. Luodaan tarkoitusta varten uusi oma prompt, joka saa parametrina havainnot sekä käytettävän luokittelun.

Muutaman kokeilun jälkeen promtiksi muodostuu seuraava.

Here is list of observations. Each line contain single observation from the user: **Obervations**.

Here are categories you should use to category each of observation: **Categories**. Each observation can be categorized in several categories.

End result should be a JSON content having two fields: Observation (content from the original source. Do not change the content) and Category (0-n matching categories). If there are several matching categories separate them with semicolon.

Pyydämme GPT:tä antamaan lopputuloksen JSON-formaatissa, mutta vaihdetaan formaatti myös asetuksista. Edit-painikkeen takaa pääsee määrittelemään JSON:in skeeman. Nyt lopputuloksena on taatusti kelvollista JSON:ia.

Kokeillaan promptia. Lopputulos näyttää muuten mainiolta, mutta aika moni havainto on jäänyt luokittelematta.

Toiminto käyttää oletuksena GPT-4o mini -kielimallia. Se on halvempi ja nopeampi kuin vaihtoehtona oleva GPT-4o. Vaihdetaan toiminto käyttämään GPT 4o:ta, ja vertaillaan lopputuloksia.

Tässä esimerkissä GPT 4o toimii paremmin. Se löytää järkevän luokittelun kaikille havainnoille. Osalle havainnoista se tunnistaa jopa useita soveltuvia luokkia.

Esimerkki – Koodiston mäppäys

Seuraavaksi käsittelemme automaattisesti mittaustuloksia. Kukin tulos sisältää mitatun asian (test) ja mittaustuloksen (result). Ongelmaksi muodostuu mitatun asian kuvaus. Ne tulevat eri järjestelmistä hieman eri muodossa. Kaikki alla olevat tarkoittavat samaa mittausta (Vitamin B12 cyanocobalamin (µg/100kJ)). Ihmisen helppo ymmärtää, perinteisen ohjelmakoodin ei.

[
    {
        "test": "Vitamin B12 cyanocobalamin (µg/100kJ)",
        "result": "0.9"
    },
    {
        "test": "Vitamin B12  µg / 100kJ",
        "result": "0.3"
    },
    {
        "test": "Vitamin cyanocobalamin (B12) (µg/100kJ)",
        "result": "0.93"
    },
    {
        "test": "Vitamin cyanocobalamin - µg/100kJ",
        "result": "0.19"
    }
]

Jokaiseen testitulokseen tulisi liittää allaolevan kuvauksen perusteella oikea koodi (code). Ylläkuvat tulokset ovat kaikki koodia ”code_1”.

[
    {
        "description": "Vitamin B12 cyanocobalamin",
        "unit": "µg/100kJ",
        "code": "code_1"
    },
    {
        "description": "Vitamin B12 cyanocobalamin",
        "unit": "µg/100g",
        "code": "code_2"
    },
    {
        "description": "Vitamin B7 Biotin",
        "unit": "µg/100kJ",
        "code": "code_3"
    },
    {
        "description": "Vitamin B7 Biotin",
        "unit": "µg/100g",
        "code": "code_4"
    },
    {
        "description": "Vitamin B9 folic acid",
        "unit": "µg/100kJ",
        "code": "code_5"
    },
    {
        "description": "Vitamin B9 folic acid",
        "unit": "µg/100g",
        "code": "code_6"
    }
]

GPT:lle tämä on kuitenkin suoraviivainen tehtävä. Promptista tuli seuraava.

GPT suoriutuu tehtävästä varsin hienosti.

Esimerkki – Laskun tietojen lukeminen kuvasta

Viimeisessä esimerkissä käsitellään paperilaskuja, jotka on matkan varrella skannattu. Alla näet yhden laadukkaasti skannatun laskun.

Haluamme lukea laskun perustiedot. Saajan, maksajan, tilinumeron, viitenumeron, summan, eräpäivän jne. Onneksemme voimme välittää promptille parametrina myös kuvia tai dokumentteja. Tämä edellyttää GPT 4o -mallin käyttöä.

Lisätään promptille parametriksi kuva laskusta (invoice).

Muutaman kokeilukierroksen jälkeen promptiksi muodostuu seuraava.

Lopputuloskin näyttää varsin hyvältä.

Hienoa tässä on se, ettei minun tarvitse opettaa AI-mallia lukemaan laskuja. GPT osaa kohtuullisen hyvin poimia laskulta oikeat tiedot.

Mielenkiintoinen yksityiskohta on kuitenkin laskun maksajan nimi (Pertilä). GPT tulkitsee sen hyvästäkin kuvasta Perttiläksi, koska se on ilmeisesti huomattavasti todennäköisempi nimi kuin Pertilä.

Kustannukset

Mitä Create text with GPT using a promp -toiminnon hyödyntäminen maksaa? Kyseessä on ns premium yhdistin (connector), eli sen käyttö edellyttää premium lisenssiä. Tämä ei kuitenkaan riitä. Toiminto tarvitsee toimiakseen myös AI Builder creditejä. Niitä kuluu käytön mukaan (16 creditiä per 1000 tokenia).

Toiminnon käyttämät tokenit näkee suorituksen jälkeen.

Tämän jutun esimerkit kuluttivat credittejä seuraavasti:

  • CSV:n muodostus: 36095 tokenia -> 580 AI Builder creditiä
  • Havaintojen luokittelu: 3513 tokenia -> 36 AI Builder creditiä
  • Testitulosten liittääminen testikoodeihin: 2272 tokenia -> 56 AI Builder creditiä
  • Laskun tietojen purkaminen valokuvasta: 2070 tokenia -> 33 AI Builder creditiä

Kustannus on suoraan verrannollinen siihen, miten pitkiä tekstejä käsitellään. CSV:n muodostus on esimerkissämme kallista, koska annoimme GPT:lle koko Dataversen palauttaman pitkän JSON:in.

Karsimalla tästä JSON:sta kaiken turhan ja antamalla GPT:lle vain sen tarvitsemat sarakkeet (asiakkaan nimi ja luontipäivä), putoaa käytettävien tokenien lukumäärä merkittävästi 36095 -> 1177.

AI Builder creditejä tulee jonkin verran eri Power Plartform lisenssien kylkiäisinä.

Erikseen ostettuna AI Builder Capacity Add-on T1 maksaa 468e/kk ja sillä saa miljoona creditiä/kk.

Yhteenveto

Kuten esimerkeistä näimme, on omien promptien käyttö Power Automatessa helppoa ja monissa tilanteissa todella kätevää. Kunhan muistaa testata promptin toimivuutta riittävän kattavalla aineistolla.

Kattavasta testaamisesta huolimatta GPT voi hallusinoida ja sekoilla. Flow antaakin varoittuksen, mikäli GPT -toiminnon jälkeen ei erikseen varmisteta ihmiseltä GPT:n antaman lopputuloksen oikeellisuutta.

Mikäli työnkulkua suoritetaan paljon, voivat kustannukset nousta korkeaksi. Tällöin on syytä siirtää katseensa Azuren AI -palveluiden suuntaan.

Toistaiseksi Power Automaten toiminnossa voi valita kahden kielimallin välillä (GPT-4o ja GPT-4o mini). Azuressa valikoima on jotain aivan muuta.

Suoraviivaisuutensa vuoksi tämä valmis toiminto on kuitenkin mitä mainioin tapa aloittaa omien promptien hyödyntäminen Power Platform -ratkaisuissa.