Bedrock Flows と Amazon Q Developer Agentの新機能で生成AIアプリを短時間で作成する

はじめに

Japan AWS Ambassadors Advent Calendar 2024の5日目の記事です。

昨年の Advent Calendar 記事 から早1年! 今年は つい先日(11/22) GA となった、Bedrock Flows と Q Developer Agent の組み合わせで爆速プロトタイピングをしてみようと思います。

作成したもの

下記のような構成/手の入れ具合です

  • 生成AIパート は Bedrock Flows で ノーコード
    RAG用に S3 + Opensearch Serverlessを利用、Guardrail有り
  • バックエンド (Flask) は 生成されたものを 少し編集
  • フロントエンド (HTML/CSS/Javascript) ノータッチ

不慣れでも1時間程でできましたので、慣れてくると本当に爆速になりそうです!

※本記事中のプロンプトで作成したFlaskアプリ/フロントエンドについてはあくまでもとりあえず動くものであり、そのまま本番環境のワークロードで動作させる事には適しませんのでご注意ください。

Bedrock Flowsについて

re:Invent 2024の少しまえ、11/22にAmazon Bedrock FlowsがGAされました。
GAと同時に下記新機能が追加されました。

  • ガードレールを利用した安全面の強化
  • トレーサビリティの強化
    構築したフローを視覚的に確認し、エラーのデバッグや、フロー内の最も時間のかかる部分の特定などを行う事ができる

Amazon Bedrock Flows が 2 つの新機能を追加して一般提供開始
https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-bedrock-flows-new-capabilities/

事前に作成したリソースは下記となります

  • ガードレール
    有害カテゴリFilter/ハルシネーションフィルタリング有効
    機密情報フィルタとしてメールアドレスが入った場合には「質問に答えられない」を返却する
  • ナレッジベース
    S3に文章ファイルを配置しベクトルDBとしてOpenSearch Serverlessを利用したRAG

費用

0.035 USD/1,000 ノード遷移あたり
https://aws.amazon.com/jp/bedrock/pricing/
※生成AIモデルの呼び出しは別途トークンで課金

Q Developer Agentについて

別記事を書こうと思っておりますので、簡単にまとめます。

  • VSCode や IntelliJ に統合され利用できる生成AIソフトウェア開発エージェント
  • これまでもあった機能
    • /dev コード生成
    • /transform アプリケーションが新しいRuntimeで動作するようにアップグレード
  • re:Invent2024発表以降、下記新機能が利用できるようになった
    • /doc ドキュメンテーション
    • /test ユニットテスト作成 (Java/Python)
    • /review レビュー (CVEベースの脆弱性検知・修正も)

Step1. Bedrock Flowsで生成AI ワークフローの作成

新規作成後の画面

新規フローを作成するとこのような画面となります。
Inputされた内容がそのままOutputに出る形ですね。

Promptsノードを追加し、モデルを選択

Promptsノードに生成AI問い合わせプロンプトを設定

プロンプトの中に {{input}} と記載すると、丸ポチが現れ接続できるようになります。

メッセージを入れ動作確認する

ガードレールを設定

新機能として追加されたガードレール設定への対応
予め作成しておいた、機密情報フィルタにメールアドレスを追加したもの

ガードレールのテスト

メールアドレスを入力したら固定メッセージが帰る事を確認

新機能のトレーサビリティ強化を確認

各ノードの実行時間、入力・出力を確認できました。
複雑なフローになるほど威力を発揮しそうですね。

ナレッジベース問い合わせノードを追加

入力プロンプトに対して、RAG機能での問い合わせ結果も返却するようにしてみました。

Step2. Webアプリケーションの作成

Visual Studio Codeの Q 拡張にて下記のようなプロンプトを英訳した上で入力しました。
日本語でも受け付けてくれるのですが、生成結果がよろしくない事が多かったので、英訳してからにしています。

Visual Studio Code上での操作としては、新規フォルダを作成し開いただけの真っ新な状態です

5-6分ほどで3ファイルが生成されました。

が、残念ながら Bedrock Flowsを叩くコードになっていなかったので、下記を参考にしながら修正します。

Run Amazon Bedrock Flows code samples
https://docs.aws.amazon.com/bedrock/latest/userguide/flows-code-ex.html

せっかくなので新機能のドキュメント作成を /doc にて依頼

このドキュメントが素晴らしくて感動します。
プロジェクトによって項目が少なくなったり多くなったりしましたが、下記のような項目でした。
(項目を追加して欲しい場合は、Update existing README で具体的な指示を出すと良いです)

  • プロジェクト概要
  • ファイル構成
  • 利用方法
  • 設定方法について
  • APIについて
  • テストについて
  • トラブルシューティングについて
  • データフローについて

インストールドキュメント例

Dataflow例

動作確認

ここまで修正/追加した行数は30行ほどですが、無事動作しました。

アプリケーションは確かにオーダー通りになっています。
イメージと異なる場合にはさらに /dev チャット画面で指示を出すと改変してくれます、が時間がそのたびに掛かる事もあるので、ある程度の段階になったら、自前で修正した方が速そうです。

Tips

Bedrock Flows APIの呼び出し

Bedrock Flowsを叩く際の引数で必要な
flowIdentifier, flowAliasIdentifier について

サンプルをベースに少しだけ改変して下記のような形で応答を得ることができました。

Run Amazon Bedrock Flows code samples
https://docs.aws.amazon.com/bedrock/latest/userguide/flows-code-ex.html

Bedrock Flowsの参考動画

以下の動画では、最終的にプロンプトを(生成AI問い合わせ&条件ノードで判断)分類し、特定の問合せにはナレッジベースを参照した上で回答、それ以外は生成AIモデルから直接回答されるフローを構築するデモとなっています。

とても分かりやすい動画となっておりますので是非ご覧ください。

まとめ

昨年はPartyRockを触り今後の生成AIツールのノーコード/ローコード化が楽しみだなと思っていたのも束の間、様々なフレームワークや、Difyのようなツールも多数でてきました。

ユースケースに応じた最適な選定のため、引き続きアンテナを張っていこうと思います!

投稿者プロフィール

takashi
Japan AWS Ambassadors 2023, 2024
開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て
2010年よりスカイアーチネットワークスに在籍しております

機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。

ABOUTこの記事をかいた人

Japan AWS Ambassadors 2023, 2024 開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て 2010年よりスカイアーチネットワークスに在籍しております 機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。