Använda AI Builder-modeller i Power Apps

Med hjälp av Power Fx lågkodsformel med öppen källkod kan du lägga till kraftfullare och flexiblare integreringar av AI-modeller i Power App. Prediktionsformler med AI-modeller kan integreras med alla kontroller i arbetsyteappen. Du kan till exempel identifiera språket i texten i en textinmatningskontroll och mata ut resultatet till en etikettkontroll, vilket du kan se i avsnittet Använd en modell med kontroller nedan.

Behov

För att kunna använda Power Fx i AI Builder-modeller måste du ha:

Välja en modell i arbetsyteappar

För att kunna använda en AI-modell med Power Fx måste du skapa en arbetsyteapp, välja en kontroll och tilldela uttryck till kontrollegenskaperna.

Kommentar

En lista med AI Builder-modeller som du kan använda finns på AI-modeller och affärsscenarier. Du kan också använda modeller som är byggda i Microsoft Azure Machine Learning med funktionen ta med din egen modell.

  1. Skapa en app. Mer information: Skapa en tom arbetsyteapp från grunden.

  2. Välj Data>Lägg till data>AI-modeller.

    Skärmbild på hur du väljer modell.

  3. Välj en eller flera modeller som ska läggas till.

    Om modellen inte visas i den här listan kanske du inte har behörighet att använda den i Power Apps. Kontakta administratören för att åtgärda problemet.

Använda i en modell i kontroller

Nu när du har lagt till AI-modellen i arbetsyteappen ser du hur du anropar en AI Builder-modell från en kontroll.

I följande exempel bygger vi en app som kan identifiera språket som användaren har angett i appen.

  1. Skapa en app. Mer information: Skapa en tom arbetsyteapp från grunden.

  2. Välj Data>Lägg till data>AI-modeller.

  3. Sök efter och välj en AI-modell för språkidentifiering.

    Skärmbild av modell för språkidentifiering.

    Kommentar

    Du måste manuellt lägga till modellen i appen igen i den nya miljön när du flyttar appen mellan miljöer.

  4. Välj + i det vänstra fönstret och välj kontrollen Textinmatning.

  5. Upprepa föregående steg om du vill lägga till en kontroll för textetikett.

  6. Byt namn på textetiketten till Språk.

  7. Lägg till en annan textetikett bredvid etiketten Språk.

    Appkontroller med text och båda etikettkontrollerna.

  8. Välj textetiketten som lades till i föregående steg.

  9. Ange följande formel i formelfältet för textetikettens egenskap Text.

    'Language detection'.Predict(TextInput1.Text).Language
    

    Etiketten ändras till språkkoden baserat på språkspråket. I detta exempel en (engelska).

    Språkformeln ändrar etikettexten.

  10. Förhandsgranska appen genom att välja knappen Spela upp längst upp till höger på skärmen.

    Förhandsgranska appen.

  11. Ange i textrutan bonjour. Observera att språket för franska språket (fr) visas nedanför textrutan.

    Exempel på språkidentifiering på franska.

  12. På samma sätt kan du prova annan språktext. Du kan till exempel ange guten tag ändringar i det identifierade språket till de för tyska.

Regelverk

  • Prova att utlösa prediktion från åtgärder som OnClick med en knapp i stället för OnChange-åtgärden i en textinmatning för att säkerställa en effektiv användning av AI Builder-krediter.

  • Spara tid och resurser genom att spara resultatet av ett modellanrop så att du kan använda det på flera platser. Du kan spara utdata i en global variabel. När du har sparat modellresultatet kan du använda språket i andra delar av appen för att visa det identifierade språket och dess konfidenspoäng på två olika etiketter.

    Set(lang, 'Language detection'.Predict("bonjour").Language)
    

Indata och utdata efter modelltyp

Det här avsnittet innehåller indata och utdata för anpassade och färdiga modeller efter modelltyp.

Anpassade modeller

Modelltyp Syntax Utdata
Kategoriklassificering 'Custom text classification model name'.Predict(Text: String, Language?: Optional String) {AllClasses: {Name: String, Confidence: Number}[],TopClass: {Name: String,Confidence: Number}}
Entitetsextrahering 'Custom entity extraction model name’.Predict(Text: String,Language?:String(Optional)) {Entities:[{Type: "name",Value: "Bill", StartIndex: 22, Length: 4, Confidence: .996, }, { Type: "name", Value: "Gwen", StartIndex: 6, Length: 4, Confidence: .821, }]}
Objektidentifiering 'Custom object detection model name'.Predict(Image: Image) { Objects: { Name: String, Confidence: Number, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }}[]}

Inbyggda modeller

Kommentar

Fördefinierade modellnamn visas i miljöns språkmiljöer. I följande exempel visas modellnamnen för engelska (en).

Modelltyp Syntax Utdata
Visitkortsläsare ‘Business card reader’.Predict( Document: Base64 encoded image ) { Fields: { FieldName: { FieldType: "text", Value: { Text: String, BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number }}}}}
Kategoriklassificering 'Category classification'.Predict( Text: String,Language?: Optional String, ) { AllClasses: { Name: String, Confidence: Number }[], TopClass: { Name: String, Confidence: Number }}
ID-handlingsläsare ‘Identity document reader’.Predict( Document: Base64 encoded image ) { Context: { Type: String, TypeConfidence: Number }, Fields: { FieldName: { FieldType: "text", Confidence: Number, Value: { Text: String, BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number }}}}}
Fakturabearbetning ‘Invoice processing’.Predict( Document: Base64 encoded image ) { Fields: { FieldName: { FieldType: "text" | "date" | "number", Confidence: Number,Value: { Text: String, [Date: Date] | [Number: Number], BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number } } } }, Tables: { Items: { Rows: { FieldName: { FieldType: "text" | "date" | "number", Confidence: Number, Key: { Name: String, }, Value: { Text: String, [Date: Date] | [Number: Number], BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number } } } }[] } }}
Extrahering av diskussionsämne 'Key phrase extraction'.Predict(Text: String, Language?: Optional String)) { Phrases: String[]}
Språkidentifiering 'Language Detection'.Predict(Text: String) { Language: String, Confidence: Number}
Kvittobearbetning ‘Receipt processing’.Predict( Document: Base64 encoded image) { Context: { Type: String, TypeConfidence: Number }, Fields: { FieldName: { FieldType: "text" | "date" | "number", Confidence: Number, Value: { Text: String, [Date: Date] | [Number: Number], BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number } } } }, Tables: {Items: {Rows: {FieldName: { FieldType: "text" | "date" | "number", Confidence: Number, Key: { Name: String, }, Value: { Text: String, [Date: Date] | [Number: Number], BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number } } } }[] } } }
Sentimentanalys 'Sentiment analysis'.Predict( Text: String, Language?: Optional String ) { Document: { AllSentiments: [ { Name: "Positive", Confidence: Number }, { Name: "Neutral", Confidence: Number }, { Name: "Negative", Confidence: Number } ], TopSentiment: { Name: "Positive" | "Neutral" | "Negative", Confidence: Number } } Sentences: { StartIndex: Number, Length: Number, AllSentiments: [ { Name: "Positive", Confidence: Number }, { Name: "Neutral", Confidence: Number }, { Name: "Negative", Confidence: Number } ], TopSentiment: { Name: "Positive" | "Neutral" | "Negative", Confidence: Number } }[]}
Textidentifiering 'Text recognition'.Predict( Document: Base64 encoded image) {Pages: {Page: Number,Lines: { Text: String, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }, Confidence: Number }[] }[]}
Textöversättning 'Text translation'.Predict( Text: String, TranslateTo?: String, TranslateFrom?: String) { Text: String, // Translated text DetectedLanguage?: String, DetectedLanguageConfidence: Number} }

Exempel

Alla modeller anropas med verbet förutse. En språkidentifieringsmodell använder till exempel text som indata och returnerar en tabell med möjliga språk, sorterade efter språkets poäng. Poängen visar hur säker modellen är på sin prediktion.

Indata Utdata
'Language detection'.Predict("bonjour") { Language: “fr”, Confidence: 1}
‘Text Recognition’.Predict(Image1.Image) { Pages: [ {Page: 1, Lines: [ { Text: "Contoso account", BoundingBox: { Left: .15, Top: .05, Width: .8, Height: .10 }, Confidence: .97 }, { Text: "Premium service", BoundingBox: { Left: .15, Top: .20, Width: .8, Height: .10 }, Confidence: .96 }, { Text: "Paid in full", BoundingBox: { Left: .15, Top: .35, Width: .8, Height: .10 }, Confidence: .99 } } ] }