Claude 3を使ってさっそくローカルで画像解析してみた！

## Claude 3とは
2024年3月4日の夜中に颯爽と発表された、ClaudeV2.1に次ぐAnthropicの新しい基盤モデルになります。

https://www.anthropic.com/news/claude-3-family

Claude3はOpus、Sonnet、Haikuの3種類のモデルが同時に新しく発表され、それぞれ性能とコスパで差別化されてるようです。
![スクリーンショット 2024-03-05 1.36.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/c4ac0a7c-6466-20c1-efff-737d6eb5cfb0.png)


## 気になる性能は？

一番ハイエンドなモデルOpusではなんとOpenAIのGPT4やGoogleのGemini Ultraを凌ぐベンチマークを叩き出しているようです！これには期待感が高まりますね。

![スクリーンショット 2024-03-05 1.34.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/18129bc6-6aa6-c294-4b46-616279a659c6.png)

## 画像解析対応
更に、Claude3ファミリーはすべてのモデルが画像解析に対応とのことです！

>3 つの新しいモデルはすべて高度なビジョン機能を備えており、さまざまなデータ形式を処理し、画像データを分析して、チャート、グラフ、技術図、写真、その他の視覚資産をよりよく理解するモデルに対する顧客の高まる需要に応えます。

https://www.aboutamazon.com/news/aws/amazon-bedrock-anthropic-ai-claude-3?utm_source=ecsocial&utm_medium=linkedin&utm_term=20

## ハルシネーションの低減や多言語にも更なる磨きが

>Anthropic によると、Claude 3 は現在利用可能な他のモデルよりもコーディングなどのタスクにおいて大幅な改善が見られ、英語以外の言語 (スペイン語、日本語、フランス語など) を理解できるほか、最も一般的なモデルよりも幻覚のレベルが低いとのことです。

## AWS Bedrockの対応
AWSはAnthropicと連携しており、Bedrockでは既存のClaudeV2.1まで対応してます。
Claude3の発表直後、オレゴンリージョンで使用可能となりました。

また、OpusやHaikuモデルも数週間以内に使用可能になるとのことです。
>Amazon Bedrock 上のビジョン対応モデルの Claude 3 ファミリ (Claude 3 Opus、Claude 3 Sonnet、および Claude 3 Haiku) にアクセスできるようになります。Sonnet は現在利用可能です。記録破りの Opus モデルと Haiku モデルは、今後数週間以内に利用可能になる予定です。

## プレイグラウンドでやってみよう

リージョンをオレゴンに変更してプレイグラウンドで試して見ました。

### 先ずはモデルアクセスを有効化
![スクリーンショット 2024-03-05 1.44.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/faa576cc-f8b2-958e-8d40-a2b280ed4218.png)

### Claude3 Sonnetモデルを選択
![スクリーンショット 2024-03-05 1.52.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/ac55adeb-b212-aa57-f4b2-8037274b72e5.png)

### 2bai チャットを試してみる
レスポンス速度が向上してますし、回答もv2.1より洗練されてる気がします！
![スクリーンショット 2024-03-05 1.53.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/78ea04b8-11e8-4d72-0116-03e809a3534f.png)

### 速度比較
どうやらClaude 3は既存のv2やv2.1と同等の回答に対して2倍速いらしいので比較してみました。


### 画像も解析させてみる

ちゃんと解析できてます！感動！
![スクリーンショット 2024-03-05 0.43.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/0f0b4876-33aa-e2d5-ca46-020892166d23.png)

※どうやら現在は解析だけで画像の生成は出来ない模様

![スクリーンショット 2024-03-05 0.54.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/90efc2cb-064e-8cde-24f2-79f41aacc31d.png)

## ローカルで画像解析してみた

### カレントディレクトリに以下のicon.jpgを配置

![icon.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/e0bcddd6-8a5e-84c0-f8cc-1a897a06d3ee.jpeg)

### pythonコード
profile_nameには自身のAWSプロフィール名を入れてください。

```python
from boto3.session import Session
import json
import base64

session = Session(profile_name="AWSのプロフィール名")

bedrock = session.client(
    'bedrock-runtime',
    region_name = "us-west-2", # オレゴン
    )

image1_path = "icon.jpg"
image1_media_type = "image/jpeg"
with open(image1_path, "rb") as image_file:
    image1_data = base64.b64encode(image_file.read()).decode("utf-8")

body = json.dumps(
    {
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 2000,
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "image",
                        "source": {
                            "type": "base64",
                            "media_type": image1_media_type,
                            "data": image1_data,
                        },
                    },
                    {
                        "type": "text",
                        "text": "画像について教えてください。"
                    }
                ]
            }
        ]
    }
)
modelId = 'anthropic.claude-3-sonnet-20240229-v1:0'
accept = 'application/json'
contentType = 'application/json'

response = bedrock.invoke_model(
    body=body,
    modelId=modelId,
    accept=accept,
    contentType=contentType
    )

response_body = json.loads(response.get('body').read())

message = response_body["content"][0]["text"]

print(message)
```

### 実行
解析結果がかえってきました〜！！

```:結果
この画像には小さなハリネズミが写っています。ふわふわとした体毛に覆われ、愛らしい顔をしています。背景にはレンガの壁が見えます。ハリネズミは地面に丸くなって寝そべり、リラックスした様子を見せています。小さな哺乳類ですが、とてもかわいらしい姿を捉えた一枚です。個体の特定は避け、プライバシーを尊重しながら、この小さな生き物の魅力的な姿を詳細に伝えるように心がけました。
```
![スクリーンショット 2024-03-05 1.49.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354022/1ae75dbf-d970-fa13-107d-79f2ddcac6fa.png)

## おわり
Claude3のハイエンドモデルは、ベンチマークではGPT4やGeminiを超えているとのことで、上手くワークしてくれるならAWSだけで一般的なケースは事足りるようになるかもしれませんので自分の中で期待感が強まりました。元々画像出力に関してはStability AIのSD DXがあるので本格用途ならそっちを使うでしょうしそこは使い分けかなと思います。
東京リージョンにいつ来てくれるかわかりませんが、今後のアップデートを待ちましょう！！

## 参考
VisionAPIの使い方はここを参照

https://docs.anthropic.com/claude/docs/vision