初めてのエージェントフロー:JSON をループ処理して 1 件ずつ取り出す方法 中級NO4

【今回の記事では、AIエージェントの核心である専用ロボットを作成して連携します】

今回の記事では、RPA機能を有したエージェントフローを作成し、トピックと連携しながらJSONデータを操作します

扱うのは下の画像のハンバーガショップのメニューをJSONデータにしたものです

上のフロー図の④では、トピックから呼び出されたエージェントフローは上記のJSONデータを取得して、トピックに出力します

そしてトピックは以下の画像のように、JSONデータから1つづつ中身を取り出して表示します

前回の記事では、1注文データのJSONデータをトピック内から外部のエクセルに出力しました

今回の記事では、エクセルであれば複数行から構成されJSONデータを扱いつつ、RPAとトピックを連携させます

上記の内容をマスターすれば、飛躍的に処理能力の高いエージェントを作成できるようになります

はじめに

今回の記事から本格的にJSONデータを扱うとともに、エージェントフローも初めて作成してみます

最初に「JSON」と「エージェントフロー」について、重要なポイントを事前に解説いたします

JSONを扱うということ

前回の記事でJSONの文法などは解説しました

ただし、

ここからエージェントフローと絡めて本格的にJSONデータを扱ううえでは、絶対に知っておいて頂きたいことがあります

知っておかないと後々かなり混乱しますので、絶対におさえておきましょう!

変数化

あなたが複数の便箋を郵便で送りたいとします

この時、必ず郵便局指定の封筒に入れますよね?

Copilot StudioでJSONを扱うときも同様です

封筒に入れなかったら、郵便ポストに入れてもただの紙です

Copilot StudioではJSONをJSONとして変数化することで、文字列ではなくJSONとして扱うことができます

構造化

便箋を封筒に入れたらおしまいではないですよね

封筒に入れたら、宛先や自分の住所などを封筒の上に記載して郵便ポストに入れますよね

これで郵便局の人も、次の処理に進むことができます

これはCopilot Studio内でも同様です

JSONデータの中身を示さなかったら、JSONを扱う処理は進められません

ここで言う中身とは、JSONデータにあるデータ項目とデータの種類です

中身を構造化して示さなかったらJSONはこれまた、ただの文字列になり、どう扱っていいかがわかりません

封筒の受け取り手が、封筒を開けても複数便箋があることが分からないようなものです

JSONデータの中身を構造で示すことで、封筒から便箋を1枚ずつ取り出すように、JSONデータ内の個々のデータを抽出することができます

エージェントフローを扱うということ

エージェントフローとはPower Automate の一部機能を エージェント専用に再構成したもので、あくまでCopilot Studioの内部機能ではあります

ただし、トピックの外で動きます

上の図のように、エージェントとは別に作成し、複数のエージェントで共有することが可能です

トピックの外で働いてもらうためには、トピックと連携する仕組みが重要です

この記事内では、エージェントフローに名前を付ける、公開する、この2つの処理を強調して解説します

実際に作成する

新しくエージェントを作成する

まず新しくエージェントを作成します

そして、メニュー表示トピックを別途作成します

このトピックでは①エージェントフロー呼び出し、②JSONデータ受取、③抽出を行います

①を行うためには、まずはエージェントフローを作成します

エージェントフローの作成

トリガー設定

エージェントフローはCopilot Studio画面左の「フロー」から作成します

次に開いた画面で「新しいエージェントフロー」を作成するクリックします

この後、トリガーを設定します

エージェントフローをトピックの外から起動するには、イベントが必要なのです

「トリガーの追加」ではエージェントフローを起動させるためのイベントを追加します

トリガーの追加ボックスで「エージェント」の文字列で検索します

すると上の画像のように「エージェントがフローを呼び出したとき」アクションを設定できるようになります

JSONの設定

次に下の画像にて「データ操作」で検索を行ってください

そうすると「データ操作」コネクタ一覧が表示されます

コネクタとは家電の専用リモコンみたいなものです

クーラーのリモコンから電源を入れることもできるし、温度も調整できます

エージェントフローには以下のようなリモコンが用意されています

  • エクセルのコンセント
  • TEAMSのコンセント
  • メールのコンセント

リモコンにアクセスすれば色んな家電が利用できます

ここで本題に戻ります

データ操作コネクタから「作成」を選んでください

上の画像の黄色の箇所に、下のJSONデータを貼り付けてください

[
  {
    "Category": "ハンバーガー",
    "ProductName": "ガッツバーガー",
    "Price": 500
  },
  {
    "Category": "ハンバーガー",
    "ProductName": "チーズバーガー",
    "Price": 600
  },
  {
    "Category": "ハンバーガー",
    "ProductName": "たまごバーガー",
    "Price": 650
  },
  {
    "Category": "ポテト",
    "ProductName": "ポテト Sサイズ",
    "Price": 200
  },
  {
    "Category": "ポテト",
    "ProductName": "ポテト Mサイズ",
    "Price": 300
  },
  {
    "Category": "ポテト",
    "ProductName": "ポテト Lサイズ",
    "Price": 400
  },
  {
    "Category": "シェイク",
    "ProductName": "チョコレートシェイク",
    "Price": 220
  },
  {
    "Category": "シェイク",
    "ProductName": "バナナシェイク",
    "Price": 220
  }
]

下の画像がJSONデータを貼り付けた状態です

次にもう一度アクションを追加してください

トピックへの連絡

追加したアクションの画面で「エージェントに応答する」を検索して「エージェントに応答する」アクションを追加します

以下が「エージェントに応答する」アクションが追加された状態です

次に上の画像の黄色の箇所「+出力を追加する」ボタンをクリックしてください

そうすれば「出力の種類」を選択できるので、「テキスト」を選択してください

これで、家の中にいるトピック達がロボットが出力する内容を受け取れます

まずトピックへの連絡にJSONと名前を付けましょう

後ほどトピックは「JSON」という名前でエージェントフローの出力内容を受け取れます

名前を付けたら「応答に使用する値を入力してください」の欄をクリックして、前のアクションの内容を選択できるようにしてください

下の画像の黄色の箇所をクリックすることで、前のアクションの出力を利用できるようになります

よく意味がわからない?という方は前のアクションの名前を変えてみてください

アクションの右側の3点リーダーをクリックすると「名前を変更する」が選択できるようになります

下の画像はアクションの名前を変えた状態です

これで、次のアクションにて前後の意味合いを明確にしたうえで選択がしやすくなります

実際に指定するのは、下の画像のように「作成JSON」の下にある「出力」です

実は、

これが前述の「JSONを扱うということ」で解説した変数化の結果です

データ操作コネクタ「作成」アクションにJSONデータを入れて出力することで、JSONデータを「JSON」として変数化して利用できるようになります

トピックとの連携設定

これでアクションの設定は完了したので、右上の「下書きを保存する」をクリックしてください

次に下の画像の「無題」の右横、「概要」をクリックしましょう

クリック後に開いた画面で「編集」をクリックします

そうすると、フロー名やフローの内容を設定できます

トピックで後で呼び出すためには、エージェントフローに分かりやすい名前を付けることが重要です

今回は「JSON取得」と名前を付けました

ここから更にもう一点、追加処理があるので上の画像の「デザイナー」をクリックしてください

次に開いた画面で「公開」というボタンがあります

こちらで「公開」処理を行ってはじめて「エージェントフロー」がトピックと連携できます

公開する前に一度、エージェントフローを保存して「名前」を付け、その後「公開」するのがポイントです

この点は本当に重要なので、ぜひ意識しておきましょう

これでエージェントフローの処理は終了です

トピックの完成

エージェントフロー呼び出しのノードを追加

再度「メニュー表示」トピックに戻りましょう!

ここから「ツールを追加する」カードを追加します

次にツールを検索します

これで作成したエージェントフローを呼び出せるようになりました

次に「メッセージを送信するカード」を設定します

上の画像の変数:Xマークをクリックするとエージェントフローで名前を付けた「エージェントフローの出力」が選択できます

ここで「メニューの表示」トピックをテストできるように「会話の開始」トピックにトピックの呼び出し用のカードを追加しましょう

これで「会話の開始」トピックから、エージェントフローを呼び出すトピックである「メニューの表示」を呼び出せるようになりました

ここで新しいテストセッションを動かしてみましょう

新しいテストセッションを動かすと、下の画像のようにエージェントフローで設定したJSONデータが表示されます

JSONから個のデータを取り出す

エージェントフローからJSONデータを受け取れるようになったので、JSONデータから個々の値を取り出しましょう!

JSONデータの構造化

ここからは前述の「JSONを扱うということ」の「構造化」の話になります

「メニューの表示」トピックにまた戻ります

上の画像の「メッセージを送信する」カードは削除しておきましょう

次に変数管理から「値を解析する」をクリックしてください

更に、下の画像のように追加した「値を解析する」カードに、エージェントフローから受け取った変数:JSONを設定します

次は「データ型」を設定します

下の画像のようにデータ型の種類は、下向きの矢印から一覧を表示しましょう

ここで、上の画像の一番下の「サンプルデータから」を選択しましょう

そうすると次の画面が開きます

上の画像の画面にはエージェントフローに貼ったJSONデータを貼ります

下の画像がJSONデータを貼った状態です

この状態から右下の確認ボタンを押します

下の画像が「確認ボタン」を押した後の状態です

次に「スキーマを編集する」をクリックしましょう!

下の画像がクリックした後の画像ですが、赤字の3行に注目しましょう!

上の画像は、下の画像のJSONデータの構造がこの3つの項目で成立していることを示しています

他の言葉で言い換えれば、3つの項目の内容の繰り返しで構成されているということでもあります

加えて、下の画像のように各列のデータ形式も定義されています

これでJSONの構造が分かったので、次の処理からはJSONを分解して処理できるようになります

テーブル化

最後に下の画像のように構造化したJSONデータを格納する変数を設定しましょう

今回はmyTableとして変数を設定しました

これは、エクセル形式であれば下の画像のような状態でデータが変数:myTableに格納されたということになります

次に変数管理から「リスト全体をループする」カードを設定しましょう

下の画像が上のカードを追加した後の状態です

次に「ループする項目」を設定しましょう!

設定するのは、JSONデータを構造化した「myTable」です

ループ値の変数は、COpilot Studioが自動で設定した「LoopValu1」のまま使用しましょう

テーブルから行(レコード)や値の取り出し

ここからは前述の図のようにテーブル内の各レコードや値を取り出しましょう

エクセルで言えば1行1行単位で繰り返し処理をすることになります

それでは実際に下の黄色の箇所にノードを追加しましょう

メッセージを送信するカードを追加して変数:xボタンを追加すると、テーブルの行の内容を色んな切り口で抽出できます

選択できる内容をもう少し詳細に確認してみましょう

上の画像であれば、「テーブル」の「Price列」の内容を数字で抽出するという内容になります

それでは、上の画像のように抽出した内容がなんなのかを明確にして「メッセージを送信する」カードを作成しましょう

ちなみにLoopIndex1というのは、抽出内容には存在しないのですが、自動的にCopilot Studioが設定しておいてくれるものです

JSONデータに元々存在するものではないので、その点は注意しましょう!

それでは実際に新しいテストセッションを開始してみましょう!

JSONデータがユーザーが可視化できる形で表示することができています!

ちなみに自動で取得してくれるNOは0から始まる点にはご注意ください

まとめ

今回の記事ではエクセルで言えば複数行から構成されるJSONデータを処理する方法と、エージェントフローを作成して扱う方法を解説しました

JSONデータを扱うポイント

複数の配列を扱うJSONデータの場合、Copilot Studio内では以下2つの処理がそろって初めて文字列ではなく「JSON」として扱うことができる

1.変数化:

データ操作「作成」アクションに一旦格納して出力する

2.構造化:

JSONデータを解析して、JSONの中身を示す

エージェントフローを扱うポイント

1.分かりやすい名前を付ける

トピック内から呼び出しやすい名前を付ける

2.公開する

公開して初めて、トピック内から呼び出すことができる

今回は以上です

コメントを残す

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