Hvordan bruke ChatGPT fra Power Apps

Det er mye hype rundt ChatGPT for tiden, så jeg tenkte den kunne få oppgaven med å lage gode svar på e-poster sammen med Microsoft Power Platform.

Arild Aarnes

Trykk på taggene for å lese mer om hvor og hvordan vi benytter samme fag og teknologi

Har du noen gang tenkt at det hadde vært greit at noen eller "noe" automatisk kunne sende gode svar på e-poster du mottar? Det tenkte jeg kunne være greit, og siden jeg sikkert ikke får noen til å gjøre dette så ble det "noe". 

For å gjøre det litt mer interessant så kan vi be ChatGPT gi forskjellig type svar.
ChatGPT kan for eksempel svare sarkastisk, sint, veldig glad etc.

Ved å benytte ChatGPT til å produsere svar på dine e-poster kan du for eksempel velge å å få sarkastiske svar som dette:

2023-01-sar.png

Vi bygger en Power App

Vi starter med en enkel manuell applikasjon der du kan lime inn teksten fra en e-post og få ChatGPT til å lage et svar. Denne artikkelen forutsetter nok at du kan litt om Power Apps.

Vi starter med å opprette en ny applikasjon på https://make.powerapp.com, vi velger å bygge en canvas app og velger tablet layout.

Power Platform har over 900 koblinger til andre systemer og en av disse er til Open AI. Det forenkler jo prosessen vår med å bruke ChatGPT veldig.

Vi velger Add data og legger til Open AI koblingen

Legg til Open AI koblingen

For å konfigurere koblingen trenger vi en API key fra Open AI. Din API key kan du opprette her Account API Keys - OpenAI API etter at du har laget en konto på Open AI. API key legges inn med «Bearer <din API key>»

 

Legg til en Text Input kontroll og sett mode til Multiline, gi den et fornuftig navn som txtEmailInput. Kopier Text Input kontrollen slik at du har to.

Power Apps Studio
Power Apps Studio

Gi den kopierte kontrollen navnet txtReplyText.
Legg til en knapp og gi den navnet btnCallChatGPT og set Text property til «Generate reply».

Legg til knapp

 

Vi ønsker å fortelle ChatGPT hvilken type svar vi ønsker, som for eksempel sint, sarkastisk, glad etc. for å kunne velge det legger vi til en Combobox.
Gi den navnet cmbTone og sett Items property til ["Angry","Sad","Nice", "Extremely happy","Sarcastic","Evil"]

Slå av «Allow multiple selections” og “Allow searching”

Legg til combobox

Da er vi klar for å kalle ChatGPT. Gå til OnSelect property på knappen. Der skal vi skrive formelen for å kontakte ChatGPT.

Vi lager først en variable for å ta vare på svaret vi får fra ChatGPT.

UpdateContext({locReply: Blank()});

Dette tømmer variabelen og er brukt for å sette svar til tomt neste gang du klikker på knappen.

Så skal vi kalle ChatGPT via koblingen vi tidligere satte opp. Beskrivelse av koblingen og parametere den tar finner du her

Vi bruker disse parametere når vi kaller ChatGPT

Navn

Påkrevd

Type

Beskrivelse

engine

Ja

String

Hvilken motor skal brukes av ChatGPT. Velg mellom text-davinci-003, text-davinci-002, text-curie-001, text-babbage-001, text-ada-001. Beskrivelse av de forskjellige motorene finner du på Models - OpenAI API

prompt

Ja

string

Spørsmålet eller setningen du ønsker ChatGPT skal svare på eller fullføre. I vårt tilfelle bruker vi teksten fra e-posten formatert som et spørsmål

n

 

Integer

Hvor mange svar skal genereres. I vårt tilfelle 1

best_of

 

Integer

Hvis satt til mer enn 1 så genereres flere svar alternativer «server-side» og det beste returneres. I vårt tilfelle settes denne til 1

temperature

 

float

Høyere verdier betyr at modellen vil ta mer risiko. Vi setter denne til 1

max_tokens

 

Integer

Ett token tilsvarer omtrent 4 tegn med tekst (opptil 4000 tokens mellom ledetekst og fullføring). Vi setter til 100 nå, denne må kanskje økes for å ta større e-poster etter ferdig testing

frequency_penalty

 

float

Tall mellom -2,0 og 2,0. Positive verdier straffer nye tokens basert på deres eksisterende frekvens i teksten så langt, noe som reduserer modellenes sannsynlighet for å gjenta den samme linjen ordrett. I vårt tilfelle 0

presence_penalty

 

float

Tall mellom -2,0 og 2,0. Positive verdier straffer nye tokens basert på om de vises i teksten så langt, noe som øker modellenes sannsynlighet for å snakke om nye emner. I vårt tilfelle 0

 

Vi lager vårt prompt til koblingen ved å sette sammen det du velger i comboboxen (tone du ønsker svar i) og innholdet i e-posten din, sammen med tekst som gjør et hele til et spørsmål:

"can you create a reply in a " & cmbTone.Selected.Value & " tone to the following email: " & txtEmailInput.Text

Dette vil forme et spørsmål til ChatGPT og den kan lage et svar på teksten i e-posten i den «tonen» vi har valgt.

Det betyr at vårt kall på Onselect på vår knapp blir slik:

UpdateContext(

  {

  locReply: 'OpenAI(IndependentPublisher)'.Completion(

  "text-davinci-002",

   "can you create a reply in a " & cmbTone.Selected.Value & " tone to the following email: " & txtEmailInput.Text,

  {

  n: 1,

  best_of: 1,

  max_tokens: 100,

  temperature: 1,

   frequency_penalty: 0,

  presence_penalty: 0

  }

  )

  }

);

 

Denne formelen vil lagre svaret i vår variabel locReply. Det som mangler da er å sette Text Input boksen fra tidligere til å vise svaret. Gå til txtReplyText kontrollen og sett Default property til

First(locReply.choices.text).text

Dette vil hente ut første svaret fra ChatGPT og vise det i tekst feltet. I vårt tilfelle vil vi bare få et svar og da er det dette som vil vises.

Da er vi klar til å teste. Kjør Power App’en og lim in e-posten i venstre tekst felt. Du kan teste med denne e-post teksten:

 

Hi James,

We would like to invite you to our webinar the Wednesday 25 January to learn more about Power Platform and low-code. If you would like to attend please reply to this e-mail with your name and the words “Yes, I would like to attend your webinar on Power Platform”

Hope to see you there.

Best regards,

Austin Powers

 

Klikk på Generate Reply knappen, vent litt og se svaret fra ChatGPT.

Svar fra ChatGPT

 

Etter litt pynting og justering så kan applikasjonen se slik ut:

AI email Reply app

 

Nå kan vi teste litt og be om forskjellig type svar. Her er et eksempel når vi ber om et sint svar:

Sint AI svar
Sint AI svar

Eller hva med et sarkastisk svar:

Sarkastisk svar
Sarkastisk svar

Her er det bare å prøve seg frem 😊

ChatGPT kan også Norsk så det er fullt mulig å spørre på Norsk og få svar på Norsk.

Applikasjonen kan selvsagt utvides til å vise e-post fra din Outlook direkte slik at du slipper å lime den inn her, men nå har vi vist hvor lett det er å komme i gang med ChatGPT sammen med Microsoft Power Platform.