この記事は2024.12.18時点の情報です。
数日後には不要になる可能性があります。
はじめに
Power Automate
とPower Apps
で非常に気軽にAIの機能が使える、それがAI Builder。
このAI Builder
では強力な生成 AI 機能Azure OpenAI Service
のGPT 4o Mini
またはGPT 4o
モデルを使用することができます。
やはり生成AIというと、このGPT
のモデルが気軽に使えるということは非常にうれしいことです。
Microsoft
はAIのガイドも豊富に提供しており、プロンプトのイロハから生成AIの活用シーンまでくまなくMicrosoft learn
で紹介しています。
事前構築されたプロンプトにより、下記はサクッと用意することができます。
- テキストの要約
- テキストから情報の抽出
- テキストの分類
- テキストの感情分析
- 苦情への応答
- テキストの匿名化と編集
- 言語の検出
- 単語の頻度分析
- テキストの種類の特定
- 2つのテキストから類似性や相違性の測定
一方で実際に **これがやりたい!**となるのは、あるデータソースからデータを照合し、回答するような機能ではないでしょうか。
いわゆるRAG(検索拡張生成)
というやつです。
独自のデータを試用した生成シナリオ
2024.12.18
では、データ オプションを利用して、Dataverse
テーブルをナレッジソースとした回答が生成できます。
Dataverse
テーブルを用いて、値を抽出し回答に使えます。
こちらの機能はPower Automate
、Power Apps
、Copilot Studio
で利用することができます。
前置きが長くなりましたが、ここからが本題です。
SharePoint Lists
やExcel
からやってみたいんだけどな・・・
と思ったそこのあなた!そうですよね!まずはそこからですよね!!
ということで挑戦的な手法を用いて、実現する方法を考えてみました!
プロンプトに表データを書き込む
超
がつくレベルの無理やりな手法ですが、プロンプトの中にテキスト
形式で表を入れてみました。
構造化されたテキスト形式の表データ
というと真っ先に思い浮かぶのはCSV
次点でMarkdown
が挙げられます。
消費するトークンが気になりますが、いったんプロンプトに全部含めて機能するか検証してみました。
カスタム プロンプト
簡単に下記のように設定してみます。
以下にテキスト形式でCSV形式で表データが記載されています。出力はHTML文字列で返してください。
{Question}
# CSVデータ
{Table}
引数とするのはQuestion - 質問
とTable - CSVテーブル
です。
結果をプレビューするのは、やはりPower Apps!!
Power Apps Loverとしてそこはゆずれません!
HTML文字列
で出力することを定義づけるため、JSON 出力を設定します。
{
"response": "HTML文字列"
}
GPTで作成したProduct
というCSVデータで試してみましょう。
Power Appsから呼び出す
今回の目的はインポートされたExcel
やExcel Online
、SharePoint Lists
を想定した読み取りです。
Power Apps
でCSV形式の文字列にかえます。
インポートされたExcel
テーブル形式にしてPower Appsにインポートします。
テキストへの変換は、Concat 関数で無理くり実施します。
$"ProductID,ProductName,Category,Price,StockQuantity,Rating,Features
{
Concat(
Product,
$"{Char(34)}{ProductID}{Char(34)},{Char(34)}{ProductName}{Char(34)},{Char(34)}{Category}{Char(34)},{Char(34)}{Price}{Char(34)},{Char(34)}{StockQuantity}{Char(34)},{Char(34)}{Rating}{Char(34)},{Char(34)}{Features}{Char(34)}{Char(10)}"
)
}"
列がハードコーディングになっていてイケてないですね。
このうち Char 関数は下記を意味しています。
-
Char(34)
:ダブルクォーテーション "
-
Char(10)
:改行
ダブルクォーテーションは引用符
としての利用です。
果たして機能するのでしょうか。
検証!
製品名を一覧化してください。
{
"response": "<ul><li>Mouse</li><li>Printer</li><li>Monitor</li><li>Router</li><li>Tablet</li><li>Keyboard</li><li>Laptop</li><li>Smartphone</li><li>Smartwatch</li><li>Earbuds</li></ul>"
}
い、意外とそれらしい!!それらしいぞぉ!
最も高価な製品とその価格を教えてください。
{
"response": "最も高価な製品は「Monitor」で、価格は1165です。"
}
プレーンテキストで返ってきました。
軽さがポイントの製品を教えてください。
Lightweight
という特長を抽出できています。
{
"response": "<table>
<tr>
<th>ProductID</th>
<th>ProductName</th>
<th>Category</th>
<th>Price</th>
<th>StockQuantity</th>
<th>Rating</th>
<th>Features</th>
</tr>
<tr>
<td>101</td>
<td>Mouse</td>
<td>Wearables</td>
<td>737</td>
<td>384</td>
<td>4.3</td>
<td>Lightweight and portable<br>High-resolution display<br>Long battery life</td>
</tr>
<tr>
<td>104</td>
<td>Router</td>
<td>Gaming</td>
<td>659</td>
<td>14</td>
<td>4.4</td>
<td>Lightweight and portable<br>High-resolution display<br>Long battery life</td>
</tr>
<tr>
<td>113</td>
<td>Laptop</td>
<td>Wearables</td>
<td>896</td>
<td>94</td>
<td>5</td>
<td>Lightweight and portable<br>High-resolution display<br>Long battery life</td>
</tr>
<tr>
<td>122</td>
<td>Laptop</td>
<td>Home Appliances</td>
<td>1206</td>
<td>263</td>
<td>3.2</td>
<td>Lightweight and portable<br>High-resolution display<br>Long battery life</td>
</tr>
<tr>
<td>148</td>
<td>Router</td>
<td>Electronics</td>
<td>1290</td>
<td>422</td>
<td>4.4</td>
<td>Lightweight and portable<br>High-resolution display<br>Long battery life</td>
</tr>
</table>"
}
Power Appsで文字列変換をかましているのでExcel Online
でもSharePoint
でも同様の結果が得られます。
SharePoint Listsの場合は
評価が高い製品をリストアップして教えてください。
ソースが長いのでキャプチャだけ出します。
おわりに
Concat 関数で変換をかましているので、そりゃあそうだと思われる方もいると思います。
しかしFAQから回答を生成したりするのに、意外と役に立ちそうです。
Power Automateではデータ操作アクションでCSV テーブルの作成が存在するため、より簡単に使えます。
結果をTeams
に投稿してみました。
AI活用 はじめの一歩に採用できればいいなーくらいです。
回りくどい方法ではあるので、活用される場合はよく吟味して採用してください。