CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

Microsoft Copilot Studioを使って、資料添削AIエージェントを作ってみる (2) フローの作成

前回に引き続き、AIエージェントを作るための処理をつくっていきます。

今回は、Copilot StudioとPower Automateでフローを作る方法を解説します。

1. 今回実施したい処理の流れ

Copilot Studio, Power Automate, Azure Functionを行き来するので、わかりやすいように処理を書き出しました。

この記事では[1], [2]について解説し、[3]以降は別の記事で書く予定です。

[1] ユーザからPowerPointファイルのアップロードを受け付ける [Copilot Studio]

[2] 受け取ったPowerPointファイルをPower Automateに渡す [Copilot Studio -> Power Automate]

[3] Power Automateの中で、Azure Functionに処理を渡す [Power Automate -> Azure Function (関数アプリ)]

[4] Azure Functionの中でPowerPointファイルを受け取ってテキストを抽出。抽出した結果をPower Automateに返す [Azure Function -> Power Automate]

[5] Power AutomateからCopilot Studioに結果を渡す [Power Automate -> Copilot Studio]

[6] Copilot Studioで誤字脱字チェックを実行する [Copilot Studio]

最初のCopilot Studioでは、新しくエージェントを作ります。Copilot Studio にログインした状態で「作成」ボタンをクリックして新規エージェントを作成します。

この辺の基本的な操作は、前々回の2章で書いた内容と同じです。
www.crossroad-tech.com

この辺はどこまできちんと書くべきかは不明です。調べている限り、ここを細かく書いても個別の処理を自分で作る必要があるためです。

AI Agent Configuration on Copilot Studio

2. [1] ユーザからPowerPointファイルのアップロードを受け付ける [Copilot Studio]

Copilot Studioの左側にある「フロー」というアイコンを選択して、フローを作っていきます。

まずは、ユーザがOneDriveにPowerPointファイルをアップロードする処理を作ります。Copilot Studioでは基本的にノードを作って繋げることで処理を定義していきます。

そうすると、まずは「ファイルを保存」とか、「アップロードを受け付ける」というノードを想定したのですが、そのようなノードはなく、「エージェントがフローを呼び出したとき」というノードを使います。

Agent calls flow node

しかし、一度しか使えないのか、途中で同じフローをもう一度呼び出そうと検索しても出てきませんでした。

We can't find the same flow on Copilot Studio

Copilot Studioのフロー全体でそうなのですが、ノードのキーワードを入れても出てこない時があります。その条件がわからないのでまだ少し使いづらい印象を持ちました。

「エージェントがフローを呼び出したとき」のノードを開くと、このような画面になります。テキスト、はい/いいえ、ファイルなど何を入力とするかを決められます。このスクリーンショットではすでにファイルを入力とする設定にしています。

Detail option of calling flow node


補足: 数ヶ月前までは、「アクション」という機能があって、「エージェントがフローを呼び出したとき」はアクションの追加という操作だったようです。

しかし、こちらによると、今は「ツール」から呼び出すようです。

mofumofupower.hatenablog.com


3. [2] 受け取ったPowerPointファイルをPower Automateに渡す [Copilot Studio -> Power Automate]

先に、Power Automateのフローを作っておきます。

まず、Power Automateのブラウザ画面を開きます。このリンクで開けるはずです。

開いたら、「作成」>「自動化されたクラウドフロー」を選択します。

Automated cloud flow on Power Automate

「トリガーを追加」のノードを選択し、「HTTP」とか「要求」というキーワードを入力し、「HTTP要求の受信時」を選択します。

Receive HTTP request node on Power Automate

ここで、jsonスキーマを設定します。中身を読みきれてないですが、いったんこのようなおすすめがあったので入力しました。

{
  "type": "object",
  "properties": {
    "fileName": { "type": "string" },
    "fileContent": { "type": "string" }
  }
}

次に、OneDrive for Businessの「ファイルを作成」ノードを選択して、Copilot Studioから取得したファイルを保存する場所と名称を入力します。

Create file node on Power Automate

場所は、/Document/~のような形式でなければならないようです。

ファイルコンテンツは「base64ToBinary(triggerBody()?['fileContent'])」と入力します。この理由がまだわかっていませんが、ひとまず入力して先に進めました。

この後、一時的に新しいノードの「応答」を追加します。これは後で消すかもしれませんが、いったんフローを閉じるために入れました。

Response node on Power Automate

この状態でフローを保存します。そうすると、「HTTP要求の受信時」というノードが「manual」という名称に変わり、「manual」ノードを開くとURLが発行されています。(なぜノードの名前が変わるかは不明です)

次はCopilot Studioに戻ります。Power Automateに情報を渡すため、Copilot Studioで「フローを取得」ノードを使います。

「フローを取得」の詳細画面を開いて、自分のテナントとその中で登録されているPower Automateのフローのうち、使いたいものを選択します。先ほどPower Automateで作ったフローは「HTTP->応答」という名称です。これを選択しました。

Get flow on Copilot Studio

この後、「応答」ノードを追加してから「公開」ボタンを押します。

Save and publish my flow on Copilot Studio

そうすると、エージェント作成画面の「ツール」の部分でこのフローを追加できるようになります。

Add new flow on Copilot Studio

自分で作ったフロー「PowerAutomate連動処理」が、エージェント構成画面に追加されたことを確認できました。

Added my new flow on Agent configuration on Copilot Studio

4. おわりに

Copilot StudioもPower Automateも、名称が一致しなかったり、確実に合っている名称を入力しても検索に表示されなかったりと、使いこなすのに時間がかかると思いました。

たとえば、Copilot Studioの中で「フロー」と書かれているところで作った処理が、AIエージェントの構成を管理する別の画面では「ツール」として扱われており、表記が統一されるともう少しわかりやすいと思いました。

次回は、Azure Functionで別の処理を作って、そこでPower Pointの文字を抽出する処理を試してみます。