BedrockのAgentsやナレッジベースがStep Functionsからローコード操作可能に!?

# SFnにしれっとAgents for Bedrockが登場！

日本時間2024年1月20日(土)、AWS Step FunctionsからAgents for Amazon Bedrock系のアクションが呼び出せるようになっていました。

https://x.com/sonoda_mj/status/1748610480418308275?s=20

本件に関する公式リリース等はまだ発表されていません。

https://x.com/web_se/status/1748620175224746154?s=20

ちなみに先月、Amazon Bedrockの言語モデルの一つAnthropic Claudeの最新バージョンがAWS東京リージョンで使えるようになっていたのですが、こちらも同様にまだ公式の発表がないサイレントリリースとなっています。まだ商用利用は避けた方がよさそうです。

https://qiita.com/minorun365/items/a3dc900d6a15b9abb535

:::note info
1/22追記：Step Functionsの英語版ドキュメントに「1/18サポート開始」としれっと記載されていました。
:::

![スクリーン ショット 2024-01-22 に 07.17.28 午前.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/a3907df9-4640-d072-4058-c5f635d4c11d.png)

https://docs.aws.amazon.com/step-functions/latest/dg/change-log-supported-services.html


# これってどういうアプデ？

もともとAWSが9月にリリースした生成AIサービス「Amazon Bedrock」ですが、AWS Step Functionsへの統合が11月にリリースされていました。

https://aws.amazon.com/jp/blogs/news/build-generative-ai-apps-using-aws-step-functions-and-amazon-bedrock-2/

この後、Amazon Bedrockの新機能「Agents for Amazon Bedrock」と「Knowledge Base for Amazon Bedrock」がGAしたのですが、これらの新機能はまだStep　Functionsには統合されていませんでした。これらがついにStep Functionsの「アクション」として呼び出せるようになったのが今回のサイレントアップデートのようです。

ちなみにBedrockのエージェントとナレッジベースについては、入門ハンズオン記事を先日書きましたのでよろしければ触ってみてください。

https://qiita.com/minorun365/items/86a3667290a8e5657f65


# Step Functionsって何だっけ？

Step Functionsは数あるAWSサービスのなかでも「ワークフロー制御」を司る代表的なマネージドサービスです。

いわゆるジョブ管理ソフトのJP1からタスクの順序制御部分を抜き出したようなシンプルなサービスで、複数のAWSサービスを決まった順序で呼び出したり、条件分岐や繰り返しなどの制御を行ったりできます。

近年はGUIからワークフローを組めるビジュアルエディターが実装されたり、ステートマシン（いわゆるジョブのこと）がコケたときにその部分からリトライできる便利な機能も１１月に登場したりと日々進化しています。

https://dev.classmethod.jp/articles/aws-step-functions-restarting-workflows-failure/


# AzureでもLLMのローコード対応が進んでいます

OpenAIで先行するMicrosoftのAzureクラウドでも、Prompt flowというローコードのLLM用ワークフロー作成機能が以前から提供されています。

https://learn.microsoft.com/ja-jp/azure/machine-learning/prompt-flow/get-started-prompt-flow?view=azureml-api-2

この機能、コードが書けなくてもLLMアプリケーションを実装できる＆意外と柔軟性も高くてすごく便利なサービスなのですが、AWSのBedrock on Step Functions対応はこれに追随する機能拡充といえそうでうす。



# 実際にマネコンを覗いてみた

AWSアカウントにログインし、マネジメントコンソール上部の検索バーからStep Functionsを探します。

![スクリーン ショット 2024-01-20 に 17.55.15 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/254a8b9d-035f-ce66-45d5-31923448ad3c.png)


東京リージョンで操作してみます。SFnのコンソールが開いたら、「ステートマシンの作成」をやってみましょう。

![スクリーン ショット 2024-01-20 に 17.57.22 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/bfe20fe9-e2e8-def8-4571-5e8f12622bc5.png)


ステートマシン（いわゆるジョブ）を白紙から作り始めるか、出来合いのテンプレートから作るかを選択できます。

ここで既にBedrock用のサンプルもありますが、これは今回のAgents系ではなく純粋に生成AIモデルを呼び出す例となっています。

![スクリーン ショット 2024-01-20 に 17.57.54 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/7cae132e-6db8-bf81-85d5-ffdc0b2846ce.png)

Blankを選択して進むと、ワークフロー作成画面に遷移します。

画面左側の「アクション」から `bedrock` と検索すると、Agents for Bedrock系のAPI操作が一通り追加されていることを確認できます。これらを中央のビジュアルエディターにドラッグ＆ドロップすればステートマシンに処理として組み込むことができます。

![スクリーン ショット 2024-01-20 に 18.00.22 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/df2791ce-9ea9-a763-4ddc-094fe5e36d79.png)


ちなみにAgents for Bedrockを呼び出す「InvokeAgent」処理はアクションに存在しないようです。

想像ですが、AIエージェントはユーザーに対して再質問するようなインタラクティブな動きをするため、ステートレスな非同期処理には組み込みづらいといった事情があるのかも知れません。

https://x.com/shimagaji/status/1748620150612595113?s=20

※Knowledge Baseを呼び出す `RetrieveAndGenerate` アクションはあります。



# まとめ

まだ公式リリース発表前なので情報待ちですが、生成AI領域はAWSにおいても日々たくさんの進化がありとてもワクワクしますね。

これを機にStep Functionsに入門してみたい方は、AWS公式のワークショップもあるので是非触ってみましょう！ 私もやります🔥

https://dev.classmethod.jp/articles/aws-step-functions-workshop/

ちなみに通常のBedrock機能をStep Functionsから呼び出す方法は @moritalous さんが以下の記事で解説してくれています。こちらも是非ご覧ください。

https://qiita.com/moritalous/items/445ac329f7a431431be4

:::note info
1/22追記：早くも @cyberBOSE さんが実装を試してくれていました👇
:::

https://qiita.com/cyberBOSE/items/538e79ef1210929ba73a