Bedrockに新機能「 Prompt flows for Amazon Bedrock 」が追加されました。🎉🎉🎉
現段階でプレビュー扱いで、東京リージョンでも使用できます。
同時に追加されたPrompt flows for Amazon Bedrockについてはこちら
Bedrockの新機能「Prompt management in Amazon Bedrock」
https://qiita.com/moritalous/items/afb6b8a4ff26a71cfdb8
早速試してみました。
このような画面です。
左側からNodeを選んで追加します。Bedrockの呼び出しを行うNodeはPrompts(またはAgents)です。
それぞれ、Prompt management in Amazon BedrockとAgents for Amazon Bedrockが呼び出せると思えば良いと思います。
Promptsでは、Prompt management in Amazon Bedrockで定義済みのプロンプトを選ぶ方法と、この画面で直接指定する方法が選択できます。
本日時点で、Prompt managementのものを選択すると、うまく接続できませんでしたので、直接指定で試します。
プロンプトの変数が自動で認識され、Nodeにも反映されます。
Nodeのアウトプットは型の定義ができます。形の定義をあわせないと保存時にエラーになります。
フローの入力を以下の形式で定義した場合、受け取る側でどの値をセットするかを指定できます。(下記の例では、languageとcontentをそれぞれ受け取っています)
{
"language": "english",
"content": "ニューヨークで開催されているAWS Summitでは、Bedrockに関する様々な新機能が発表されています"
}
一旦フローが完成したので保存します。
このタイミングで、Bedrockの呼び出しなどの必要な権限がIAMロールに自動付与されます。(Step Functionsのロール作成のような動作ですが、自動で行われます)
保存後、テスト実行が可能です。
選択できるNodeを紹介します。
APIで呼び出したい場合は、「InvokeFlow」APIを使用します。
Boto3は最新の1.34.143で対応済みです。
「bedrock-runtime」ではなく「bedrock-agent-runtime」です。
import boto3
client = boto3.client("bedrock-agent-runtime")
response = client.invoke_flow(
flowIdentifier="9GPLBZE7SF",
flowAliasIdentifier="TSTALIASID",
inputs=[
{
"content": {
"document": {
"language": "english",
"content": "ニューヨークで開催されているAWS Summitでは、Bedrockに関する様々な新機能が発表されています",
},
},
"nodeName": "FlowInputNode",
"nodeOutputName": "document",
}
],
)
event_stream = response["responseStream"]
for event in event_stream:
print(event)
{'flowOutputEvent': {'content': {'document': "Here's the English translation:\n\nVarious new features related to Bedrock are being announced at the AWS Summit being held in New York."}, 'nodeName': 'FlowOutputNode'}}
{'flowCompletionEvent': {'completionReason': 'SUCCESS'}}
見慣れない形式なのですが、取得できました。