Usar modelos do AI Builder no Power Apps

Com o uso de Power Fx, fórmulas de código baixo e código aberto, você pode adicionar integrações mais poderosas e flexíveis de modelos de IA no Power App. As fórmulas de previsão do modelo de IA podem ser integradas a qualquer controle no aplicativo de tela. Por exemplo, você pode detectar o idioma do texto em um controle de entrada de texto e enviar os resultados para um controle de rótulo, como pode ser visto na seção Use um modelo com controles abaixo.

Requisitos

Para usar o Power Fx em modelos do AI Builder, você deve ter:

Selecionar um modelo em aplicativos de tela

Para consumir um modelo de IA com Power Fx, você precisará criar um aplicativo de tela, escolher um controle e atribuir expressões às propriedades do controle.

Nota

Para obter uma lista de modelos do AI Builder a serem consumidos, consulte Modelos de IA e cenários de negócios. Você também pode consumir modelos criados no Aprendizado de Máquina do Microsoft Azure com o recurso traga seu próprio modelo.

  1. Criar um aplicativo. Mais informações: Criar um aplicativo de tela em branco do zero.

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

    Captura de tela de como selecionar seu modelo.

  3. Selecione um ou mais modelos para adicionar.

    Se você não vir seu modelo na lista, talvez não tenha permissões para usá-lo no Power Apps. Para resolver este problema, contate o administrador.

Usar um modelo com controles

Agora que você adicionou o modelo de IA ao aplicativo de tela, vejamos como chamar um modelo do AI Builder de um controle.

No exemplo a seguir, criaremos um aplicativo que pode detectar o idioma inserido por um usuário no aplicativo.

  1. Criar um aplicativo. Mais informações: Criar um aplicativo de tela em branco do zero.

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

  3. Procure e selecione o modelo de IA de Detecção de idioma.

    Captura de tela do modelo de detecção de idioma.

    Nota

    Será necessário adicionar manualmente o modelo no aplicativo de novo no novo ambiente ao mover o aplicativo entre ambientes.

  4. Selecione + no painel esquerdo e, depois, selecione o controle Entrada de texto.

  5. Repita a etapa anterior para adicionar um controle Rótulo de texto.

  6. Renomeie o rótulo de texto como Idioma.

  7. Adicione outro rótulo de texto ao lado do rótulo "Idioma".

    Controles de aplicativos, incluindo texto e ambos os controles de rótulo.

  8. Selecione o rótulo de texto adicionado na etapa anterior.

  9. Insira a fórmula a seguir na barra de fórmulas para a propriedade Texto do rótulo de texto.

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

    O rótulo muda para o código do idioma com base na localidade. Neste exemplo, en (inglês).

    A fórmula do idioma muda o texto do rótulo.

  10. Visualize o aplicativo selecionando o botão Reproduzir no canto superior direito da tela.

    Visualize o aplicativo.

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

    Exemplo de detecção do idioma francês.

  12. Da mesma forma, tente outro texto de idioma. Por exemplo, ao inserir guten tag, você altera o idioma detectado para de referente ao idioma alemão.

Melhores práticas

  • Tente disparar o modelo de previsão de ações singulares, como OnClick, usando um botão em vez da ação OnChange em uma entrada de texto para garantir o uso eficiente de créditos do AI Builder.

  • Para economizar tempo e recursos, salve o resultado de uma chamada de modelo para que você possa usá-lo em vários lugares. Você pode salvar uma saída em uma variável global. Após salvar o resultado do modelo, você poderá usar o idioma em outro lugar no aplicativo para mostrar o idioma identificado e a pontuação de confiança em dois rótulos distintos.

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

Entrada e saída por tipo de modelo

Esta seção fornece entradas e saídas para modelos personalizados e predefinidos por tipo de modelo.

Modelos personalizados

Tipo de modelo Sintaxe Saída
Classificação de categorias '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, }]}
Detecçã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 predefinidos

Observação

Os nomes de modelos predefinidos são mostrados na localidade do seu ambiente. Os exemplos a seguir mostram os nomes de modelos para o idioma inglês (en).

Tipo de modelo Sintaxe Saída
Leitor de cartão de visita ‘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 categorias '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 frases-chave 'Key phrase extraction'.Predict(Text: String, Language?: Optional String)) { Phrases: String[]}
Detecçã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

Cada modelo é invocado usando o verbo prever. Por exemplo, um modelo de detecção de idioma usa o texto como uma entrada e retorna uma tabela de idiomas possíveis, ordenados pela pontuação desse idioma. A pontuação indica se o modelo é confiante com a previsã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 } } ] }

Confira também