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.
Para utilizar o Power Fx em modelos do AI Builder, tem de ter:
Acesso a um ambiente do Microsoft Power Platform com uma base de dados.
Licença do AI Builder (de avaliação ou paga). Para obter mais informações, aceda ao Licenciamento do AI Builder.
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.
Criar uma aplicação. Mais informações: Criar uma aplicação de tela em branco a partir do zero.
Selecione Dados>Adicionar dados>Modelos de IA.
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.
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.
Criar uma aplicação. Mais informações: Criar uma aplicação de tela em branco a partir do zero.
Selecione Dados>Adicionar dados>Modelos de IA.
Pesquise por e selecione o modelo de IA 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.
Selecione + no painel esquerdo e, em seguida, selecione o controlo Text input.
Repita o passo anterior para adicionar um controlo Text label.
Mude o nome da etiqueta de texto para Idioma.
Adicione outra etiqueta de texto junto da etiqueta "Idioma".
Selecione a etiqueta de texto adicionada no passo anterior.
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).
Pré-visualize a aplicação selecionando o botão Reproduzir no canto superior direito do ecrã.
Na caixa de texto, introduza
bonjour
. Note que o idioma para o idioma francês (fr) aparece abaixo da caixa de texto.Da mesma forma, experimente texto noutro idioma. Por exemplo, a entrada
guten tag
altera o idioma detetado para de para o idioma alemão.
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)
Esta secção fornece as entradas e as saídas para os modelos personalizados e pré-criados por tipo de modelo.
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 }}[]} |
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} } |
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 } } ] } |