Udemy 新コース: 作って学ぶPower BI!

Power Platform で作成する ChatGPT + Dataverse 検索による問い合わせ履歴 & ナレッジの横断検索 | Azure OpenAI Service

Power Platform で作成する ChatGPTを用いたDataverse の検索結果をサマリしたり、リンクを返す方法をご紹介します。

シナリオ

今回はDataverse内のナレッジ、問い合わせ履歴のデータを利用します。 自然言語でチャットで依頼した内容を元にキーワードを抽出してDataverse 検索に接続します。

その結果をサマリして返すだけではなく、出典元のリンクも一覧にして表示します。

ベースとなるアプリ

ハイパーリンクを有効化にした段階のアプリをベースとして拡張を行います。従いまして、その段階までアプリができている前提でのご紹介ですのでまだご覧頂いていない方は過去動画もご確認ください。

必要なライセンス

Power Apps Premium ライセンス

有償版のライセンスが必要となります。

ライセンスの詳細は以下の記事でも紹介しております。

【早見表で分かる】Power Apps ライセンスまとめ

参考ソースコード

こちらではポイントとなる参考ソースコードをご紹介させていただきます。

Power Automate

Power Automateでは以下のフローを作成しています。こちらのポイントとなる部分のコードを紹介します。

作成 Prompt

Power Automate
concat(
'以下の例に倣ってテキストからキーワードを抽出して、"|"区切りとしてください。
例: """RPAの請求書を検索してください。
結果: RPA|請求書"""',
triggerBody()['text'],
'結果:'
)

条件

Power Automate
length(outputs('行の検索_(プレビュー)')?['body/value'])

文字列変数に追加

Power Automate
<a href='https://xxxx.crm7.dynamics.com/main.aspx?appid=55555-9461-ed11-9562-dddddd55555&pagetype=entityrecord&etn=@{items('Apply_to_each')?['@search.entityname']}&id=@{items('Apply_to_each')?['@search.objectid']}'>種類:@{if(equals(item()?['@search.entityname'], 'geek_case'), '問い合わせ', 'ナレッジ')} | タイトル:@{items('Apply_to_each')?['geek_title']}</a><br>
@{if(equals(item()?['@search.entityname'], 'geek_case'), item()?['geek_body'], item()?['geek_contents'])}<br>
<br>

Power Apps

送信アイコンのOnSelect プロパティに以下の通り記述します。Dropdown2というのはsearch modeを切り替えるコントロール名ですので必要に応じて修正してください。

Power Fx
// Power Automate への連携
Set(_reply, 
    Switch(Dropdown2.Selected.Value,
        "社内検索", SearchInternalDocsGPT.Run(MessageBox.Text).reply, 
        "一般知識", AzureOpenAI_GPT35Tフロー.Run(
            JSON(_messages), 
            Dropdown1.Selected.Value, 
            tempertureSlider1.Value/10,
            maxtokensSlider1.Value
        ).reply,
        "Dataverse", AzureOpenAI検索結果要約.Run(MessageBox.Text).reply)
);

2 COMMENTS

ハチ

はじめまして!
ご紹介頂いている手順を活用して、ChatGPTで生成した単語を使って行の検索をし、結果をPowerAppsアプリに渡すシステムを構築しています。行の検索をする際に特定の列を検索対象としたいのですが、うまく行かず詰まってしまっています。なにか有効な方法があればお教えいただきたいです。よろしくお願いいたします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index