Utilizar modelos do AI Builder no Power Apps

Com a utilização do Power Fx, as fórmulas de pouco código open source, pode adicionar integrações mais poderosas e flexíveis de modelos de IA à sua Aplicação do Power Apps. As fórmulas de predição do modelo de IA podem ser integradas com quaisquer controlos na aplicação de tela. Por exemplo, pode detetar o idioma do texto num controlo text input e a saída de resultados para um controlo label, como pode ser visto na secção Utilizar um modelo com controlos abaixo.

Requisitos

Para utilizar o Power Fx em modelos do AI Builder, tem de ter:

Selecionar um modelo na aplicação de tela

Para consumir um modelo de IA com o Power Fx, terá de criar uma aplicação de tela, escolher um controlo e atribuir expressões para controlar as propriedades.

Nota

Para obter uma lista dos modelos do AI Builder que pode consumir, consulte Modelos de IA e cenários de negócio. Também pode consumir modelos criados em Machine Learning do Microsoft Azure com a funcionalidade trazer o seu próprio modelo.

  1. Criar uma aplicação. Mais informações: Criar uma aplicação de tela em branco a partir do zero.

  2. Selecione Dados>Adicionar dados>Modelos de IA.

    Captura de ecrã sobre como selecionar o seu modelo.

  3. Selecione um ou mais modelos a adicionar.

    Se não vir o seu modelo na lista, poderá não ter permissões para o utilizar no Power Apps. Contacte o seu administrador para resolver este problema.

Utilizar um modelo com controlos

Agora que adicionou o modelo de IA à sua aplicação de tela, vejamos como chamar um modelo do AI Builder a partir de um controlo.

No exemplo que segue iremos criar uma aplicação que pode detetar o idioma introduzido por um utilizador na aplicação.

  1. Criar uma aplicação. Mais informações: Criar uma aplicação de tela em branco a partir do zero.

  2. Selecione Dados>Adicionar dados>Modelos de IA.

  3. Pesquise por e selecione o modelo de IA Deteção de idioma.

    Captura de ecrã do modelo de deteção de idioma.

    Nota

    Terá de adicionar manualmente o modelo à aplicação novamente no novo ambiente aquando da mudança da aplicação entre ambientes.

  4. Selecione + no painel esquerdo e, em seguida, selecione o controlo Text input.

  5. Repita o passo anterior para adicionar um controlo Text label.

  6. Mude o nome da etiqueta de texto para Idioma.

  7. Adicione outra etiqueta de texto junto da etiqueta "Idioma".

    Controlos da aplicação, incluindo de texto e ambos os controlos da etiqueta.

  8. Selecione a etiqueta de texto adicionada no passo anterior.

  9. Introduza a seguinte fórmula na barra de fórmulas para a propriedade Text da etiqueta de texto.

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

    A etiqueta muda para o código de idioma com base na sua região. Por este exemplo, en (inglês).

    A fórmula do idioma muda o texto da etiqueta.

  10. Pré-visualize a aplicação selecionando o botão Reproduzir no canto superior direito do ecrã.

    Pré-visualização da aplicação.

  11. Na caixa de texto, introduza bonjour. Note que o idioma para o idioma francês (fr) aparece abaixo da caixa de texto.

    Exemplo de deteção de idioma francês.

  12. Da mesma forma, experimente texto noutro idioma. Por exemplo, a entrada guten tag altera o idioma detetado para de para o idioma alemão.

Melhores práticas

  • Tente acionar a predição de modelos a partir de ações singulares, tal como OnClick utilizando um botão, em vez da ação OnChange numa entrada de texto, para assegurar a utilização eficiente de créditos do AI Builder.

  • Para poupar tempo e recursos, guarde o resultado de uma chamada de modelo para poder utilizá-lo em várias localizações. Poderá guardar uma saída numa variável global. Depois de guardar o resultado do modelo, poderá utilizar o idioma noutros lugares da sua aplicação para mostrar o idioma identificado e a sua classificação de confiança em duas etiquetas diferentes.

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

Entrada e saída por tipo de modelo

Esta secção fornece as entradas e as saídas para os modelos personalizados e pré-criados por tipo de modelo.

Modelos personalizados

Tipo de modelo Sintaxe Saída
Classificação de categoria 'Custom text classification model name'.Predict(Text: String, Language?: Optional String) {AllClasses: {Name: String, Confidence: Number}[],TopClass: {Name: String,Confidence: Number}}
Extração 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, }]}
Deteção 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 pré-criados

Nota

Os nomes de modelo pré-criados são mostrados na região do ambiente. Os exemplos seguintes mostram os nomes dos modelos para o idioma inglês (en).

Tipo de modelo Sintaxe Saída
Business card reader ‘Business card reader’.Predict( Document: Base64 encoded image ) { Fields: { FieldName: { FieldType: "text", Value: { Text: String, BoundingBox: { Top: Number, Left: Number, Height: Number, Width: Number }}}}}
Classificação de categoria 'Category classification'.Predict( Text: String,Language?: Optional String, ) { AllClasses: { Name: String, Confidence: Number }[], TopClass: { Name: String, Confidence: Number }}
Leitor de documentos de identidade ‘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 }}}}}
Processamento de faturas ‘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 } } } }[] } }}
Extração de expressões-chave 'Key phrase extraction'.Predict(Text: String, Language?: Optional String)) { Phrases: String[]}
Deteção de idioma 'Language Detection'.Predict(Text: String) { Language: String, Confidence: Number}
Processamento 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álise de sentimento '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 } }[]}
Reconhecimento 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 }[] }[]}
Tradução de texto 'Text translation'.Predict( Text: String, TranslateTo?: String, TranslateFrom?: String) { Text: String, // Translated text DetectedLanguage?: String, DetectedLanguageConfidence: Number} }

Exemplos

Todos os modelos são invocados através do verbo prever. Por exemplo, um modelo de deteção de idioma assume o texto como uma entrada e devolve uma tabela dos possíveis idiomas, ordenados pela classificação desse idioma. A classificação indica o grau de confiança do modelo com a respetiva predição.

Entrada Saída
'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 } } ] }