Usar modelos de AI Builder en Power Apps
Con el uso de Power Fx, las fórmulas de código bajo de código abierto, puede agregar integraciones más poderosas y flexibles de modelos de IA en su Power App. Las fórmulas del modelo de IA predicción se pueden integrar con cualquier control en la aplicación de lienzo. Por ejemplo, puede detectar el idioma del texto en un control de entrada de texto y enviar los resultados a un control de etiqueta como se puede ver en la sección Usar un modelo con controles a continuación.
Requisitos
Para usar Power Fx en modelos de AI Builder, debe tener:
Acceso a un entorno de Microsoft Power Platform con una base de datos.
Licencia de AI Builder (de prueba o de pago). Para más información, vaya a Licencias de AI Builder.
Seleccionar un modelo en aplicaciones de lienzo
Para consumir un modelo de IA con Power Fx, deberá crear una aplicación de lienzo, elegir un control y asignar expresiones para controlar las propiedades.
Nota
Para obtener una lista de modelos de AI Builder que puede consumir, vea Modelos de IA y escenarios empresariales. También puede consumir modelos integrados en el aprendizaje automático de Microsoft Azure con la característica Trae tu propio modelo.
Crear una aplicación. Más información: Crear una aplicación de lienzo en blanco desde cero.
Seleccione Datos>Agregar datos>Modelos de IA.
Seleccione uno o más modelos para agregarlos.
Si no ve su modelo en la lista, es posible que no tenga permisos para usarlo en Power Apps. Póngase en contacto con el administrador para resolver este problema.
Usar un modelo con controles
Ahora que ha agregado el modelo de IA a su aplicación de lienzo, veamos cómo llamar a un modelo de AI Builder desde un control.
En el siguiente ejemplo, crearemos una aplicación que pueda detectar el idioma ingresado por un usuario en la aplicación.
Crear una aplicación. Más información: Crear una aplicación de lienzo en blanco desde cero.
Seleccione Datos>Agregar datos>Modelos de IA.
Busque y seleccione el modelo de IA Detección de idioma.
Nota
Tendrá que agregar manualmente el modelo a la aplicación de nuevo en el entorno nuevo tras mover la aplicación por entornos.
En el panel izquierdo, seleccione + y después el control Entrada de texto.
Repita el paso anterior para agregar un control Etiqueta de texto.
Cambie el nombre de la etiqueta de texto a Idioma.
Agregue otra etiqueta de texto junto a la etiqueta "Idioma".
Seleccione la etiqueta de texto agregada en el paso anterior.
Introduzca la siguiente fórmula en la barra de fórmulas para la propiedad Text de la etiqueta de texto.
'Language detection'.Predict(TextInput1.Text).Language
La etiqueta cambia al código de idioma según su configuración regional. En este ejemplo, en (Inglés).
Haga una vista previa de la aplicación con el botón Reproducir en la esquina superior derecha de la pantalla.
En el cuadro de texto, introduzca
bonjour
. Vea que el código del idioma francés (fr) aparece debajo del cuadro de texto.Del mismo modo, pruebe con texto en otro idioma. Por ejemplo, introducir
guten tag
cambia el idioma detectado a de para el idioma alemán.
Procedimientos recomendados
Intente activar el modelo predicción a partir de acciones singulares como OnClick utilizando un botón en lugar de la acción OnChange en una entrada de texto para asegurar el uso eficiente de créditos de AI Builder.
Para ahorrar tiempo y recursos, guarde el resultado de una llamada de modelo para usarlo en varios lugares. Puede guardar una salida en una variable global. Tras guardar el resultado del modelo, puede usar el idioma en cualquier lugar de su aplicación para mostrar el idioma identificado y su puntuación de confianza en dos etiquetas distintas.
Set(lang, 'Language detection'.Predict("bonjour").Language)
Entrada y salida por tipo de modelo
Esta sección proporciona entradas y salidas para modelos personalizados y prediseñados por tipo de modelo.
Modelos personalizados
Tipo de modelo | Sintaxis | Salida |
---|---|---|
Clasificación de categorías | 'Custom text classification model name'.Predict(Text: String, Language?: Optional String) |
{AllClasses: {Name: String, Confidence: Number}[],TopClass: {Name: String,Confidence: Number}} |
Extracción de entidades | '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, }]} |
Detección de objetos | 'Custom object detection model name'.Predict(Image: Image) |
{ Objects: { Name: String, Confidence: Number, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }}[]} |
Modelos precompilados
Nota
Los nombres de modelos predefinidos se muestran en la configuración regional de su entorno. Los siguientes ejemplos muestran los nombres de modelo para el idioma inglés (en).
Tipo de modelo | Sintaxis | Salida |
---|---|---|
Lector de tarjetas de presentación | ‘Business card reader’.Predict( Document: Base64 encoded image ) |
{ Fields: { FieldName: { FieldType: "text", Value: { Text: String, BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number }}}}} |
Clasificación de categorías | 'Category classification'.Predict( Text: String,Language?: Optional String, ) |
{ AllClasses: { Name: String, Confidence: Number }[], TopClass: { Name: String, Confidence: Number }} |
Lector de documentos de identidad | ‘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 }}}}} |
Procesamiento de facturas | ‘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 } } } }[] } }} |
Extracción de frases clave | 'Key phrase extraction'.Predict(Text: String, Language?: Optional String)) |
{ Phrases: String[]} |
Detección de idiomas | 'Language Detection'.Predict(Text: String) |
{ Language: String, Confidence: Number} |
Procesamiento de recibos | ‘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 } } } }[] } } } |
Análisis de sentimiento | '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 } }[]} |
Reconocimiento de texto | 'Text recognition'.Predict( Document: Base64 encoded image) |
{Pages: {Page: Number,Lines: { Text: String, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }, Confidence: Number }[] }[]} |
Traducción de texto | 'Text translation'.Predict( Text: String, TranslateTo?: String, TranslateFrom?: String) |
{ Text: String, // Translated text DetectedLanguage?: String, DetectedLanguageConfidence: Number} } |
Ejemplos
Cada modelo se invoca mediante la predicción de verbo. Por ejemplo, un modelo de detección de idioma toma texto como entrada y devuelve una tabla de posibles idiomas, ordenados por la puntuación de ese idioma. La puntuación indica la confianza que tiene el modelo con su predicción.
Entrada | Salida |
---|---|
'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 } } ] } |