Amazon Bedrockを知る②　ハンズオンラボ

本記事は [Amazon Bedrock Advent Calendar 2023 by ナレコム](https://qiita.com/advent-calendar/2023/bedrock-knowledgecommunication) の5日目の記事です。

Amazon Bedrock Advent Calendar 2023 by ナレコム ではAmazon Bedrockの基本的な概要から具体的な各モデルの作り方や事例紹介などを行っていきます。

### はじめに

Amazon Bedrockには初めて触る人にも理解してもらうための複数のコンテンツが用意されています。
今回はその中の１つ、「ハンズオンラボ」の手順を日本語で紹介します。基本的にNotebookが実行できる環境で手順通りに必要なモジュールをインストールし、必要な権限設定をすることで利用することができます。


### ハンズオンラボ概要

Amazon Bedrock AIスタイリストラボへようこそ！

このラボでは、生成AIの一般的な使用パターンを探究し、Amazon Bedrockを使った実装経験を得ることができます。Amazon Bedrockは、第三者提供のファウンデーションモデル（FMs）に加えてAmazonのものにアクセスできる完全管理型のサービスです。Amazon Bedrockを使用すると、用途に最適なモデルを選択できます。

このラボでは、AIスタイリストアプリケーションを構築します。これは、オフィスに戻るためのアウトフィットを顧客が作成するのを助けるためにAmazon Bedrockの機能がどのように組み合わさるかを探る新しいショッピング体験です。このラボは、[AIスタイリストデモ](https://aistylist.awsplayer.com/)の後のAmazon Bedrock学習の次のステップです。テキストや画像の生成、チャット体験、エンティティ抽出、検索拡張生成（RAG）などの技術を使用します。Amazon BedrockのAPIやSDK、LangChainやFAISSといったオープンソースソフトウェアを使用したこれらのパターンの実装経験を得ることができます。

ラボの目標：

- 顧客プロンプトから製品属性を抽出する
- RAGを使用して、Amazon Titan Embeddingsに商品カタログと注文履歴を組み込む
- 顧客プロンプトから5つのスタイルルックを生成するためにエンベディングをクエリする
- 5つのルックの画像を生成する
- 商品についての顧客レビューについて質問に答えるチャットボットを追加する
- 商品についての顧客レビューの要約を生成する
- 天気データを関連付けてアクセサリーを推薦するDIYエージェントを統合する

### ハンズオンの始め方

#### ノートブック環境を選択する

このワークショップは一連の**Pythonノートブック**として提示されており、お好きな環境で実行できます：

- 豊富なAI/ML機能を備えた完全管理型の環境をご希望の場合は、[SageMaker Studio](https://aws.amazon.com/sagemaker/studio/)の使用をお勧めします。すぐに始めるには、[ドメインクイックセットアップの手順](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html)を参照してください。
- より基本的な完全管理型の体験を求める場合は、[SageMaker Notebookインスタンスを作成](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html)することもできます。
- 既存の（ローカルまたはその他の）ノートブック環境を使用する場合は、[AWSの呼び出し資格情報](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)があることを確認してください。

#### ワークショップを実行する
- 必要なライブラリをインストールするために[Intro to Bedrock](./aistylist/intro_to_bedrock.ipynb)ノートブックを実行します。
- ワークショップを実行するために[AiStylist notebook](./aistylist/aistylist.ipynb)を実行します。


#### BedrockのためのAWS IAM権限を有効にする

ノートブック環境から仮定するAWSアイデンティティ（SageMakerからは[*Studio/notebook Execution Role*](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html)、または自己管理ノートブックのためのロールやIAMユーザーになる可能性があります）は、Amazon Bedrockサービスを呼び出すために十分な[AWS IAM権限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)を持っている必要があります。

Bedrockへのアクセスをあなたのアイデンティティに付与するために、以下の手順を実行できます：

- [AWS IAMコンソール](https://us-east-1.console.aws.amazon.com/iam/home?#)を開きます
- SageMakerを使用している場合や他のIAMロールを仮定している場合はあなたの[ロール](https://us-east-1.console.aws.amazon.com/iamv2/home?#/roles)を、それ以外の場合は[ユーザー](https://us-east-1.console.aws.amazon.com/iamv2/home?#/users)を探します
- *Add Permissions > Create Inline Policy* を選択して新しいインラインポリシーを添付し、*JSON* エディタを開いて以下の例ポリシーを貼り付けます：

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BedrockFullAccess",
            "Effect": "Allow",
            "Action": ["bedrock:*"],
            "Resource": "*"
        }
    ]
}
```

> ⚠️ **注意:** Amazon SageMakerを使用する場合、ノートブック実行ロールは通常、AWSコンソールにログインするユーザーまたはロールとは*別の*ものになります。Amazon BedrockのAWSコンソールを探索したい場合は、コンソールユーザー/ロールにも権限を付与する必要があります。

Bedrockの詳細なアクションとリソースの権限については、Bedrock開発者ガイドを確認してください。


#### ノートブックをクローンして使用する

> ℹ️ **注意:** SageMaker Studioでは、「System Terminal」を開いてこれらのコマンドを実行することができます。*File > New > Terminal* をクリックします。

ノートブック環境が準備できたら、このワークショップリポジトリをそれにクローンします。

```sh
sudo yum install -y unzip
git clone https://github.com/aws-samples/amazon-bedrock-aistylist-lab.git
cd amazon-bedrock-aistylist-lab
```

これで、ラボノートブックを探索する準備ができました！

### まとめ

今回はハンズオンラボを利用するための基本的なセットアップ方法について紹介しました。
ハンズオンラボを通じて、参加者はAmazon Bedrockの基本的な使用方法と応用の幅を実践的に学ぶことができます。ラボでは、生成AI技術の基本パターンの実装から、顧客の要望に合わせた商品の提案や、画像生成、チャットボットの活用、顧客レビューの要約といった進んだ応用までをカバーしております。さらに、Amazon Titan Embeddingsを使用して商品カタログを組み込み、スタイル提案を生成する実践的な手法も学ぶことができます。Pythonノートブックとして提供されるワークショップは、AI/MLに富んだ環境であるSageMaker Studioや、他のノートブック環境を使用してアクセス可能です。

---

また、ナレッジコミュニケーションでは  **「[Musubite](https://recruiting.musubite-job.com/features/company/knowledge-communication)」** というエンジニア同士のカジュアルトークサービスを利用しています！この記事にあるような生成AI 技術を使ったプロジェクトに携わるメンバーと直接話せるサービスですので興味がある方は是非利用を検討してください！

https://recruiting.musubite-job.com/features/company/knowledge-communication