はじめに
今回はAmazon Bedrockの新機能「Prompt Flows」のLambdaノードを使って、ユーザーから入力を受け取り、それをLambda関数で処理し、結果を返すシンプルなアプリケーションを作成してみました。
作成してみて分かったことも共有します。
「Prompt Flows」は、ノードを配置して生成AIのワークフローを開発・管理できるサービスです。
導入
アプリケーションの全体像は以下の通りです。
①文字列の入力
②Lambda関数での処理
③処理結果の出力
という流れになっています。
①文字列の入力
Flow inputでは、文字列を入力してもらいます。
後ほど記述しますが、今回はどのような文字列を入力しても同じ応答を返すようになっています。
②Lambda関数での処理
・Lambda側の処理
今回Lambdaを使うにあたって、以下のサイトを参考にしました。
「関数の作成」では、以下のような設定で関数を作成しました。
今回Prompt Flows側でLambda関数を呼び出す際に、アクセスが拒否されたエラーに苦戦しましたが、以下のサイト通りにやれば実行できました。
手順としては、
関数
↓
設定
↓
リソースベースのポリシーステートメント
↓
アクセス権限を追加
↓
AWSのサービス
↓
Otherを選択
↓
ステートメントIDを入力
↓
bedrock.amazonaws.comをプリンシパルに入力
↓
ARNを入力
↓
アクションでlambda:InvokeFunctionを選択
↓
保存
となっています。
コードは以下のようになっています。
import json
def lambda_handler(event, context):
# TODO implement
return json.dumps({
'statusCode': 200,
'body': 'Hello from Lambda!'
})
今回の関数では、event(入力)パラメータは関数内で使用されていないため、どのような入力が与えられても常に以下のJSON文字列が返されます。
{"statusCode": 200, "body": "Hello from Lambda!"}
・Prompt Flows側の処理
Lambda関数を呼び出します。
Lambda functionでは、自分が呼び出したい関数を選びます。
Versionでは、$LATESTを選択します。
Inputでは、Lambda関数でのevent(入力部分)で送信する入力を定義します。
Outputでは、処理結果を指定されたデータ型で返します。
③処理結果の出力
②Lambda関数での処理でおこなった処理の結果を出力します。
実行結果
どんな文字を入力しても、常に以下のJSON文字列が返されることを確認できます。
{"statusCode": 200, "body": "Hello from Lambda!"}
これによって、Lambda関数が正常に呼び出されることを確認できました。
まとめ
今回は「Prompt Flows」のLambdaノードを使って、ユーザーから入力を受け取り、それをLambda関数で処理し、結果を返すシンプルなアプリケーションを作成してみました。
今後はもっと発展した内容の例を作成したいと考えています。