初めに

Amazon Bedrock使おうとした際に新規と書かれているQuickstartというのがあったので使ってみた記事です。
※Bedrock初心者なので間違った認識があるかもしれないです。

Amazon Bedrock Quickstartとは

わずか数クリックでBedrockが使えるAPIキーの発行ができる、初心者向けの爆速スタート機能だと思いました。
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/getting-started.html
※公式に書いてる内容が難しかったので主観です。
下記に画像を載せていますが、三つのGenerate text・Stream responses・Analyze mediaがありそれぞれ用途で使い分けるみたいです。

実践

今回画像の識別機能使いたいので一番右選びます。

Converseを押すとこんなのが出てくるのでGenerate API Keyを押すと


Keyが作成されます。

このKeyがQuickstartのスゴいところです。

作成されたKeyはBedrockを一時的に使用できる機能を持っています。
普通はIAM作成してアクセスキー発行してみたいな面倒な作業が入るところを省略できるみたいです。

ただし便利なだけではないのです。
期限が過ぎたら再度同じ手順でKeyを作成しないといけないという面倒さもあります。
ただこれは一時的なKeyの発行でセキュリティ向上のためなのでデメリットというわけではないと思っています!

オレンジ色のCopy API keyボタンでコピーしたKeyをターミナルで貼り付けます。
これでBedrockと通信できるようになりました!

Keyの発行の下にはstep2と書かれているのがあります。
これはおそらくKey発行後のBedrockを使用する手順のようなものでした。

methodの選択もできるみたいです。

ここまでがAmazon Bedrock Quickstartの紹介です。

ここからは画像識別をしてみます。

⚠️亀とスッポンの画像を載せているので苦手な方は注意してください

先ほど発行したKeyを使ってClaude 3 Haikuで亀とスッポンの画像を識別させます。
ソースは以下です。

import boto3

SOFTSHELL_FILE = "image1.jpg"
TURTLE_FILE = "image2.jpg"

# 2枚の画像をそれぞれ読み込む
with open(SOFTSHELL_FILE, "rb") as f:
    softshell_bytes = f.read()

with open(TURTLE_FILE, "rb") as f:
    turtle_bytes = f.read()

# クライアントの作成(東京リージョン)
client = boto3.client(
    service_name="bedrock-runtime",
    region_name="ap-northeast-1"
)

print("画像を送信中... 📸🐢")

# Converse APIで送信
response = client.converse(
    modelId="anthropic.claude-3-haiku-20240307-v1:0",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "image": {
                        "format": "jpeg", # この書き方で固定です
                        "source": {"bytes": softshell_bytes}
                    }
                },

                {
                    "image": {
                        "format": "jpeg",
                        "source": {"bytes": turtle_bytes}
                    }
                },
                # AIへの命令テキストパーツ
                {
                    "text": "2枚の画像を送信しました。どちらの画像に『亀』が写っていて、どちらの画像に『スッポン』が写っているか、それぞれの画像の特徴(背景など)を交えて教えてください。"
                }
            ]
        }
    ]
)

print("\n--- AIからの回答 ---")
print(response['output']['message']['content'][0]['text'])

用意した画像は以下です
image1(スッポン)

image2(亀)

実行!!

約3秒ほどで結果が返ってきて見事に正解してくれました!

まとめ

Amazon Bedrock初心者でも30分くらいで画像識別機能を作れました。
Quickstartはただ早くできるというだけでなくIAMを作成しなくても良いというセキュリティの向上もあり、初心者でも分かるようにstepで分けられたガイドもありました。
軽く検証したい際はかなり便利だと思いました!


以上です。最後までお読みいただき、ありがとうございます🙇