在 Power Apps 中使用 AI Builder 模型

通过使用 Power Fx(开源低代码公式),您可以将更强大、更灵活的 AI 模型集成添加到您的 Power App 中。 AI 模型预测公式可以与画布应用中的任何控件集成。 例如,您可以检测 text input 控件中的文本语言并将结果输出到 label 控件,如下面的为控件使用模型一节所示。

要求

要使用 AI Builder 模型中的 Power Fx,您必须具有:

在画布应用中选择模型

要使用具有 Power Fx 的 AI 模型,您需要创建一个画布应用,选择一个控件,并为控件属性分配表达式。

备注

有关可以使用的 AI Builder 模型的列表,请参阅 AI 模型和业务场景。 您还可以使用引入您自己的 AI 模型功能使用 Microsoft Azure 机器学习中内置的模型。

  1. 创建应用。 详细信息:从头创建空白画布应用

  2. 选择数据>添加数据>AI 模型

    如何选择模型的屏幕截图。

  3. 选择一个或多个要添加的模型。

    如果您在列表中没有看到您的模型,有可能是您无权在 Power Apps 中使用它。 请联系您的管理员解决此问题。

为控件使用模型

现在您已将 AI 模型添加到画布应用,让我们看看如何从控件调用 AI Builder 模型。

在下面的示例中,我们将构建一个可以检测用户在应用中输入的语言的应用。

  1. 创建应用。 详细信息:从头创建空白画布应用

  2. 选择数据>添加数据>AI 模型

  3. 搜索并选择语言检测 AI 模型。

    语言检测模型的屏幕截图。

    备注

    在跨环境移动应用时,您必须在新环境中再次手动将模型添加到应用。

  4. 从左窗格中选择 +,然后选择 Text input 控件。

  5. 重复上一步骤添加 Text label 控件。

  6. 将文本标签重命名为 Language

  7. 在“语言”标签旁边添加另一个文本标签。

    包括 text 和 label 控件的应用控件。

  8. 选择上一步中添加的文本标签。

  9. 在文本标签的 Text 属性的公式栏中输入以下公式。

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

    标签会根据您的区域设置更改为语言代码。 对于此示例,是 en(英语)。

    语言公式更改标签文本。

  10. 通过选择屏幕右上角的播放按钮来预览应用。

    预览应用。

  11. 在文本框中,输入 bonjour。 注意法语语言 (fr) 将显示在文本框下方。

    法语语言检测示例。

  12. 以同样方法尝试其他语言文本。 例如,输入 guten tag 会将检测到的语言更改为德语的 de

最佳做法

  • 尝试使用按钮而不是文本输入上的 OnChange 操作从诸如 OnClick 等单一操作触发模型预测,以确保有效使用 AI Builder 积分。

  • 为了节省时间和资源,请保存模型调用的结果,以便您可以在多个位置使用。 您可以将输出保存到全局变量中。 保存模型结果后,您可以在应用的其他位置使用语言来在两个不同的标签中显示标识的语言及其置信度分数。

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

按模型类型划分的输入和输出

本节按模型类型为自定义和预生成模型提供输入和输出。

自定义模型

模型类型 语法 输出
类别分类 'Custom text classification model name'.Predict(Text: String, Language?: Optional String) {AllClasses: {Name: String, Confidence: Number}[],TopClass: {Name: String,Confidence: Number}}
实体提取 '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, }]}
对象检测 'Custom object detection model name'.Predict(Image: Image) { Objects: { Name: String, Confidence: Number, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }}[]}

预生成模型

备注

预生成模型名称显示在您环境的区域设置中。 以下示例显示了英语 (en) 的模型名称。

模型类型 语法 输出
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 }}}}}
类别分类 'Category classification'.Predict( Text: String,Language?: Optional String, ) { AllClasses: { Name: String, Confidence: Number }[], TopClass: { Name: String, Confidence: Number }}
标识文档读取器 ‘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 }}}}}
发票处理 ‘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 } } } }[] } }}
关键短语提取 'Key phrase extraction'.Predict(Text: String, Language?: Optional String)) { Phrases: String[]}
语言检测 'Language Detection'.Predict(Text: String) { Language: String, Confidence: Number}
收据处理 ‘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 } } } }[] } } }
情绪分析 '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 } }[]}
文本识别 'Text recognition'.Predict( Document: Base64 encoded image) {Pages: {Page: Number,Lines: { Text: String, BoundingBox: { Left: Number, Top: Number, Width: Number, Height: Number }, Confidence: Number }[] }[]}
文本翻译 'Text translation'.Predict( Text: String, TranslateTo?: String, TranslateFrom?: String) { Text: String, // Translated text DetectedLanguage?: String, DetectedLanguageConfidence: Number} }

示例

每个模型使用 predict 谓词调用。 例如,语言检测模型将文本作为输入并返回可能语言的表,按该语言的分数排序。 分数指示模型对其预测的置信度。

输入 输出
'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 } } ] }