Amazon Bedrock を #Slack アプリから利用する為の設定

Anthropicがその基盤をGCPからAWSに移管したと発表したタイミングで、AWSからはAmazon BedrockとしてClaude APIの提供を始めるよとリリースがありました。
そこで、わたしたちが提供中のSlackアプリである「Party on Slack」でも、Anthropic及びBedrockのClaude APIに対応することを決めました。
当ページではBedrockを実際に利用する方法をまとめています。

https://qiita.com/geeorgey/items/124346b9f4762f7f0e4b

それでは早速AWSの設定をしていきましょう。
手順はざっくりと以下の通りです

- AWSにIAMを設定する
- IAMに必要なポリシーをアタッチする
- IAMからAWS アクセスキーを作成する
- Party on Slackに設定する

## 設定開始

### AWSにIAMを設定する
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_create.html

適切な権限を持つアカウントでIAMを作成しましょう。

## IAMに必要なポリシーをアタッチする
必要なポリシーは２つ
bedrockとCreateAccessKeyです。

```JSON:CreateAccessKey
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CreateOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:GetUser",
                "iam:ListAccessKeys"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

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

### IAMからAWS アクセスキーを作成する

やり方はこちらを参照のこと

https://style.potepan.com/articles/35403.html

これで作成したアクセスキーとシークレットをコピーしておきましょう

### Party on Slackに設定する

![Party_on_Slack_-_Leave_a_Nest_-_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/74e14520-91ff-1d83-3db7-de4a04bd9d76.png)

リージョンについては、今のところバージニア北部(N. Virginia)が、利用可能モデルが多いのでそこにしておきましょう。
東京リージョンはStablediffusionが入ってない等の違いがあります。
画面左カラムにあるModel Accessを開くとこの画面になります

![Amazon_Bedrock___us-east-1-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/a146882d-5c58-7e5d-e305-fae1a2fe793a.png)

モデルは必要なものにチェックをいれて保存する必要があります。
Availableになっているだけでは使えませんので、画面右上にある編集ボタン(Edit)を押して、必要なモデルにチェックを入れてから、画面右下にあるSave changesボタンを押しましょう。

![Amazon_Bedrock___us-east-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/b084cbb5-4a55-6058-98b9-7f6831bd392b.png)



## Bedrockの機能をParty on Slackで利用する
現時点で使えるようにしてあるのは
- Claude
- Stablediffusion(画像生成)

の２つのみです。他の言語モデルは日本語対応がいまいちなので対応しませんでした。

### Bedrock の Claudeを利用するには

![05-george_-_Leave_a_Nest_-_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/4bae0f2c-5d72-e975-9f94-b8ddacd4a71d.png)

いつも通り、言語モデルドロップダウンでClaudeを選んでください。

### BedrockからStablediffusionを利用して画層生成するには
![05-george_-_Leave_a_Nest_-_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/dd58046d-4e99-ceda-de71-a9ece51d8d17.png)

こちらのボタンから画像錬成メニューを呼び出してください。

![05-george_-_Leave_a_Nest_-_Slack-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/0d291e85-ce80-b19d-9c69-5d69cf96ad96.png)

モデルはOpenAIについてはDALL-E2が使えます
Bedrockの設定をしておくと、ここにStablediffusionが加わるようになっています。

![05-george_-_Leave_a_Nest_-_Slack-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22294/33f6ce16-dde9-2b98-2864-019c0a0869a4.png)

各パラメータについて
Cfg scale：
>CFGスケールとは、「生成する画像にプロンプトをどれだけ強く反映するか」を決める値のこと。

https://hoshikat.hatenablog.com/entry/2023/06/17/021610

Seed:
> Seed値を固定すると、同じプロンプトで絵の内容が一定になり、それにより調整したプロンプトの影響度を評価することが可能となります。

https://bocek.co.jp/media/exercise/stable-diffusion/5383/

Step:

### おまけ：画像生成時について
画像生成については、英語で指定してあげたほうが良い結果になりそうです。
今後少し改良して、日本語入力された場合は英語に変換してから渡すような仕組みにしようと思っています。

### Bedrockのスペック及び料金について

https://dev.classmethod.jp/articles/amazon-bedrock-model-spec-and-pricing/

こちらに書かれています。

## まとめ
Amazon Bedrockを使えるようになりました
これによって、これまでClaude APIをゲットできていなかった人が使えるようになります。(最大10万トークンまで行けるのが魅力です)
加えて、Stable diffusionを使った画像生成にも対応しています。
DALL-E2ではできなかった表現力を得ることができるはずです。
ぜひ使ってみてください。
インストールはこちらから：https://lne.st/getparty