[プレビュー] Amazon Bedrockを使った生成AIワークフローをGUIで構築できる「Prompt Flows」機能が追加されました
みなさん、こんにちは!
福岡オフィスの青柳です。
Amazon Bedrockの新機能「Prompt Management」と「Prompt Flows」がプレビューとして公開されました。
当記事では、これらのうち「Prompt Flows」機能についてご紹介します。
もう一方の「Prompt Management」機能については、下記の記事を参照ください。
「Prompt Flows」機能とは
Amazon Bedrockを使った「生成AIワークフロー」を、GUIで構築することができる機能です。
「生成AIワークフロー」を用いることによって、生成AIモデルを使って単純な「質問への回答」「文章の生成」などを行うことに留まらず、複数の処理を組み合わせた高度なタスクを行うことができます。
単なる逐次処理だけではなく、「条件分岐」や「繰り返し」を含む複雑なロジックを構成することもできます。
Amazon Bedrockの「ナレッジベース」「エージェント」などの機能に加えて、他のAWSサービスとの連係も可能です。
現在のプレビュー段階では、以下の機能・サービスとの連係が行えるようになっています。
- Bedrockの機能の呼び出し
- プロンプト (モデルの呼び出し)
- ナレッジベース (Knowledge Bases for Amazon Bedrock) の検索
- エージェント (Agents for Amazon Bedrock) の呼び出し
- 他のAWSサービスとの連係
- S3のデータ参照
- S3へのデータ出力
- Lambda関数の呼び出し
- Lexボットの呼び出し
試してみた
今回は、ごくシンプルなワークフローを作成してみます。
フローの作成
マネジメントコンソールでAmazon Bedrockを開いて、左側のメニューの「オーケストレーション」に新たに追加された「Prompt Flows」を選択します。
「Create flow」をクリックしてフローの作成を開始します。
フローが動作するために必要な権限を定義した「サービスロール」(IAMロール) を用意する必要があります。
今回は、新規サービスロールを自動的に作成するオプションを選択します。
フローの編集画面が表示されます。
(この画面を「Prompt Flow Builder」と呼びます)
フローは、処理を行う「ノード (Node)」と、ノード同士を繋ぐ「接続 (Connection)」で構成されます。
初期状態では以下の2つのノードが配置されています。
- Flow input: フローのスタート地点となるノード
- Flow output: フローの処理結果を出力するノード
ノードを追加してみます。
左側のノード一覧から「Prompts」ノードをドラッグ&ドロップでフローに配置します。
ここからは、各ノードの設定を行なっていきます。
まず、「Flow input」ノードを選択状態にして、左側に「Configure」を表示させます。
「Output」の設定を変更します。
今回は、フローへ入力したデータをJSON形式として扱いたいと思いますので、Typeを「Object」に変更します。
次に、「Prompts」ノードを選択状態にして、Configureを表示させます。
プロンプトに関する設定を行います。
「Prompt Management」機能で作成したプロンプトを呼び出すこともできますが、今回はノード内に直接記述します。
- プロンプトの指定方法: Define in node
- モデルの選択: Claude 3.5 Sonnet
- メッセージ: 以下のように入力します
{{dish}} を {{number}} 人分作りたいです。必要な材料と、作り方を説明してください。
「Input」の設定を行います。
今回、「Flow input」ノードから本ノードに対する入力は以下のようなJSON形式となる想定です。
{
"dish": "String",
"number": Number
}
これに合わせて「Input」の設定を以下のように変更します。
Name | Type | Expression |
---|---|---|
dish | String | $.data.dish |
number | Number | $.data.number |
Expressionにおいて $.data
は入力データの全体を表します。
$.data.XXXX
と記述することで、JSONの要素を指定して参照することができます。
最後の「Flow output」ノードですが、今回は設定を変更しません。
各ノードの設定を行うことで、フローの構成は以下のようになります。
各ノード同士を以下のように接続します。
これでフローは完成です。
右上の「Save」をクリックして保存します。
フローのテスト
「Prompt Flow Builder」画面で、作成したフローをテストすることができます。
画面の右側にある「Test Prompt Flow」で、フローに与える入力データを指定します。
以下のようにJSON文字列を入力します。
{"dish": "カレー", "number": 3}
フローを「実行」すると、以下のように結果が出力されます。
フローのバージョン管理とエイリアス管理
「Prompt Flow Builder」画面を終了して、フローの「詳細」画面へ遷移すると、プロンプトのバージョンとエイリアスの管理を行うことができます。
現在編集中の「Draft」バージョンをコピーして新しい「バージョン」を生成します。
作成したバージョンを削除することもできます。(同じ番号のバージョンは二度と作成できませんので注意してください)
なお、Prompt Flow Builerを使ってフローの編集ができるのは「Draft」バージョンのみです。
また、フローをアプリケーションから利用する際には、バージョンに紐付く「エイリアス」を作成する必要があります。
エイリアスは、既存のバージョンに紐付けることもできますし、エイリアス作成時に新たなバージョンを同時に作成することもできます。
アプリケーションからの利用
作成したフローをアプリケーションから利用するには、Agents for Amazon Bedrock Runtimeの「InvokeFlow」APIまたはSDKを使用します。
今回はアプリケーションへの組み込みまで試すことはできませんでしたが、いずれ試してみたいと思います。
おわりに
今回は、「入力された情報をプロンプトに与えて回答を生成させる」という処理を行うだけの、ごくシンプルなワークフローを試してみました。
触ってみた印象ですが、プレビュー段階ということもあり、エラーメッセージが不親切だったりする部分があって正常に動作させるまで少し苦労しました。
このあたりは、正式リリース時には改善されていることを期待したいです。
Prompt Flowには、今回試すことができなかった「条件分岐や繰り返しを使った複雑なロジック」や「ナレッジベースや他AWSサービスとの連係」など、まだまだ奥深い利用方法がたくさんあります。
次回以降で、いろいろな利用方法を試してみたいと思います。