0
0

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

Last updated at Posted at 2024-08-28

はじめに

今回は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

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を選択します。

Lambda2.png

Inputでは、Lambda関数でのevent(入力部分)で送信する入力を定義します。
Outputでは、処理結果を指定されたデータ型で返します。

image.png

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

実行結果

どんな文字を入力しても、常に以下のJSON文字列が返されることを確認できます。
{"statusCode": 200, "body": "Hello from Lambda!"}
これによって、Lambda関数が正常に呼び出されることを確認できました。

image.png

まとめ

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0