Amazon BedrockのIAMポリシーとユースケースの詳細を申告してからチャットを試すまで

# はじめに

今日は子どもたちが Youtube に夢中だから、スキマ時間で気になっていた Bedrock を触ってみる

私も今日から駆け出し Bedrock エンジニア :rocket: 

# Bedrock ページってどうなってるの？

AWS コンソール画面で Bedrock ページを開いてみる

## ベースモデルはリージョンによって種類が違う

東京よりバージニアのモデルのほうが種類多いんですね

東京のベースモデル（4種類）

![東京のベースモデル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/30405a50-c718-492b-dcc4-c196f782534b.png)

バージニアのベースモデル（20種類）

![バージニアのベースモデルは東京より多い数が用意されている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/d3e5a676-b1a6-ceeb-7ad2-8dcf284d8fb9.png)

画像解析には Anthropic社 の `Claude 3 Sonnet`が良いとクラスメソッドさんの記事で教えていただいたので、バージニアにして触っていこう

Anthropic はウィキペディアによると

> Anthropicとは、OpenAI の元メンバーによって設立されたアメリカの人工知能スタートアップ企業兼公益法人である 。

でして、Amazon や Google が出資する企業（Microsoft * OpenAI への対抗馬という認識です）


本題に戻り、AWSコンソールを開くと、上の方に注意文言でてますね...

> Bedrock を利用するには、Bedrock の FM に対するアクセスをリクエストする必要があります。そのためには、正しい IAM 許可  が必要です。
> 一部のモデルでは、アクセスをリクエストする前に、まずユースケースの詳細を送信する必要がある場合があります。これらのモデルの詳細については、プロバイダー ページを参照してください。

どうやら IAM 許可だったり、モデルを提供しているプロバイダーに「ちょっと使わせて〜」と言う必要があるようだ

## IAMユーザーへのポリシー付与

とりあえず、今サインインしているIAMユーザーにAmazonBedrockFullAccessポリシーを追加する
~~俺はいつだってフルアクセス~~ （適切に権限設定してください:cop:）

![IAMユーザーにAmazonBedrockFullAccessポリシーを追加している](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/c0cf38c5-d40a-a01a-9966-a9bedbcd9e09.png)

## ユースケースの詳細を送信

次はこの注意文言を対応するぞ

> 一部のモデルでは、アクセスをリクエストする前に、まずユースケースの詳細を送信する必要がある場合があります。これらのモデルの詳細については、プロバイダー ページを参照してください。

画面右上の「モデルアクセスを管理」ボタンをクリックする

![BedrockのAWSコンソール画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/fe7dfcc4-b91a-5ae8-f5a5-1f94a5526646.png)

お、使えるモデルにチェックつけるみたい

でも、今回使いたい`Claude 3 Sonnet`はユースケースの詳細を送信する必要があるようだ

![モデルClaude 3 Sonnetのチェックボックスは非活性になって押せない](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/b3b62ff6-beca-2b67-48c1-20681aa319cd.png)

以下の内容を入力して送信する
- 会社名
- 会社のウェブサイトのURL
- どの業界で事業を行っていますか？
- 対象ユーザーは誰ですか？
- Anthropic モデルは次のいずれかの目的で使用しますか？
- 　ユースケースの説明を入力してください

![ユースケースの申請画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/51226d56-429f-ec43-8152-c209f3e740d1.png)

お、チェックつけられるようになったぞ（わくわく

「モデルアクセスをリクエスト」ボタンをクリック

![モデルClaude 3 Sonnetのチェックボックスが押せるようになった](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/83f478c1-7e50-f410-8e55-56a83f4eeb32.png)


最初はステータスが進行中ですが

![ステータスが進行中と表示されている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/a0598f2d-12af-e778-7111-b571fae80168.png)

数分待つとアクセスが付与されました 

![ステータスにアクセスが付与されましたと表示されている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/1cdd2a3d-cf65-abe7-3275-b949123b3ef5.png)

やっと触れるぞ

## 動作確認

左のナビゲーションメニューからプレイグラウンドのチャットを選択

![Bedrockのページの左のナビゲーションメニューにチャットメニューが表示されている](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/ed71f5ba-0c3b-20d2-8cf3-f6dbd91a3712.png)

「モデルを選択」ボタンをクリックして`Claude 3 Sonnet`を指定して「適用」ボタンをクリックする

![モデル設定にはプロバイダーとモデルとスループットを選択する必要がある](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/1d20415c-fa0b-40e3-f340-2ff315b2a4c5.png)

「Image」ボタンをクリックして画像をアップロードして、プロンプトを入力します

![Bedrockのチャット機能が使える状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/e9908325-e503-39f5-c008-55081d6546f2.png)

今回使う画像は、私が愛するアミューズメントパークで撮影したブロック :rabbit: 

プロンプト入力フォームに`アミューズメントパークの画像です。この画像を説明してください。`と入力して実行ボタンをクリックします

![ラビットポーズをとっている川島さんと田村さんのレゴブロック](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/dcc96e7d-6822-cb0b-6acd-d4302615def7.png)

![プロンプト入力フォーム](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/87957780-15d1-5960-eb3e-6c19f295aca7.png)


数秒待ちます

レスポンスが返ってきﾀ...... ｷﾞｬ、ｷﾞｬｬｬｬｬｬ-------!!!!!
ェ、EIGOoooooooo!!!!!!! :angel_tone2:

![画像の説明が英語でされている画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/00f3ae00-eaf5-4425-c3dd-843a633f5017.png)

プロンプトを書き直します

`アミューズメントパークの画像です。この画像を説明してください。説明文は日本語に変換してください。`

![プロンプトを書き直した](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/c2ecd7b5-d7c1-8809-f50c-96eda170fd27.png)

日本語でレスポンスが返ってきました。

![日本語で説明された結果画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/6ab1b70e-b366-b2c7-239a-197aff9781ff.png)

> この画像はアミューズメントパークを表しているわけではありません。代わりに、非常に詳細で創造的なレゴの彫刻や建造物のようです。
> 
> 主な焦点は、レッドレンガとグレーのトリム詳細で作られたアーチ型の入り口や扉の中に立っている、完全にレゴブロックで作られた大きな人形やキャラクターです。レゴの人形自体は、様々な shade のグレー、黒、そしていくつかの黄色の部品で構成されており、機械的または ロボット 的な外観を持っています。
> 
> アーチ型の入り口と周りの壁は、レッドレンガを使って入念に作られており、レゴの作品によくあるような、複雑なパターンやデザインが施されています。地面もレゴのスタッドでできており、小石のような質感を作り出しています。
> 
> 全体として、この画像は熟練したレゴアーティストやレゴ愛好家による、精巧で想像力豊かなレゴ作品の製作能力を示しています。これは、レゴブロックのおもちゃの組み立てを超えた、多彩で詳細な構造物を作る可能性を物語っています。

アミューズメントパークじゃないって言われた...ってか見抜けるのごいごいす...

とはいえ、説明文が長いですね

設定欄の長さを 2000 から 50 に変更して再実行してみます

![設定欄を50に設定している画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/097d329a-142d-9805-de5c-8a72a2a11028.png)

再実行してみると...

![さっきと同じ文章だけど、文章が途中で切れている結果画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/6ef49172-f009-7260-c85a-509efee2caf7.png)

途中で文章が切れた...（ｸﾞﾌッ）

> この画像はアミューズメントパークを表すものではありません。これはレゴブロックを使った、非常に精巧で創造的な彫刻作品や


プロンプトを改善してみます

プロンプト: `この画像を説明してください。説明文は日本語に変換して50文字以内の文章にしてください。`

![プロンプトを修正した後の実行結果画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134221/36a91d03-95d2-ee6d-05ec-c8cde6434c3b.png)

> この画像は、レゴブロックで作られた精巧な建造物の作品です。

うん、間違ってないよ！ すごいよ！

# おわりに

プロンプトを調整すると、より欲しい文章が出てくると思うから楽しみだなぁ

APIでも呼び出せるから試してみたいところ

# 参考

https://dev.classmethod.jp/articles/claude-3-image-processing/