25
13
生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

Bedrockの新機能「Prompt flows for Amazon Bedrock」

Last updated at Posted at 2024-07-10

Bedrockに新機能「 Prompt flows for Amazon Bedrock 」が追加されました。🎉🎉🎉
現段階でプレビュー扱いで、東京リージョンでも使用できます。

image.png

同時に追加された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が呼び出せると思えば良いと思います。

image.png

Promptsでは、Prompt management in Amazon Bedrockで定義済みのプロンプトを選ぶ方法と、この画面で直接指定する方法が選択できます。
本日時点で、Prompt managementのものを選択すると、うまく接続できませんでしたので、直接指定で試します。

プロンプトの変数が自動で認識され、Nodeにも反映されます。

image.png

Nodeのアウトプットは型の定義ができます。形の定義をあわせないと保存時にエラーになります。

image.png

フローの入力を以下の形式で定義した場合、受け取る側でどの値をセットするかを指定できます。(下記の例では、languageとcontentをそれぞれ受け取っています)

{
  "language": "english",
  "content": "ニューヨークで開催されているAWS Summitでは、Bedrockに関する様々な新機能が発表されています"
}

image.png

一旦フローが完成したので保存します。
このタイミングで、Bedrockの呼び出しなどの必要な権限がIAMロールに自動付与されます。(Step Functionsのロール作成のような動作ですが、自動で行われます)

保存後、テスト実行が可能です。

image.png

選択できるNodeを紹介します。

  • Logic

  • OrchestrationとCode

  • Data
    S3 RetrievalはS3に格納したオブジェクトの内容(テキストなど)の取得を行います。
    S3 StorageはテキストをS3のオブジェクトとして保存します。

  • Ai Services
    現時点ではLexのみです。

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'}}

見慣れない形式なのですが、取得できました。

25
13
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
25
13