Amazon Web Services ブログ
Amazon Bedrock in SageMaker Unified Studio を使用した生成 AI アプリケーションの迅速な構築
本記事は、2024 年 12 月 4 日に公開された Build generative AI applications quickly with Amazon Bedrock in SageMaker Unified Studio を翻訳したものです。翻訳は Solutions Architect の 濱野谷(yoshiehm@) が担当しました。
生成 AI アプリケーションの構築は、組織にとって大きな課題となっています。専門的な ML の知識、複雑なインフラストラクチャ管理、そして複数のサービスの適切な連携が必要だからです。これらの課題に対応するため、生成 AI アプリケーションの開発とカスタマイズのための統合環境である Amazon Bedrock in SageMaker Unified Studio を紹介します。以前は Amazon Bedrock Studio として知られていた Amazon Bedrock in SageMaker Unified Studio は、Amazon SageMaker Unified Studio に統合されました。Amazon SageMaker Unified Studio は、Amazon Bedrock、Amazon SageMaker、Amazon Redshift、Amazon Glue、Amazon Athena、Amazon Managed Workflows for Apache Airflow (MWAA) などの AWS サービスを、包括的なデータ・ AI 開発プラットフォームに統合しています。このブログ記事では、Amazon SageMaker Unified Studio 環境における Amazon Bedrock in SageMaker Unified Studio とその生成 AI 機能に焦点を当てます。
複数のリージョンや国にまたがってグローバルに展開する小売サイトを考えてみましょう。セールスアナリストたちは日々、次のような課題に直面しています。データドリブンな意思決定を行う必要がありますが、膨大な情報量に圧倒されています。データベースに保存された販売取引や収益指標などの構造化データと、様々なチャネルから収集された顧客レビューやマーケティングレポートなどの非構造化データがあります。これらのアナリストは、SQL (構造化クエリ言語) の専門知識や RAG (Retrieval Augmented Generation) の専門知識がないため、両方のソースからのインサイトを効果的に組み合わせることに苦労しています。
この記事では、社内の誰もが Amazon Bedrock in SageMaker Unified Studio を使用して、販売実績データを分析する生成 AI チャットエージェントアプリケーションを素早く作成する方法をご紹介します。ビジネスチームは、このチャットエージェントとの簡単な会話を通じて、コードを書いたり複雑なデータパイプラインを管理したりすることなく、構造化データと非構造化データの両方から価値のあるインサイトを引き出すことができます。次の図は、 Amazon Bedrock in SageMaker Unified Studio を使用した AI アシスタントの概念アーキテクチャを示しています。
ソリューションの概要
Amazon Bedrock in SageMaker Unified Studio に作成した AI チャットエージェントアプリケーションは、構造化データと非構造化データの両方の分析結果を組み合わせることができます。
- 構造化データの場合: Amazon Athena の販売記録に接続し、自然言語を SQL クエリに変換します
- 非構造化データの場合: Amazon Titan Text Embeddings と Amazon OpenSearch を使用して、カスタマーレビューやマーケティングレポートに対してセマンティック検索を実現します
Amazon Bedrock in SageMaker Unified Studio のインターフェースは、両方のソースからの結果をシームレスに組み合わせ、基盤となるデータ構造やクエリ言語をユーザーが理解する必要なく、包括的なインサイトを提供します。次の図は、ユーザーの初期操作から最終的なレスポンスまでのワークフローを示しています。ユーザーインタラクションフローの詳細については、関連する GitHub リポジトリをご確認ください。
ソリューションアーキテクチャ
前図のアーキテクチャは、 Amazon Bedrock in SageMaker Unified Studio がどのようにデータフローを調整するかを示しています。ユーザーが自然言語インターフェースを通じて質問を投げかけると、チャットエージェントは、Amazon SageMaker Unified Studio の Amazon Bedrock 機能を通じて Amazon Athena の構造化データをクエリするか、Amazon Bedrock のナレッジベースを検索するか、または包括的なインサイトを得るために両方のソースを組み合わせるかを判断します。このアプローチにより、営業、マーケティング、製品、サプライチェーンのチームは、技術的な専門知識に関係なく、効率的にデータ駆動型の意思決定を行うことができます。たとえば、このチュートリアルを終えると、「今四半期のトップ 5 の売れ筋商品と、それぞれの主要な顧客の苦情を教えてください」や「衣料品の北米市場に影響を与えたサプライチェーンの問題はありましたか?」といったプロンプトでデータをクエリできるようになります。
以下のセクションでは、Amazon SageMaker Unified Studio プロジェクトのセットアップ、ナレッジベースの作成、自然言語クエリインターフェースの構築、およびソリューションのテストについて説明します。
Amazon SageMaker Unified Studio のセットアップ
Amazon SageMaker Unified Studio は、すべてのデータとツールを使用できる分析と AI のためのブラウザベースのウェブアプリケーションです。Amazon SageMaker Unified Studio では、AWS Identity and Access Management (IAM) の認証情報、AWS IAM アイデンティティセンター を通じた IdP の認証情報、または SAML 認証情報を利用できます。
Amazon DataZone の AWS Management Console にアクセスすることで、ドメインの Amazon SageMaker Unified Studio の URL を取得できます。Amazon SageMaker Unified Studio をセットアップするには、管理者ガイドの手順に従ってください。
生成 AI アプリケーションの構築
Amazon SageMaker Unified Studio は、生成 AI を探索し構築するためのツールを提供します。まずはプロジェクトを作成する必要があります。
- Amazon SageMaker Unified Studio を開き、ページ上部の Generative AI playground を選択します。
- ここでは、 chat インターフェースを通じて、さまざまな基盤モデル (FM) を探索、試行、比較することができます。
同様に、Image & video playground で画像と動画のモデルを試すことができます。
- チャットエージェントの作成を開始するには、チャットプレイグラウンドウィンドウで Build chat agent を選択します。アプリを構築する前に、新しいプロジェクトを作成します。Create project を選択してください。
- プロジェクト名を入力します。次に、利用可能なプロファイルから Generative AI application development を選択します。このプロファイルには、生成 AI アプリケーション開発で Amazon Bedrock コンポーネントを使用するために必要なすべての要素が含まれています。Continue を選択します。
- 次の画面では、すべての設定をデフォルト値のままにしておきます。Continue を選択して次の画面に進み、Create Project ボタンを選択してプロジェクトの作成プロセスを開始します。プロジェクトのセットアップが完了するまで数分かかります。
プロジェクトを作成したら、生成 AI アプリケーションの構築を開始します。
前提条件
Amazon SageMaker Unified Studio で Amazon Bedrock のアプリケーションを作成する前に、AWS アカウントでいくつかのリソースをセットアップする必要があります。これにより、セールス分析アプリケーションが依存するバックエンドインフラストラクチャとサービスがプロビジョニングされます。これには、構造化された売上データのクエリを可能にするために、Amazon API Gateway、AWS Lambda 関数 、Amazon Athena のセットアップが含まれます。
- 必要な AWS リソースをデプロイします:
- 任意の AWS リージョンで AWS CloudFormation スタックを起動します:
- スタックのデプロイ後、CloudFormation の出力タブから API Gateway URL の値
TextToSqlEngineAPIGatewayURL
をメモしてください。 - AWS Secrets Manager コンソールに移動し、シークレット
<StackName>-api-keys
を見つけます。シークレットを取得を選択し、以下のプレーンテキスト文字列からapiKey
の値をコピーしてください。
{"clientId":"default","allowedOperations":["query"],"apiKey":"xxxxxxxx"}
- 任意の AWS リージョンで AWS CloudFormation スタックを起動します:
後で Amazon Bedrock in SageMaker Unified Studio を設定する際に、これらの値が必要になります。
- 3 つのサンプルデータファイルをダウンロードします。これらのファイルには、生成 AI モデルによって生成された合成データが含まれており、ナレッジベースの構築に使用する顧客レビュー、顧客アンケートの回答、世界のニュースが含まれています:
- product-reviews.txt – ユーザーからの製品ごとのレビュー
- survey-response.txt – アンケートを通じて収集したユーザーフィードバック
- world-news.txt – 最近の業界および経済ニュース
- API 設定をダウンロードします:openapi_schema.json。このファイルは、売上データを照会する関数のセットアップ時に使用します。
以上です!これらのリソースが準備できたら、セールス分析アプリケーションを作成できます。以降のセクションでは、これらのファイルをいつ、どのように使用するかを詳しく説明します。
チャットエージェントの指示設定
Amazon Bedrock in SageMaker Unified Studio のチャットエージェントアプリケーション に移動します。ドロップダウンからモデルを選択します (これは後で変更可能です – データと機能をサポートしていることを確認してください)。チャットエージェントの指示フィールドに以下を入力します:
この指示により、AI アプリケーションは販売分析エージェントとして機能し、与えられた販売データスキーマに基づいて、製品レビューやその他の販売関連データにアクセスしながら、構造化された応答を提供します。
このアプリケーションでは、非構造化データを処理するためのナレッジベースと、構造化データを照会するために Amazon Athena を使用する関数という 2 つの主要なコンポーネントを作成します。これらのコンポーネントは連携して、生成 AI アプリケーションの情報処理と取得を行います。
ナレッジベースの作成
ナレッジベースを使用すると、アプリケーションでカスタマーレビューやニュース記事などの非構造化データを分析できます。
- 現在のチャットエージェント画面で Data セクションを選択します。
- Create new Knowledge Base を選択し、新しいナレッジベースの名前を入力します。また、チャットエージェントがこのナレッジベースの目的を理解できるように、簡単な説明を入力する必要があります。
This contains product-specific reviews from users, user feedback gathered via survey, and recent industry and economic news
- ナレッジベースのデータソースを設定するには、ローカルファイルを使用するか、Web クローラーを設定するという 2 つのオプションがあります。Web スクレイピングは、アクセス権のある公開 Web ページからコンテンツを自動的に抽出します。ツールに Web サイトの URL を追加すると、これらのサイトをクロールし、定義されたすべての URL からナレッジベースを作成します。このプロセスにより、複数の Web ソースから効率的に情報を収集して構造化し、必要に応じた包括的なデータセットを構築できます。
この記事では、前述の非構造化データを含むファイル (product-reviews.txt
、survey-response.txt
、world-news.txt
) をアップロードします。
- Click to upload を選択し、3 つのファイルをアップロードします。パース設定はデフォルトのままにしてください。
- 埋め込みモデルとして、Amazon Titan Text Embeddings V2 または他の埋め込みモデルを選択します。
- ベクトルストアとして OpenSearch Serverless を選択します。
- これらの選択を行った後、Create を選択してナレッジベースを作成します。
- ナレッジベースの作成が完了したら、Select Knowledge Base ドロップダウンからアプリケーション用のナレッジベースを選択します。
この非構造化データは、生成 AI アプリケーションのナレッジベースを強化するために使用され、カスタマーレビュー、アンケート回答、ビジネス分野に関連する最新ニュースに基づいて、情報を処理しインサイトを提供できるようになります。
非構造化データの接続が正しく機能していることを確認するために、このサンプルプロンプトをアプリケーションに送信してください。生成 AI システムは非決定論的であるため、応答は毎回同じにはならないことに注意してください。
プロンプト:
期待されるレスポンス:
関数の作成
このセクションでは、Amazon API Gateway と連携してデータベースにクエリを実行する関数を作成します。このクエリは Lambda 関数に転送され、Lambda 関数では Amazon Athena を使用して SQL クエリを処理し、Amazon Simple Storage Service (Amazon S3) からデータを取得します。これらの AWS インフラストラクチャは、CloudFormation テンプレートの一部としてすでにデプロイされています。構造化データセットには、2010 年から 2017 年までの製品の注文情報が含まれています。この過去のデータにより、関数は 7 年間にわたる売上傾向、製品パフォーマンス、その他の関連指標を分析することができます。このアプリケーションは、この関数を使用して構造化データ分析機能を統合し、すでに組み込まれているレビューやニュースからの非構造化データと共に、具体的な売上データに基づくインサイトを提供できるようにします。
- Amazon Bedrock in SageMaker Unified Studio のチャットエージェントアプリケーションで、画面上の Functions セクションを展開します。Create New Function を選択します。
- 関数の名前を入力し、説明を記入します。
- 関数スキーマについては、Import JSON/YAML を選択します。先ほどダウンロードした
openapi_schema.json
ファイルから API スキーマをインポートします。 - 重要:インポート後、スキーマ内の API エンドポイント URL を変更する必要があります。CloudFormation スタックの出力
TextToSqlEngineAPIGatewayURL
から取得した実際の値に置き換えてください。このステップにより、関数がアプリケーションの適切な API エンドポイントに正しくリンクされます。
- Authentication method で、API Keys (Max. 2 Keys) を選択し、以下の詳細を入力します:
- Key sent in: Header
- Key name:
x-api-key
- Key value: Amazon Secrets Manager の
apiKey
の値を入力します。
- Create を選択し、関数の作成が完了するまで待ちます。
- 関数の作成が完了したら、Functions ドロップダウンからアプリケーション用の関数を選択します。
構造化データへの接続が正常に機能していることを確認するために、以下のサンプルクエリをアプリケーションに送信してください。生成 AI システムは非決定論的であるため、応答は毎回同じにはならないことに注意してください。
プロンプト:
期待されるレスポンス:
アプリケーションの共有
アプリケーションを構築した後、Amazon SageMaker Unified Studio を通じて組織内の他のユーザーと共有することができます。
- アプリケーションインターフェイスの右上隅にある Share を探して選択します。
- 共有ダイアログで、エイリアスでユーザーを検索し、Invite を選択して共有リストに追加します。
- 必要なユーザーをすべて追加したら、共有ダイアログからアプリケーションの URL をコピーし、任意の通信手段を使用して追加したユーザーに URL を送信します。
注意: リンク共有をオンにすると、リンクを持っている人は誰でもアプリを購読して使用できるようになります。特定のユーザー名を追加した場合、それらのユーザーのみがアプリを閲覧でき、「共有された生成 AI アセット」セクションに表示されます。
共有アプリケーションを使用するには、有効な Amazon SageMaker Unified Studio のアクセス認証情報が必要です。アクセスに問題が発生した場合は、AWS 管理者に連絡してください。
使用例
以下の例では、グローバルな小売サイトがこのソリューションを使用して、販売分析プロセスを変革し、価値のあるインサイトを抽出する方法を示します。このアプローチの効果を示す 3 種類のクエリを見ていきましょう:
- 売上実績を理解するための構造化データの分析
- インサイトを抽出するための非構造化カスタマーフィードバックの分析
- 包括的なビジネスインテリジェンスのための両データソースの組み合わせ
以下の例では、セールスアナリストが基本的な会話形式のクエリを通じて、価値のあるインサイトを抽出する方法を紹介します。
生成 AI システムは非決定論的であるため、応答は毎回同じにはならないことに注意してください。生成 AI システムは誤った情報を生成する可能性もあるため、応答の正確性を評価する際は注意が必要です。また、構造化データソースはダウンロード時にランダムに生成されるため、結果が必ずしも一致するとは限りません。Amazon S3 の CSV データソースにアクセスして、結果を手動で評価することができます。この例では Anthropic Claude 3 Sonnet モデルを使用しましたが、他のモデルも試してみることをお勧めします。
構造化データの例
クエリ可能な特徴量カラムは以下の通りです: Region (地域)、Country (国)、Item Type (商品タイプ)、Sales Channel (販売チャネル)、Order Priority (注文優先度)、Order Date (注文日)、Order ID (注文 ID)、Ship Date (出荷日)、Units Sold (販売数)、Unit Price (単価)、Unit Cost (単位コスト)、Total Revenue (総収益)、Total Cost (総コスト)、Total Profit (総利益)。このデータは 7 つの地域と 100 以上の国をカバーしており、以下の商品タイプが含まれています: ベビーフード、飲料、シリアル、衣類、化粧品、果物、家庭用品、肉類、オフィス用品、パーソナルケア用品、スナック、野菜。
プロンプト 1:
予想される応答 1:
プロンプト 2:
予想される応答 2:
非構造化データの例
以下の例では、非構造化データを照会するために使用できる自然言語プロンプトをいくつか紹介します。これらのクエリの目的は、テキストデータを照会して質問に回答し、共通のテーマを特定することです。
クエリ可能なデータには、ユーザーからの製品固有のレビュー、アンケートを通じて収集したオンラインとオフラインのフィードバック、最近の業界や経済ニュースが含まれます。
プロンプト 1:
予想される応答 1:
プロンプト 2:
予想される応答 2:
データ結合の例
以下は、構造化データと非構造化データの両方のソースに対してクエリを実行し、その結果をシームレスにビジネスインサイトとして組み合わせることができる、自然言語プロンプトの例です。
プロンプト 1:
予想される応答 1:
プロンプト 2:
予想される応答 2:
クリーンアップ
これらの手順でデプロイしたリソースをクリーンアップするには、まず CloudFormation スタックを削除します。その後、Amazon SageMaker Unified Studio プロジェクトから Amazon Bedrock のリソースを削除し、Amazon SageMaker Unified Studio のドキュメントに従ってドメインを削除できます。
まとめ
この記事では、Amazon Bedrock in SageMaker Unified Studio が、生成 AI アプリケーション開発を複雑な技術的な作業から、シンプルなポイント&クリックの操作に変えることをご紹介しました。従来のアプローチでは、専門的な ML の知識と多大な開発時間が必要でしたが、Amazon Bedrock in SageMaker Unified Studio を使用することで、さまざまなスキルレベルのユーザーが、数週間ではなく数時間で本番環境対応の AI アプリケーションを作成できるようになります。
主なメリットとして、コーディングの専門知識がなくても、誰でも高度な生成 AI アプリケーションを構築できます。事前に構築されたコンポーネントにより、価値の実現までの時間を短縮でき、一元管理によってエンタープライズガバナンスを維持できます。さらに、統一された使いやすいインターフェースを通じて、組織のデータに安全にアクセスできます。この同じアプローチは、営業分析以外にも、チームが企業データと大規模言語モデルを組み合わせた AI アプリケーションを迅速に構築する必要があるシナリオにも適用できます。これにより、組織全体で生成 AI を真に利用可能にします。
組織の AI 機能を変革する準備はできましたか?ステップバイステップのガイドに従って最初の生成 AI アプリケーションの構築を始めるか、Amazon Bedrock in SageMaker Unified Studio にアクセスしてビジネスニーズに合ったソリューションをさらに探索してください。
著者について
Ameer Hakme は、ペンシルベニア州を拠点とする AWS ソリューションアーキテクトです。北東地域のインディペンデント・ソフトウェア・ベンダー (ISV) と協力し、AWS クラウド上でスケーラブルでモダンなプラットフォームの設計と構築を支援しています。AI/ML および生成 AI のエキスパートとして、お客様がこれらの最先端テクノロジーの可能性を引き出せるよう支援しています。余暇にはバイクに乗ったり、家族と質の高い時間を過ごすことを楽しんでいます。
Adam Gamba は、AWS のソリューションアーキテクトであり、アナリティクスおよび AI/ML スペシャリストを目指しています。コンピュータサイエンスのバックグラウンドを持ち、テクノロジーを活用して実世界の問題に対するソリューションを構築することに強い関心を持っています。ニュージャージー州出身で、現在はバージニア州アーリントンを拠点としており、ロッククライミング、ピアノ演奏、料理、地元の美術館やコンサートに行くことを楽しんでいます。
Bhaskar Ravat は、ニューヨークを拠点とする AWS のシニアソリューションアーキテクトで、AI の変革的な可能性に深い関心を持っています。AI が日常生活や人間の経験全般にどのような影響を与えるかを探求することに情熱を注いでいます。お客様のソリューション構築やサポートを行っていない時は、4 冊の本を同時に読んでいます。
Kosti Vasilakakis は AWS のプリンシパルプロダクトマネージャーです。元データサイエンティストからプロダクトマネージャーに転身し、現在は Amazon Bedrock in SageMaker Unified Studio のリーダーとして、企業が高品質な生成 AI アプリケーションをより迅速に構築できるよう支援しています。AI の急速な進歩に感銘を受け続けており、その民主化に携われることを楽しみにしています。仕事以外では、個人の生産性向上のための自動化コードを書いたり、テニスをプレイしたり、家族と自然の中で過ごしたりしています。