Power AutomateとAzure AIで実現する契約書リスク自動分析システム(第4回:完成・運用編)

Azure OpenAI
スポンサーリンク

はじめに

みなさん、こんにちは!業務ハックLabのようです。

この記事は「Microsoft Power Automate Advent Calendar 2025」の12月24日担当分の記事です。

ついに最終回です!
(ここまで来られた方、お疲れ様でした!)

前回まででAI分析の核心部分が完成しましたね。
今回は、その結果を使って通知を送ったり、SharePointに記録したりする部分を作っていきます。

そして!
実際に運用する時のトラブルシューティングやベストプラクティスも解説しますよ。

(ここをちゃんと押さえておくと、「あれ?動かない!」って時にすぐ解決できます)

今回の目標

第4回では、システムを完成させて、実運用に向けた準備をします。

実装する内容:

  • リスクレベルに応じた条件分岐
  • 高リスク時のTeams通知
  • SharePointリストへの記録
  • 高リスク項目の詳細整形
  • トラブルシューティング
  • 運用のベストプラクティス

これで、ついにシステムが完成します!

では、最後まで行ってみましょう!

Phase 10: 条件分岐と通知

10-1. 条件の追加

まずは、「高リスクかどうか」を判定する条件分岐を作ります。

手順:

  1. 「+新しいステップ」をクリック
  2. 検索ボックスに「条件」と入力
  3. 「制御 – 条件」を選択

条件の設定:

左側動的コンテンツから「overall_risk_level」を選択
演算子次の値に等しい
右側

左側の入力欄をクリックすると、動的コンテンツのパネルが出てきます。
「JSON解析_OpenAI」のところに「overall_risk_level」があるので、それをクリックしてください。

これで、「リスクレベルが”高”だったら」という条件が設定できました!

10-2. はいの場合(高リスク)- 高リスク項目の整形

まず、高リスク項目を読みやすい形に整形します。

「はいの場合」のブロックの中に、「アクションの追加」をクリックします。

手順:

  1. 「それぞれに適用する」を選択
  2. 出力元(式): @{body('JSON解析_OpenAI')?['high_risk_items']}

「それぞれに適用する」は、配列の要素を一つずつ処理するループです。
高リスク項目が複数あった場合、それぞれに対して処理を実行します。

「それぞれに適用する」の中にアクションを追加:

  1. 「変数 – 文字列変数に追加」を選択

設定内容:

名前var_HighRiskText
下記参照

値(式で組み立てる):

【カテゴリ】@{items('それぞれに適用する')?['category']}
【説明】@{items('それぞれに適用する')?['description']}
【条項】@{items('それぞれに適用する')?['clause_reference']}
【対応策】@{items('それぞれに適用する')?['recommendation']}

---

⚠️ 注意: 'それぞれに適用する' の部分は、実際のそれぞれに適用するアクションの名前に合わせてください。

これで、高リスク項目が一つずつ読みやすい形に整形されて、変数に追加されていきます!

10-3. はいの場合(高リスク)- Teams通知

それぞれに適用するの外側(下)に、Teams通知を追加します。

手順:

  1. それぞれに適用するの下にある「アクションの追加」をクリック
  2. 「Microsoft Teams – チャットまたはチャネルにメッセージを投稿する」を選択

設定内容:

投稿者フローボット
投稿先チャネル
Team法務部のチーム(または通知先のチーム)
Channel契約審査チャネル(または通知先のチャネル)

メッセージ内容:

ここは、動的コンテンツを組み合わせて作ります。

⚠️ 高リスクの契約書が検出されました

ファイル名: @{triggerBody()?['{FilenameWithExtension}']}
リスクスコア: @{body('JSON解析_OpenAI')?['risk_score']} 点
総合評価: @{body('JSON解析_OpenAI')?['summary']}
高リスク項目数: @{length(body('JSON解析_OpenAI')?['high_risk_items'])} 件

ファイルリンク: @{triggerBody()?['{Link}']}

※ 法務部の確認が必要です
  • [ファイル名(拡張子あり)]: 動的コンテンツから「ファイル名(拡張子あり)」を選択
  • [risk_score]: 動的コンテンツから「risk_score」を選択
  • [summary]: 動的コンテンツから「summary」を選択
  • [式]: 式タブから length(body('JSON解析_OpenAI')?['high_risk_items']) を入力
  • [リンク]: 動的コンテンツから「リンク」を選択

(Teamsに通知が飛んだ時、リンクをクリックすればすぐに契約書が開けるようになってます!便利!)

10-4. はいの場合(高リスク)- SharePoint記録

Teams通知の下に、SharePointリストへの記録を追加します。

手順:

  1. 「アクションの追加」をクリック
  2. 「SharePoint – 項目の作成」を選択

設定内容:

サイトのアドレスSharePointサイトを選択
リスト名ContractRiskAnalysisResults
(第1回で作成したリスト)

リストを選択すると、フィールドの入力欄が表示されます。

フィールドの設定:

SharePoint列Power Automate の値
タイトル動的コンテンツ: ファイル名(拡張子あり)
FileName動的コンテンツ: 名前
RiskLevel Value動的コンテンツ: overall_risk_level
RiskScore動的コンテンツ: risk_score
OverrallRating動的コンテンツ: summary
HighRiskItemDetails動的コンテンツ: var_HighRiskText
AnalysisDateTime式: @{utcNow()}
FileLinkリンク動的コンテンツ: アイテムへのリンク

AnalysisDateTimeですが設定は@{utcNow()}にしていますが日本時間にしたい場合はconvertTimeZone関数を使いましょう。

はい、これで高リスクの場合の処理が完成です!

10-5. いいえの場合(中・低リスク)

「いいえの場合」のブロックには、SharePoint記録だけを追加します。
(Teams通知は不要なので)

手順:

  1. 「いいえの場合」の中で「アクションの追加」をクリック
  2. 「SharePoint – 項目の作成」を選択
  3. 設定内容は「はいの場合」と同じ

ただし、「高リスク項目詳細」のフィールドは空欄にしておきます。
(中・低リスクの場合は、高リスク項目がないので)

はい、これでフロー全体が完成しました!

最終テスト

さあ、完成したフローをテストしてみましょう!

テスト手順

  1. 「保存」をクリック
  2. 「テスト」をクリック
  3. SharePointの「契約書」ライブラリに契約書PDFをアップロード
  4. フローの実行を確認

確認ポイント

✅ すべてのアクションが緑のチェックマークになっているか

✅ 高リスクの場合、Teamsに通知が届いているか

✅ SharePointリストに記録されているか

すべて確認できたら、成功です!
おめでとうございます!

(ここまで来たら、もう感動ものですよね!自分で作ったAIシステムが動いてるんですから!)

トラブルシューティング

さて、ここからは実際に運用していく中で「あれ?動かない!」ってなった時の対処法を解説します。

(これ、めちゃくちゃ重要です。どんなシステムでもトラブルは起きますからね)

よくあるエラーと解決方法

エラー1: Phase 5で「InvalidContent」

症状:

{
  "error": {
    "code": "InvalidRequest",
    "message": "The file is corrupted or format is unsupported."
  }
}

原因: ファイルのエンコードに問題がある

解決策:

HTTPアクションの本文を以下に修正してください。

{
  "base64Source": "@{base64(body('ファイル_コンテンツの取得'))}"
}

⚠️ ポイント: outputs() ではなく body() を使用し、?['body'] は不要です。

エラー2: Do Untilが終了しない

症状: タイムアウトエラーが発生

原因: 条件式のアクション名が一致していない

解決策:

  1. HTTPアクション名が HTTP_結果取得 であることを確認
  2. Do Untilの条件が @{body('HTTP_結果取得')?['status']} と一致しているか確認

(アクション名、ちょっとでも違うと動かないので注意!)

エラー3: JSON解析エラー

症状: 「The execution of template action ‘JSON_の解析’ failed」

原因: スキーマと実際のデータ構造が一致しない

解決策:

  1. テスト実行でHTTPアクションの出力を確認
  2. 実際のレスポンスをコピー
  3. JSON解析アクションで「サンプル ペイロードを使用してスキーマを生成する」を使用してスキーマを再生成

(これ、めちゃくちゃ便利な機能なので覚えておいてください!)

エラー4: OpenAIがJSON以外を返す

症状: JSON解析でエラー、またはテキスト形式で返ってくる

原因: response_format が設定されていない

解決策:

HTTPアクション(Azure OpenAI)の本文に以下が含まれているか確認:

"response_format": { "type": "json_object" }

これがあると、JSON形式で返してくれます。
(ないと、普通の文章で返してくることがあるんですよね…)

運用のベストプラクティス

さあ、システムが完成して、トラブルシューティングも押さえました。
最後に、実際に運用する時のコツを共有します!

セキュリティ

1.APIキーの管理

現在、APIキーを変数に直接書いてますよね。
本番環境では、Azure Key Vault を使うことをおすすめします。

推奨手順:

  1. Azure Key Vaultにシークレットを保存
  2. Power Automateから「Azure Key Vault – シークレットの取得」アクションを使用
  3. 設定タブのセキュリティで「セキュア出力」をオンにする
  4. HTTPアクションもセキュリティで「セキュア入力」「セキュア出力」をオンにする

(これで、フローを共有してもAPIキーが見えなくなります!)

2. 実行履歴の確認

Power Automateの実行履歴を定期的に確認しましょう。
(どんなファイルが処理されたか、エラーは発生してないか、など)

パフォーマンス最適化

1. 並列処理

SharePointへの記録とTeams通知を並列実行すると、少し速くなります。

手順:

  1. Teams通知アクションの「…」をクリック
  2. 「並列分岐の追加」を選択
  3. 並列分岐にSharePoint記録を移動

(ただし、そこまで劇的に速くなるわけではないので、任意です)

2. タイムアウトの調整

大きなファイル用に Do Until のタイムアウトを延長することもできます。

設定:

  • 件数: 100
  • タイムアウト: PT5M

運用面での工夫

1. エラー通知の設定

フローがエラーで止まった時に、IT管理者にメール通知を送るようにしましょう。

手順:

  1. フローの設定で「エラー時に実行」を有効化
  2. 「Office 365 Outlook – メールの送信」アクションを追加
  3. IT管理者のメールアドレスを宛先に設定

2. ダッシュボードの作成

SharePointリストをPower BIに接続して可視化すると便利です!

表示する指標:

  • 月間処理件数
  • リスクレベル別の分布
  • 平均リスクスコアの推移
  • 高リスク項目の傾向分析

(これがあると、経営陣への報告資料としても使えますよね!)

3. プロンプトの継続的改善

実際に使ってみて、「もうちょっとこういう観点も欲しいな」って思ったら、システムプロンプトを修正しましょう。

改善のサイクル:

  1. 実際の分析結果を確認
  2. 法務担当者からフィードバックを収集
  3. システムプロンプトを修正
  4. テスト実行で確認
  5. 本番環境に適用

(AIシステムは、使いながら育てていくものなんです!)

まとめ

はい、いかがでしたでしょうか?

全4回の連載、ついに完結です!
お疲れ様でした!

この連載で実現できたこと:

✅ 契約書のテキスト・構造の自動抽出
✅ AIによる高度なリスク分析
✅ リスクレベルに応じた自動通知
✅ 分析結果の一元管理
✅ トラブルシューティング対応
✅ 運用のベストプラクティス習得

システムの効果:

  • 分析の標準化: 担当者による品質のばらつきを解消
  • リスクの早期発見: 高リスク項目を見逃さない
  • 知見の蓄積: SharePointリストにデータが溜まる

このシステム、本当に便利なので、ぜひ活用してください!

(僕も最初は「こんなの本当に作れるのかな…」って不安でしたけど、一つずつ進めたら完成しましたからね!)

次のステップ

さあ、システムが完成したら、次は以下のステップで進めましょう。

  1. 小規模でテスト運用を開始
    – まずは数件の契約書で試してみる
    – 法務担当者にフィードバックをもらう
  2. プロンプトを改善
    – 実際の分析結果を見ながら調整
    – 必要な観点を追加
  3. 本番展開
    – 全契約書に適用
    – 運用ルールを整備
  4. 効果測定
    – 作業時間の削減効果を測定
    – リスク検出率を確認
  5. 他の契約書タイプへの展開を検討
    – 秘密保持契約(NDA)
    – ライセンス契約
    – 委託契約など

契約書審査業務の効率化に、ぜひお役立てください!

それでは皆さん、良い業務ハックライフを~


連載記事:

  • 第1回:システム概要・準備編
  • 第2回:基礎実装編
  • 第3回:AI分析実装編
  • 📍 第4回:完成・運用編(今回)

参考リンク


更新履歴

  • 2024/12/09: 全4回完結

コメント