Utiliser des modèles AI Builder dans Power Apps

Avec l’utilisation de Power Fx, les formules low-code open source, vous pouvez ajouter des intégrations plus puissantes et flexibles de modèles IA dans votre Power App. Les formules de prédiction du modèle IA peuvent être intégrées à tous les contrôles de l’application canevas. Par exemple, vous pouvez détecter la langue du texte dans un contrôle de saisie de texte et sortir les résultats dans un contrôle d’étiquette comme on peut le voir dans la section Utiliser un modèle avec des contrôles ci-dessous.

Conditions préalables

Pour utiliser Power Fx dans les modèles AI Builder, vous devez avoir :

Sélectionner un modèle dans les applications canevas

Pour utiliser un modèle IA avec Power Fx, vous devrez créer une application canevas, choisir un contrôle et attribuer des expressions aux propriétés de contrôle.

Note

Pour une liste des modèles AI Builder que vous pouvez consommer, voir Modèles IA et scénarios professionnels. Vous pouvez également utiliser des modèles intégrés à Microsoft Azure Machine Learning avec la fonctionnalité Apportez votre propre modèle.

  1. Créez une application. Pour plus d’information : Créer une application de canevas à partir de zéro.

  2. Sélectionnez Données>Ajouter des données>Modèles IA.

    Capture d’écran de la façon de sélectionner votre modèle.

  3. Sélectionnez un ou plusieurs modèles à ajouter.

    Si vous ne voyez pas votre modèle dans cette liste, vous n’êtes peut-être pas autorisé à l’utiliser dans Power Apps. Contactez votre administrateur pour résoudre le problème.

Utiliser un modèle dans les contrôles

Maintenant que vous avez ajouté le modèle AI à votre application canevas, voyons comment appeler un modèle AI Builder à partir d’un contrôle.

Dans l’exemple suivant, nous allons créer une application capable de détecter la langue saisie par un utilisateur dans l’application.

  1. Créez une application. Pour plus d’information : Créer une application de canevas à partir de zéro.

  2. Sélectionnez Données>Ajouter des données>Modèles IA.

  3. Recherchez et sélectionnez le modèle IA Détection de la langue.

    Capture d’écran du modèle de détection de langue.

    Note

    Vous devrez à nouveau ajouter manuellement le modèle à l’application dans le nouvel environnement lors du déplacement de l’application dans divers environnements.

  4. Sélectionnez + dans le volet gauche, puis le contrôle Saisie de texte.

  5. Répétez l’étape précédente pour ajouter un contrôle Étiquette de texte.

  6. Renommez l’étiquette de texte par Langue.

  7. Ajoutez une autre étiquette de texte à côté de l’étiquette « Langue ».

    Contrôles d’application, y compris le texte et les deux contrôles d’étiquette.

  8. Sélectionnez l’étiquette de texte ajoutée à l’étape précédente.

  9. Saisissez la formule suivante dans la barre de formule pour la propriété Texte de l’étiquette de texte.

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

    L’étiquette se transforme en code de langue en fonction de vos paramètres régionaux. Pour cet exemple, fr (anglais).

    La formule de langue modifie le texte de l’étiquette.

  10. Affichez un aperçu de l’application en sélectionnant le bouton Lecture dans le coin supérieur droit de l’écran.

    Affichez l’aperçu de l’application.

  11. Dans la zone de texte, saisissez bonjour. Notez que la langue pour langue française (fr) apparaît sous la zone de texte.

    Exemple de détection de la langue française.

  12. De même, essayez d’autres textes de langue. Par exemple, saisir guten tag change la langue détectée sur de pour la langue allemande.

Bonnes pratiques

  • Essayez de déclencher le modèle prédiction à partir d’actions singulières telles que OnClick en utilisant un bouton plutôt que l’action OnChange sur une saisie de texte pour assurer une utilisation efficace des crédits AI Builder.

  • Pour économiser du temps et des ressources, enregistrez le résultat d’un appel de modèle afin de pouvoir l’utiliser à plusieurs endroits. Vous pouvez enregistrer une sortie dans une variable globale. Après avoir enregistré le résultat du modèle, vous pouvez utiliser la langue ailleurs dans votre application, par exemple, pour afficher la langue identifiée et son score de confiance dans deux libellés différents.

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

Entrée et sortie par type de modèle

Cette section fournit des entrées et des sorties pour les modèles personnalisés et prédéfinis par type de modèle.

Modèles personnalisés

Type de modèle Syntaxe Sortie
Classification par catégorie 'Custom text classification model name'.Predict(Text: String, Language?: Optional String) {AllClasses: {Name: String, Confidence: Number}[],TopClass: {Name: String,Confidence: Number}}
Extraction d'entités '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, }]}
Détection d’objet 'Custom object detection model name'.Predict(Image: Image) { Objects: { Name: String, Confidence: Number, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }}[]}

Modèles prédéfinis

Note

Les noms de modèles prédéfinis sont affichés dans les paramètres régionaux de votre environnement. Les exemples suivants montrent les noms de modèles pour la langue anglaise (en).

Type de modèle Syntaxe Sortie
Lecteur de carte de visite ‘Business card reader’.Predict( Document: Base64 encoded image ) { Fields: { FieldName: { FieldType: "text", Value: { Text: String, BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number }}}}}
Classification par catégorie 'Category classification'.Predict( Text: String,Language?: Optional String, ) { AllClasses: { Name: String, Confidence: Number }[], TopClass: { Name: String, Confidence: Number }}
Lecteur de documents d’identité ‘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 }}}}}
Traitement de factures ‘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 } } } }[] } }}
Extraction de phrases clés 'Key phrase extraction'.Predict(Text: String, Language?: Optional String)) { Phrases: String[]}
Détection de langue 'Language Detection'.Predict(Text: String) { Language: String, Confidence: Number}
Traitement de reçus ‘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 } } } }[] } } }
Analyse des sentiments '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 } }[]}
Reconnaissance de texte 'Text recognition'.Predict( Document: Base64 encoded image) {Pages: {Page: Number,Lines: { Text: String, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }, Confidence: Number }[] }[]}
Traduction de texte 'Text translation'.Predict( Text: String, TranslateTo?: String, TranslateFrom?: String) { Text: String, // Translated text DetectedLanguage?: String, DetectedLanguageConfidence: Number} }

Examples

Chaque modèle est invoqué à l’aide du verbe predict. Par exemple, un modèle de détection de langue prend du texte en entrée et renvoie une table des langues possibles, classées par le score de cette langue. Le score indique le degré de confiance du modèle avec sa prédiction.

Entrée Sortie
'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 } } ] }

Voir aussi