
Amazon Quick フローの「推論グループ」を使ってデータのループ処理を行ってみた
いわさです。
Amazon Quick のフロー機能を使うと、ノーコードで AI を活用したワークフローを作成できます。
フローではチャットエージェントステップにプロンプトを設定し、アップロードしたデータに対して AI に処理をさせることができます。
しかし、データ量が多い場合にチャットエージェントステップで一括処理しようとすると、全件を処理しきれないことがあります。
こういった場合にはデータを分割してループ処理したいところですが、Quick オートメーションのような明示的なループや分岐の仕組みはフローには無さそうに見えます。
ところが、フローのステップ追加メニューを改めて確認してみると「フローロジック」カテゴリに「推論グループ」というステップタイプがあることに気づきました。
推論グループを使うと、自然言語のインストラクションでステップの実行制御(ループ、条件分岐、バリデーション)を定義できるようです。
今回こちらを確認してみたので紹介します。
推論グループを使ってみる
まず、課題となったフロー構成を紹介します。
次のようにデータセットをアップロードし、チャットエージェントステップで全行を一括解析してサマリーを出力する、というシンプルな3ステップの構成です。

この構成ではデータ量が少ない場合は問題なく動作するのですが、行数が多いデータセットをアップロードすると全件処理されず一部だけが解析されてしまうことがありました。
正確な原因は特定できていませんが、ステップに渡せるデータ量やプロンプトサイズに上限があるので、そのあたりの制限に引っかかっているのではないかと思います。
では、推論グループを使ってこの問題を解決してみましょう。
フローのステップ追加画面を確認すると、「フローロジック」カテゴリに「推論グループ」があります。

公式ドキュメントによると、推論グループは自然言語のインストラクションでグループ内ステップの実行を制御する仕組みとのことです。
Reasoning groups give you control over how parts of your flow run using natural language instructions. A reasoning group contains its own set of steps — like an isolated workflow within your larger workflow — that runs based on conditions you define.
実行モードの選択
推論グループの編集画面を開くと「これらのステップを実行」というドロップダウンがあり、以下の3つの実行モードから選択できます。
- 一度
- 何度も
- 各項目について

今回のようにデータの各行を個別に処理したい場合は「各項目について」を選択します。
「各項目について」を選択すると「入力を選択」というドロップダウンが追加で表示され、ループ対象となる前のステップの出力を指定できます。
「何度も」はカウントと時間(秒)を指定する形式みたいですね。

フロー構成を変更する
推論グループを活用して、フロー構成を変更しました。

ポイントは、事前にチャットエージェントステップでデータを1行ずつリスト形式に変換しておき、その出力を推論グループの「各項目について」の入力として渡しているところです。
推論グループの編集画面で「各項目について」を選択し入力ステップを指定すると、「推論のインストラクション」欄に Repeat for each @データ行の抽出 in a loop と表示されます。
グループ内のステップでは @データ行の抽出 を参照すると、ループの各イテレーションで対応する1行分のデータが渡されるようです。
これにより1回のイテレーションで扱うデータ量が小さくなるので、一括処理で全件処理されなかった問題を回避できるのではないかと考えました。
ちなみにフローあたりのステップ数上限は 35 ステップとのことです。
推論グループ内のステップもカウントされるのかは未確認ですが、あまり複雑な構成にはできなさそうですね。
50件の上限に注意
推論グループのイテレーション上限は 50 回です。
Maximum iterations per reasoning group: 50 iterations
実際に 92 行のデータを処理しようとしたところ、フローの実行時に「データが92行あり、処理できる上限(50件)を超えているため、そのままでは実行できません」とメッセージが表示され、処理が止まりました。

エラーと同時に「日付範囲を絞る」「CSV ファイルを50行以内に絞った上で再アップロードする」といった対処法も提案してくれるのは親切ですね。
また、公式ドキュメントには推論グループの出力に関する注意点も記載されています。
推論グループでループ処理した結果を後続のステップで参照する場合、例えば 50 回分の出力をまとめて次のステップに渡そうとしても、次のステップのプロンプト入力上限(5,000 文字)に収まらなければ使えません。
公式ドキュメントでは、大きな出力になる場合は途中で結果を分割して後続のステップで個別にクエリするアプローチが推奨されています。
行数を減らして再実行
CSV の行数を 50 件以内に減らして再度実行してみました。
今度は正常にループ処理が開始され、推論グループ内で各行が順番に処理されていることが確認できます。

「データ行の抽出 で各項目について実行中」と表示されており、右上にページネーション(1, 2, 3, 4, 5 ... 10)が表示されています。
各ページが1行分のイテレーションに対応していて、それぞれで「行データの詳細解析」と「行解析サマリーの生成」の2ステップが実行されています。

後半のページも問題なく処理されていることが確認できます。
全 14 件のデータが1行ずつ個別に解析され、それぞれにサマリーが生成されました。
一括処理では全件処理されなかった問題が、推論グループのループ処理で解決できることがわかりますね。
インストラクションテンプレート
推論グループの編集画面にはインストラクションテンプレートも用意されていました。
条件分岐やバリデーションのテンプレートとして以下のようなものが確認できます。
- これの場合、それを行う
- true の場合は実行
- データ範囲を検証
- これが生じた場合はスキップ
- この場合、それを行うが、そうでない場合は以下を行う
- 以下の場合のみ実行
- 検証
ループ処理だけでなく、条件分岐やバリデーションも自然言語で制御できるのは面白いですね。
さいごに
本日は Amazon Quick フローの推論グループを使ってデータのループ処理を行ってみました。
チャットエージェントステップで大量データを一括処理しようとすると全件処理されない問題に対して、推論グループの「各項目について」モードを使うことで行ごとの分割処理ができるようになります。
イテレーション上限が 50 回という制約はあるものの、上限を超えた場合はフロー側が検知してくれるので気づかずに中途半端な結果になることはなさそうです。
数十行程度のデータ処理であれば十分活用できますし、それ以上の場合は事前にデータを絞り込むステップを挟むなどの工夫で対応できると思います。
フローロジックとしてはまだ推論グループのみですが、ループ・条件分岐・バリデーションと一通りの制御が自然言語で行える仕組みになっているので、今後フローで複雑な処理を組む際に活用できそうです。









