はじめに
稟議書のレビューをする際、既存のレビュー観点が整理されており、そちらを基にチェック、レビューを行うような業務があると思います。
それ以外にも、整理されている社内の用語集のようなものを基に、ドキュメントをチェック、レビューするような業務もあると思います。
このような業務について、AI を利用することで、テンプレートや規約に従って自動的に不備を見つけたり指摘してくれたりするため、チェック漏れ・ヒューマンエラーの減少、レビュー工数の大幅な削減等につながります。
もちろん、ChatGPT や Copilot を介して以下のように都度依頼をするのもよいかと思います。
しかし、レビュー観点の内容が定期的にアップデートされ、また、複数の人が同じ行う場合、Excel ファイルを全員に共有して、プロンプトに都度最新のファイルをアップした上で依頼する必要があるため、少し手間がかかるかもしれません。
それ以外にも、案件次第では、レビュー観点の資料の中の一部のカテゴリーのみチェックしたいような場合、カテゴリーに関する列名やカテゴリー名をプロンプトで指定する必要があり、こちらの観点でも少し手間がかかるかもしれません。
このような場合、レビュー観点を SharePoint リストなど、構造化されたクラウド上のサービスに保存してそちらでアップデートするようにして、Power Apps と AI Builder を使うのがよいかと思います。
今回はこちらのアプローチについて紹介します。
プロンプト側
作成するプロンプトは非常にシンプルです。以下のような感じです。今回は、稟議書の情報は一旦 OCR でテキスト化した上で渡すようにしていますが、直接ファイルアップロードでもよいと思います。
レビュー観点は SharePoint リストから取ってきて渡すようにします。
もちろん、レビュー観点のテキストをプロンプトに保存しておくこともできますが、上述の通り、一部の観点だけチェックしたいようなときには不向きですし、レビュー観点のメンテナンスもしにくいです。
Power Apps 側
Power Apps 側もシンプルです。
まず、レビュー観点の処理は、SharePoint リストのデータを必要に応じてカテゴリーでフィルターして、その結果のレビュー観点が記載されている列のテキストを Concat 関数で結合します。
レビュー観点のリストから情報を検索する場合、データソースのインデックスのクオリティ次第では必要なレビュー観点の情報が取得できず、結果としてレビュー精度も落ちてしまうため、
このようなシナリオであれば、フィルターをして取得できた情報をプロンプトに渡してあげるのがよいかと思います。
Concat(
Filter(
Ringi_Review_Points_Sample,
IsBlank(DataCardValue1_1.Selected) || Category.Value = DataCardValue1_1.Selected.Value
),
Title,
"," & Char((10) & " ")
)
あとは、プロンプトに情報を渡してあげるだけです。
Set(gblReviewResult,
稟議書レビュープロンプト.Predict(
TextInput2.Text,
TextInput1.Text
))
※あらかじめ、OCR で読み取ったテキストを非表示のテキストインプットコントロールに格納しておき、そちらの情報をプロンプトに渡しています。
Concat(
TextRecognizer1.Results,
Text,
"
" & Char((10) & " ")
)
レビュー結果がちゃんと表示されました。







