Amazon Bedrock IDE(プレビュー)のChat agent機能を触ってみる

# はじめに
先日、AWSの技術カンファレンスであるre:Invent 2024で**Amazon Bedrock IDE**がプレビューとして発表されました。
ざっくりとAWSの生成AIサービスであるAmazon Bedrockを使って、GUI上から簡単に生成AIアプリが開発できるサービスとのことです。
本記事では、Amazon Bedrock IDEの中でもChat agentの機能について、試してみたいと思います。

# 1. AWSが提供するAIサービス
本題のAmazon Bedrock IDEの説明に入る前に、AWSのAIサービスについて概要を説明します。

AWSのAI関連サービスは、大きく以下の２つ分類されます。
- AI(人工知能)サービス：AIを活用して特定の技術課題を解決するためのサービス
- ML(機械学習)サービス：機械学習を行い。AIモデル自体をカスタマイズするための環境を提供するサービス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/5c3783d5-0b7b-f0f3-ad1b-fe096ae75407.png)
引用：https://aws.amazon.com/jp/builders-flash/202401/awsgeek-ai-ml-services/

本記事でご紹介するAmazon Bedrock IDEは、MLサービスに該当します。
代表的なサービスとしては「Amazon SageMaker」や「Amazon Bedrock」があり、これらはAmazon Bedrock IDEにも密接に関係するので、簡単に説明します。

### Amazon Bedrock
Amazon Bedrockは、様々なAIモデルをAPI経由で利用できるAWSのマネージドサービスです。

例えば、OpenAIのGPT-4oや、AnthropicのClaude 3.5 SonetといったAIモデルをAPI経由で呼び出し、自社のアプリケーションにAI機能を組み込むことができます。

AIモデルには、画像認識に特化したものや、テキスト生成が優れたものなど、多種多様な特性があります。Amazon Bedrockを使うことで、ビジネスのニーズに適切なAIモデルを選択し、アプリケーションに容易に組み込むことができます。

#### 参考

https://speakerdeck.com/minorun365/6yue-ban

### Amazon SageMaker
Amazon SageMakerは、機械学習モデルの開発、トレーニング、デプロイを行うための統合プラットフォームを提供するAWSのマネージドサービスです。

機械学習モデルを作成し、実用化するまでには、一般的に以下のような工程を経ます。
  - ラベリング工程：　データの準備とラベリング
  - 開発工程：　モデルの開発
  - 学習工程：　モデルのトレーニング
  - モデル変換工程：　モデルの評価と最適化
  - モデル推論工程：　モデルのデプロイと推論

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/bc5960d5-baac-1c6a-b144-4624a33963e1.png)
引用：https://dev.classmethod.jp/articles/re-introduction-2022-sagemaker/

Amazon SageMakerは、これらの工程を効率的に実行するための各種ツールと環境を開発者に提供してくれます。

# 2. re:Invent2024でAmazon SageMaker Unified StudiとAmazon Bedrock IDEのプレビュー公開

先日、AWSの主催する技術カンファレンスであるre:Invent 2024が開催されました。
re:Inventの中で「Amazon SageMaker Unified Studi」と「Amazon Bedrock IDE」がプレビューとして公開されました。

### Amazon SageMaker Unified Studio(プレビュー)
Amazon SageMaker Unified Studioは、機械学習(ML)モデルの開発、トレーニング、デプロイを行うための統合プラットフォームを提供するAWSのマネージドサービスです。

概要だけ見るとAmazon SageMakerとの違いが良くわからなかったのですが、どうやら他のAWSサービスとの連携が強化され、より便利なった統合プラットフォームのようです。

> 従来の Amazon SageMaker（Amazon SageMaker AI）でも機械学習（ML）の開発環境を提供しています。
大きな違いとしては、他のAWSサービスとシームレスな統合がある点です。
特に、Amazon Bedrock やデータ分析（Redshiftなど）との統合は、Amazon SageMaker AI では利用できませんでした。
> 引用：https://dev.classmethod.jp/articles/sagemaker-unified-studio/

#### 参考

https://aws.amazon.com/jp/about-aws/whats-new/2024/12/preview-amazon-sagemaker-unified-studio/

### Amazon Bedrcok IDE (プレビュー)
Amazon Bedrock IDEは、生成AIアプリをGUI上から簡単に開発できるサービスです。
サービス自体は、Amazon SageMaker Unified Studioに統合されています。

その中でも今回は、Chat agentの機能を試します。
Chat agentを使用することで、複雑なコーディングを必要とせず、以下のようなアプリケーションをGUIから容易に作成できます。
- ChatGPTのような対話型AIチャットボット
- カスタマイズされた質問応答システム
- 特定の知識を持つ専門的な対話エージェント

#### 参考

https://docs.aws.amazon.com/ja_jp/sagemaker-unified-studio/latest/userguide/bedrock.html

# 3. 事前準備：Amazon SageMaker Unified Studioの設定
前述のとおり、Amazon Bedrock IDEはAmazon SageMaker Unified Studioに統合されています。そのため、Amazon Bedrock IDEを使用するには、まずAmazon SageMaker Unified Studioを利用できる状態にする必要があります。

### 3.1. Amazon SageMaker platformを開く
AWSマネジメントコンソールを開き、「Amazon SageMaker platform」のページを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/0f39f185-c018-c136-b18d-6dec09df3e3a.png)

### 3.2. ドメインを作成する
`Unified Studioドメインを作成します`ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/dec3f388-a051-f5bd-bc95-5f7701ff0dd8.png)

ドメインを作成の画面に遷移すると、既存VPCを選択するか新規VPCを作るか問われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/d6546189-f57f-6f2e-b829-8f9ebd08ccd3.png)

`VPCを作成`ボタンを押すと、AWS CloudFormationの画面が開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/29c6d4a1-6c77-8798-62d6-727c7346f65d.png)

スタックのクイック作成ができるので、そのまま`スタックの作成`ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/5e8b1e05-cc84-3df0-7126-01027287c55d.png)

:::note info
AWS CloudFormationは、AWSリソースの環境構築を設定ファイル (テンプレート) として作成し、設定ファイルから環境構築を自動化できるAWSサービスです。
:::

CREATE COMPLETEになり、作成完了しました。ドメイン作成の画面に戻って、`続行`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/73c61633-afff-958e-459c-19a5440a0f20.png)

AWS IAM Identity Centerを有効にしている場合、どのユーザを使うか問われます。
任意のメールアドレスを指定して、`ドメインを作成`ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/c0bbb728-c0c0-b792-c923-2ea693f89e25.png)

ドメインが作れました。`統合スタジオを開く`ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/e66a845b-b9dd-37cc-4319-cb5f9b6bcb13.png)

### 3.3. Amazon SageMaker Unified Studioを開く

AWS IAM Identity Centerを有効にしていたので、`SSOでサインイン`ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/9ce87731-4edf-c283-8863-dd8f4908b680.png)

AWS IAM Identity Centerに登録された、任意のユーザでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/fb02a7c5-b793-f2f6-b5f9-bdf6fd2509ce.png)

Amazon SageMaker Unified Studioの画面が開けました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/81226c5b-ae5b-7fa9-4b3f-1abcff17e925.png)

### 3.4. プロジェクトを作成する

画面上部に`Select a project`とあるのでマウスカーソル合わせるとメニューが表示されます。
表示されたメニューから`プロジェクトを作成`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/6a79e542-ce5d-9936-deb4-c5b9475dcb22.png)

プロジェクト名と説明は、任意の値を入力します。

プロジェクトのプロファイルは、プロジェクトでプロビジョニングするリソースとツールを指定します。
今回は、Bedrock IDEを使いたいので真ん中の`Generative AI application development`を選択し、`Continue`ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/677bdf11-ff48-67de-e4aa-c1674be8c1c2.png)

そのまま`Continue`ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/54e60d4e-9b25-32b6-ab85-34918d517f50.png)

内容を確認し、`プロジェクトを作成`ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/694a9cc2-11c8-0ecb-5e36-e78ab4be9984.png)

作成中...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/76b24012-ce0f-ccdb-1178-93811da7127e.png)

プロジェクトが出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/c1cc1b7c-16a5-2b45-69a4-e7db33f30b00.png)

# 4. Amazon Bedrock IDEで生成アプリAIを作成する

### 4.1. Amazon Bedrock IDEの画面を表示する

Project overviewにて、画面右上の`新規`ボタンを押すとメニューが表示されます。
メニューから`Chat agent app`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/d00d8a21-0291-0879-1ef2-13befc4d8adc.png)

Amazon Bedrock IDEの画面が開けました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/5dfba23b-6774-3179-91b5-1dc538294569.png)

### 4.2. Chat agentメニューを開く
画面左のメニューから`Build > Chat agent`を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/143aca67-7453-a397-0b6b-b4e5ec7a51ed.png)

### 4.3. Modelを選択する
Modelから任意のモデルを選択します。
今回は、`Anthropic Claude 3.5 Sonnet`を選択しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/0ad17495-0e43-75fd-ebd2-e95f658bb503.png)

モデルを指定すると、他の設定も出てくるので、内容を確認していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/4f68d7f6-cd3d-3bf3-85e8-3a9b9e284c41.png)

### 4.4. Instructions for chat agent ＆examplesを設定する
Instructions for chat agent は、AIに実行してもらいたいタスクの指示を設定します。
今回は以下のデフォルトのままとします。

> You are a virtual assistant that answers user queries politely and clearly.
(あなたは、ユーザーの質問に丁寧かつ明確に答える仮想アシスタントです。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/fcf3067a-ce49-7971-c5c3-2b3f205d4ac4.png)


### 4.5. Inference paramentersを設定する
推論パラメータを設定することで、生成AIの出力を制御できます。
今回はデフォルトのままとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/289a75b5-6afa-a1ab-d701-ef0476b9cada.png)

:::note info
Temperatureは、生成AIの出力のランダム性を制御します。
Top Pは、考慮される確率分布の範囲を制御します。
Top Kは、考慮される最も可能性の高い選択肢の数を制御します。
それぞれ値が低いほど一貫性のある出力が期待でき、値が高いほどランダムな出力が期待できます。
:::

### 4.6. Dataを設定する
Dataは、AIが質問の回答に使用するデータソースを設定することができます。
AIアプリ内で外部データソースから情報を取得し、より専門的な情報に特化したAIアプリができます。今回は特に設定しません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/cee306a0-606a-8299-5425-11eabee9bef7.png)

### 4.7. Guardrailsを設定する
AIにおけるガードレールは、AIの動作や出力を適切な範囲内に保つことで、安全性と倫理性を確保するため機能です。例えば、AIが人を侮辱する。性的な表現の回答をする。などを回避して、出力を制御するできます。

Guardrailsは、既に作成済みのガードレールからアプリに追加するか、新しくガードレールを作成してアプリに追加するか選ぶことができます。今回は特に設定しません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/fef23456-f200-c27c-d1bf-5f808c4a571d.png)


### 4.8. Functionsを設定する
AIが回答を生成する際に外部APIを呼び出しカスタムロジックを設定できます。今回は特に設定しません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/cd0bcad3-b73b-6c3d-8c86-5ea8abcee8e8.png)

### 4.9. UIを設定する
UIは、見た目や使いやすさを向上させるためのオプションを設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/d2f67aab-f6a4-35d5-176f-c7e68b3accd7.png)

Hint text for empty chatは、空のチャットのヒント テキストを設定できます。
Hint text for user inputは、ユーザー入力用のヒント テキストを設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/1534e61e-062e-d4ba-f750-c8be7249bf44.png)

Quick-start promptsは、頻繁に使用するプロンプトを事前に登録しておくことができます。
例えば、「次の内容を要約してください」など、良く使いそうなプロンプトを設定しておくと、ワンクリックで実行できるので便利だと思います。
最大3つまで登録しておくことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/ea9064bf-e50f-b8bf-765e-0024c90c01bc.png)


### 4.10. アプリ作成
一通り設定したのでアプリを作成します。画面右上の`Save`ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/9a39a26d-334d-f5a8-6a5a-e1558af2ce19.png)

作成できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/fa6bcfe6-2afc-b625-05c9-ae233f4616f9.png)

左のメニューから`Aset gallery > My apps`を開くと、作成したアプリが追加されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/4bb7d087-3085-23cf-beea-68642ecbe3ff.png)

### 4.11. 作成したアプリを公開する

`Share and grant access with link`にチェックを入れると、ドメイン内のすべてのユーザーに公開します。
今回作成したドメインには自分しかいないので、チェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/6bcf2469-583e-297e-557a-e45bbae85bb5.png)

:::note info
ユーザは、Amazon SageMaker Unified Studioのドメインに存在するユーザを指します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/50a930b6-2cd2-7972-1de1-6f85597de58c.png)
:::

`Share with specific users or groups`でドメイン内の特定のユーザーやグループに絞って公開することができます。
`Member type`のプルダウンでユーザーからグループか選べます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/9295107c-be02-6ebc-5229-86c5202ac6db.png)

`Share`ボタンを押して、公開します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/28a97d64-5ab6-afe3-9181-671f15f619fe.png)

公開できました。専用のURLリンクも発行されました。
`Copy lInk`を押してURLをコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/87e98d15-17fb-7f14-2705-d2842c023b4c.png)

### 4.12. アプリを使ってみる
先ほどコピーしたURLリンクをブラウザで開いてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/6b94111c-a415-7185-b66b-b21c7403f2ac.png)

試しにAmazon Bedrockの概要について聞いてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/a83277df-c97b-f112-eafb-dc3c7f96f4f7.png)

これで一応アプリを使えるようになりました。

# 所感
### Amazon Bedrock IDEの使用感
 - Amazon Bedrock IDEを初めて使用してみた印象として、GUIベースでAIアプリを簡単に公開までできる点は便利そうです

### Amazon SageMaker Unified Studioの課題

- **UIが使いにくい**
  - Amazon SageMaker Unified Studio のUIの癖が強いというか、機能の配置が直感的でないので、どこに何の機能があるかわかりいくく、必要な機能を見つけるのに時間かかるなと思いました

- **コスト面がお高め**
  - Amazon SageMaker Unified Studioのドメインを構築するにあたり、自動でVPCを作りましたが、VPCエンドポイントが作成されるので結構割高です。(USD 0.014/時間のコスト発生)
  - 自分の場合は、VPCのリソースは都度消していましたが、USD 6.084ほどかかりました
　　(数時間しか使ってないので、何故この料金になるのか謎ではある...)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560123/ca3bb52d-fda6-bd9d-8fbe-8339af8895bd.png)


### 総評
- **用途の限定的**
  - アプリの公開先がIAMユーザーやIAM Identity Centerのユーザーに限定されるため、主に自社内向けのツールとして適しているように思いました
    (実は一般公開も行けるのか？)

- **コストの回収を考える必要がある**
    -  Amazon SageMaker Unified Studio自体の継続的な使用にはコストがかかるため、他の機能も併せて活用する必要があると思いました
   - つまり、コストに見合う開発効率の向上が得られるかどうかは、評価しないとなーという印象です

- **今後の展望**
   - まだプレビュー段階のサービスなので、今後の改善や機能追加に期待です
   - 今後も他の機能などガシガシと使っていきたいと思います(あまりお金かけない程度で