Amazon Bedrockの新機能「Prompt Flows」Lambdaノードを使ってみた

はじめに

今回はAmazon Bedrockの新機能「Prompt Flows」のLambdaノードを使って、ユーザーから入力を受け取り、それをLambda関数で処理し、結果を返すシンプルなアプリケーションを作成してみました。

作成してみて分かったことも共有します。

「Prompt Flows」は、ノードを配置して生成AIのワークフローを開発・管理できるサービスです。

導入

アプリケーションの全体像は以下の通りです。

image.png
①文字列の入力②Lambda関数での処理③処理結果の出力

という流れになっています。

①文字列の入力

Flow inputでは、文字列を入力してもらいます。

後ほど記述しますが、今回はどのような文字列を入力しても同じ応答を返すようになっています。

②Lambda関数での処理

・Lambda側の処理

今回Lambdaを使うにあたって、以下のサイトを参考にしました。

「関数の作成」では、以下のような設定で関数を作成しました。

Lambda1.png
今回Prompt Flows側でLambda関数を呼び出す際に、アクセスが拒否されたエラーに苦戦しましたが、以下のサイト通りにやれば実行できました。手順としては、関数↓設定↓リソースベースのポリシーステートメント↓アクセス権限を追加↓AWSのサービス↓Otherを選択↓ステートメントIDを入力↓bedrock.amazonaws.comをプリンシパルに入力↓ARNを入力↓アクションでlambda:InvokeFunctionを選択↓保存

となっています。

image.png

コードは以下のようになっています。

image.png
1import json23def lambda_handler(event, context):45# TODO implement67    return json.dumps({8        'statusCode': 200,9        'body': 'Hello from Lambda!'10    })

今回の関数では、event(入力)パラメータは関数内で使用されていないため、どのような入力が与えられても常に以下のJSON文字列が返されます。

{“statusCode”: 200, “body”: “Hello from Lambda!”}

・Prompt Flows側の処理

Lambda関数を呼び出します。

Lambda functionでは、自分が呼び出したい関数を選びます。

Versionでは、$LATESTを選択します。

Lambda2.png

Inputでは、Lambda関数でのevent(入力部分)で送信する入力を定義します。

Outputでは、処理結果を指定されたデータ型で返します。

image.png
③処理結果の出力

②Lambda関数での処理でおこなった処理の結果を出力します。

実行結果

どんな文字を入力しても、常に以下のJSON文字列が返されることを確認できます。

{“statusCode”: 200, “body”: “Hello from Lambda!”}

{“statusCode”: 200, “body”: “Hello from Lambda!”}

これによって、Lambda関数が正常に呼び出されることを確認できました。

image.png

まとめ

今回は「Prompt Flows」のLambdaノードを使って、ユーザーから入力を受け取り、それをLambda関数で処理し、結果を返すシンプルなアプリケーションを作成してみました。

今後はもっと発展した内容の例を作成したいと考えています。

この記事を書いた人

aws-recipe-user