AI Builder-modellen in Power Apps gebruiken

Met gebruik van Power Fx, de open-source low-code formules kunt u krachtigere en flexibelere integraties van AI-modellen toevoegen aan uw Power App. Voorspellingsformules van AI-modellen kunnen worden geïntegreerd met alle besturingselementen in de canvas-app. U kunt bijvoorbeeld de taal van tekst detecteren in een besturingselement voor tekstinvoer en de resultaten uitvoeren naar een labelbesturingselement, zoals te zien is in het gedeelte Een model met besturingselementen gebruiken hieronder.

Vereisten

Als u Power Fx in AI Builder-modellen wilt gebruiken, moet u:

Een model in canvas-apps selecteren

Als u een AI-model met Power Fx wilt gebruiken, moet u een canvas-app maken, een besturingselement kiezen en expressies aan eigenschappen van het besturingselement toewijzen.

Notitie

Zie voor een lijst met AI Builder-modellen die u kunt gebruiken AI-modellen en bedrijfsscenario's. U kunt ook modellen gebruiken die in Microsoft Azure Machine Learning zijn geïntegreerd met de functie Uw eigen AI-model meenemen.

  1. Een app maken. Meer informatie: Een nieuwe lege canvas-app maken.

  2. Selecteer Gegevens>Gegevens toevoegen>AI-modellen.

    Schermopname van het selecteren van uw model.

  3. Selecteer een of meer modellen die u wilt toevoegen.

    Als u uw model niet in de lijst ziet, hebt u mogelijk geen toestemming om het model in Power Apps te gebruiken. Neem contact op met uw beheerder om dit probleem op te lossen.

Een model met besturingselementen gebruiken

Nu u het AI-model aan uw canvas-app hebt toegevoegd, gaan we eens kijken hoe u een AI Builder-model vanuit een besturingselement kunt aanroepen.

In het volgende voorbeeld bouwen we een app die de taal kan detecteren die door een gebruiker in de app is ingevoerd.

  1. Een app maken. Meer informatie: Een nieuwe lege canvas-app maken.

  2. Selecteer Gegevens>Gegevens toevoegen>AI-modellen.

  3. Zoek naar en selecteer Taaldetectie.

    Schermopname van model voor taaldetectie.

    Notitie

    U moet het model handmatig opnieuw toevoegen aan de app in de nieuwe omgeving bij het verplaatsen van de app in omgevingen.

  4. Selecteer + in het linkerdeelvenster en selecteer vervolgens het besturingselement Tekstinvoer.

  5. Herhaal de vorige stap om een Tekstlabel-besturingselement toe te voegen.

  6. Wijzig de naam van het tekstlabel in Taal.

  7. Voeg nog een tekstlabel toe naast het label 'Taal'.

    App-besturingselementen met tekst en beide labelbesturingselementen.

  8. Selecteer het tekstlabel dat is toegevoegd in de vorige stap.

  9. Voer de volgende formule op de formulebalk in voor de eigenschap Tekst van het tekstlabel.

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

    Het label verandert in de taalcode op basis van uw landinstelling. Voor dit voorbeeld en (Engels).

    Taalformule verandert de labeltekst.

  10. Bekijk een voorbeeld van de app door de knop Afspelen in de rechterbovenhoek van het scherm te selecteren.

    Bekijk een voorbeeld van de app.

  11. Voer bonjour in het tekstvak in. U ziet dat de taal voor de Franse taal (fr) onder het tekstvak verschijnt.

    Voorbeeld van Franse taaldetectie.

  12. Probeer op dezelfde manier tekst in een andere taal. Als u bijvoorbeeld guten tag invoert, verandert de gedetecteerde taal in de voor de Duitse taal.

Aanbevolen procedures

  • Probeer modelvoorspelling te activeren vanuit enkelvoudige acties zoals OnClick met een knop in plaats van de actie OnChange in een tekstinvoer om efficiënt gebruik van AI Builder-tegoeden te garanderen.

  • Om tijd en middelen te besparen, slaat u het resultaat van een modelaanroep op zodat u dit op meerdere plaatsen kunt gebruiken. U kunt uitvoer opslaan in een globale variabele. Nadat u het modelresultaat hebt opgeslagen, kunt u de taal ergens anders in uw app gebruiken, bijvoorbeeld om de geïdentificeerde taal en de betrouwbaarheidsscore in twee verschillende labels weer te geven.

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

Invoer en uitvoer per modeltype

Deze sectie biedt invoer en uitvoer voor aangepaste en vooraf samengestelde modellen per modeltype.

Aangepaste modellen

Modeltype Syntaxis Uitvoer
Categorieclassificatie 'Custom text classification model name'.Predict(Text: String, Language?: Optional String) {AllClasses: {Name: String, Confidence: Number}[],TopClass: {Name: String,Confidence: Number}}
Extractie van entiteiten '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, }]}
Objectdetectie 'Custom object detection model name'.Predict(Image: Image) { Objects: { Name: String, Confidence: Number, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }}[]}

Vooraf samengestelde modellen

Notitie

Vooraf gemaakte modelnamen worden weergegeven in de landinstelling van uw omgeving. De volgende voorbeelden tonen de modelnamen voor de Engelse taal (en).

Modeltype Syntaxis Uitvoer
Visitekaartjeslezer ‘Business card reader’.Predict( Document: Base64 encoded image ) { Fields: { FieldName: { FieldType: "text", Value: { Text: String, BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number }}}}}
Categorieclassificatie 'Category classification'.Predict( Text: String,Language?: Optional String, ) { AllClasses: { Name: String, Confidence: Number }[], TopClass: { Name: String, Confidence: Number }}
Lezer van identiteitsdocumenten ‘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 }}}}}
Factuurverwerking ‘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 } } } }[] } }}
Sleuteltermextractie 'Key phrase extraction'.Predict(Text: String, Language?: Optional String)) { Phrases: String[]}
Taaldetectie 'Language Detection'.Predict(Text: String) { Language: String, Confidence: Number}
Verwerking van aankoopbewijzen ‘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 } } } }[] } } }
Gevoelsanalyse '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 } }[]}
Tekstherkenning 'Text recognition'.Predict( Document: Base64 encoded image) {Pages: {Page: Number,Lines: { Text: String, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }, Confidence: Number }[] }[]}
Vertalen van tekst 'Text translation'.Predict( Text: String, TranslateTo?: String, TranslateFrom?: String) { Text: String, // Translated text DetectedLanguage?: String, DetectedLanguageConfidence: Number} }

Voorbeelden

Elk model wordt aangeroepen met het werkwoord voorspellen. Een taaldetectiemodel neemt bijvoorbeeld tekst als invoer en retourneert een tabel met mogelijke talen, geordend op de score van die taal. De score geeft aan hoe betrouwbaar het model is met de voorspelling.

Invoer Uitvoer
'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 } } ] }

Zie ook