Power Apps에서 AI Builder 모델 사용

오픈 소스 로우 코드 공식인 Power Fx를 사용하여 Power App에 AI 모델의 보다 강력하고 유연한 통합을 추가할 수 있습니다. AI 모델 예측 수식은 캔버스 앱의 모든 컨트롤과 통합할 수 있습니다. 예를 들어, 아래의 컨트롤을 통해 모델 사용 섹션에서 볼 수 있는 것처럼 텍스트 입력 컨트롤에서 텍스트 언어를 감지하고 결과를 레이블 컨트롤에 출력할 수 있습니다.

요구 사항

AI Builder 모델에서 Power Fx를 사용하려면 다음을 가지고 있어야 합니다.

캔버스 앱에서 모델 선택

Power Fx로 AI 모델을 사용하려면 캔버스 앱을 만들고 컨트롤을 선택하고 컨트롤 속성에 표현식을 할당해야 합니다.

노트

사용할 수 있는 AI Builder 모델 목록을 보려면 AI 모델 및 비즈니스 시나리오를 참조하십시오. Microsoft Azure 기계 학습에 내장된 모델을 사용할 수도 있습니다. 모델 가져오기 기능을 사용하면 됩니다.

  1. 앱 만들기. 추가 정보: 처음부터 캔버스 앱 만들기

  2. 데이터>데이터 추가>AI 모델을 선택합니다.

    모델 선택 방법의 스크린샷.

  3. 추가할 모델을 하나 이상 선택하세요.

    목록에 모델이 표시되지 않으면 Power Apps에서 해당 모델을 사용할 권한이 없을 수 있습니다. 관리자에게 문의하여 이 문제를 해결하세요.

컨트롤을 통해 모델 사용

캔버스 앱에 AI 모델을 추가했으므로 이제 컨트롤에서 AI Builder 모델을 호출하는 방법을 살펴보겠습니다.

다음 예에서는 앱에서 사용자가 입력한 언어를 감지할 수 있는 앱을 빌드합니다.

  1. 앱 만들기. 추가 정보: 처음부터 캔버스 앱 만들기

  2. 데이터>데이터 추가>AI 모델을 선택합니다.

  3. 언어 감지 AI 모델을 검색하여 선택합니다.

    언어 감지 모델의 스크린샷.

    노트

    환경 간에 앱을 이동할 때 새 환경에서 앱에 모델을 수동으로 다시 추가해야 합니다.

  4. 왼쪽 창에서 +를 선택한 다음 Text input 컨트롤을 선택합니다.

  5. Text label 컨트롤을 추가하려면 이전 단계를 반복합니다.

  6. 텍스트 레이블의 이름을 언어로 바꿉니다.

  7. "언어" 레이블 옆에 다른 텍스트 레이블을 추가합니다.

    텍스트 및 두 레이블 컨트롤을 포함한 App 컨트롤.

  8. 이전 단계에서 추가한 텍스트 레이블을 선택합니다.

  9. 텍스트 레이블의 Text 속성에 대한 수식 입력줄에 다음 수식을 입력합니다.

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

    레이블은 로캘에 따라 언어 코드로 변경됩니다. 이 예에서는 en(영어)입니다.

    언어 수식은 레이블 텍스트를 변경합니다.

  10. 화면 오른쪽 상단에서 재생 버튼을 선택하여 앱을 미리 봅니다.

    앱 미리 보기

  11. 텍스트 상자에 bonjour를 입력합니다. 프랑스어 언어(fr)가 텍스트 상자 아래에 나타납니다.

    프랑스어 언어 감지의 예.

  12. 마찬가지로 다른 언어 텍스트를 사용해 보십시오. 예를 들어 guten tag을 입력하면 감지된 언어가 독일어의 경우 de로 변경됩니다.

모범 사례

  • AI Builder 크레딧을 효율적으로 사용하려면 텍스트 입력에서 OnChange 작업 대신 버튼을 사용하여 OnClick과 같은 단일 작업에서 모델 예측을 트리거해 보십시오.

  • 시간과 리소스를 절약하려면 모델 호출 결과를 저장하여 여러 곳에서 사용할 수 있습니다. 출력을 전역 변수에 저장할 수 있습니다. 모델 결과를 저장한 후 앱의 다른 위치에서 언어를 사용하여 식별된 언어와 해당 신뢰도 점수를 두 개의 다른 레이블로 표시할 수 있습니다.

    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’.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 }}
ID 문서 판독기 ‘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} }

모든 모델은 예측 동사를 사용하여 호출됩니다. 예를 들어, 언어 감지 모델은 텍스트를 입력으로 받아 해당 언어의 점수에 따라 정렬된 가능한 언어 테이블을 반환합니다. 점수는 모델이 예측에 대해 얼마나 확신하는지 나타냅니다.

입력 출력
'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 } } ] }

참조 항목