GPT-4よりすごいらしいClaude 3が気になったあなたへ

:::note
2024/3/16 Haikuがリリースされたので内容更新しました。
:::

Claude 3、気になりますよね

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

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

今まで触ったことないけど、興味を持った方へ、入門するところまでのご案内です。

## とりあえずチャットがしたい

claude.aiにアクセスして、アカウントを作成します。

https://claude.ai/

メールアドレスを入力する方法と、Googleのアカウントと紐付ける方法があります。
私はGoogleアカウントとの紐づけを行いました。

ログインができたら、もう、チャットができます。ChatGPTのような感じです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/60c4b23c-e7ab-0e5a-0ce4-c392d4d5ae4f.png)

日本語も自然に回答してくれます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/d3db6441-401e-44e5-79ef-93afa11c3108.png)

左下に`Claude 3 Sonnet`とあります。これはClaude 3のモデルの名称で、SonnetはClaude 3のシリーズの中で真ん中のモデルです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/eac30a3d-1988-772e-aa32-1f8435143375.png)

* Haiku - ハイク
* Sonnet - ソネット
* Opus - オーパス

名前からモデルの特徴を想像してもらいました。概ね特徴を捉えているのではないでしょうか。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/129ca42c-1049-d77c-11b5-9d7c36c582b2.png)


Claude 3の特徴として、文字のプロンプトだけでなく画像もインプットにできます。試しに先程の3つのモデルの画像を渡して見ましょう。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/ebae4f19-5526-d666-f81c-ad2129a25209.png)

画像にしてから渡していますので、画像から文字情報を上手に抽出しているのだと思います。

3つのモデルのうち、HaikuとOpusは、Claude Proのサブスクリプションを有効にすると使えるようになります。ChatGPT Plusみたいなものです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/1b24e5b9-8549-a59a-960f-b250c634a499.png)

## APIでアクセスがしたい

APIを使用したい場合は、console.anthropic.comにアクセスします。チャットの利用と入り口が異なります。

https://console.anthropic.com/

こちらもメールアドレスかGoogleアカウントでログインすることで利用可能です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f9a10de6-1ab7-076a-fb3a-c4a2faf8ea0c.png)

ログイン直後の画面です。テスト用に5ドルもらえるのもOpenAIと同じです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/d098c5b3-0540-d39d-6306-620aee46eff0.png)

Workbenchの画面です。左のモデル選択肢に、`opus`、`sonnet`、`haiku`が確認できます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/80cc297b-6380-dd81-2671-03a770920a6a.png)

APIキーが発行できます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/340c49f1-8b53-168b-53c8-74c9ead84d94.png)

APIキーが発行できたら、SDKを使ってアクセスできます。SDKはPythonとTypeScriptのものが提供されています。

https://github.com/anthropics/anthropic-sdk-python

https://github.com/anthropics/anthropic-sdk-typescript

## Amazon Bedrockで使う

Claude 3 Sonnetは、Anthropicが提供しているサービスだけではなく、AWSのAmazon BedrockとGoogle CloudのVertex AI Model Gardenで使用できます。（後者は2024/3/5時点でプライベートプレビューとのこと）

BedrockではSonnetとHaikuがバージニア北部リージョンとオレゴンリージョンで利用可能です。Opusはカミングスーンとのことです。（2024/3/16時点）

Bedrockから使ってみましょう。

マネージメントコンソールにログインして、Bedrockの画面を表示します。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/3e1ae0b9-babd-bd43-5b83-251969c86799.png)

左のメニューの`モデルアクセス`をクリックし、右上の`モデルアクセス管理`をクリックします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/56268e28-5242-767b-e95b-f8d0691fbc31.png)

ユースケースを入力し、Claude 3 Sonnetを有効にします。（以下の画面キャプチャは実施後のものです）　Haikuの手順も同様です。

![us-east-1.console.aws.amazon.com_bedrock_home_region=us-east-1(1280x720) (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/3859ffcd-e4e0-93e4-5a5d-948b0cf4df87.png)

モデルが使用できるようになるまで少し時間がかかります。
モデルはマーケットプレイスを経由して利用することになりますので、有効化されるとメールが届くと思います。

有効化できたら、左メニューのチャットを選択し、画面上部の`モデルを選択`をクリックします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/338f888d-b7df-1b80-90aa-25fbeca14b52.png)

Claude 3 SonnetまたはHaikuを選択し、`適用`をクリックします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/8158ded8-c17d-d97a-6927-7a0ee9237084.png)

お好きなチャットをお楽しみください。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/5d45cd12-531f-e9f4-6054-87914df2ea54.png)

## Amazon Bedrockで使う（APIアクセス）

最後にBoto3を使ったアクセス方法です。

:::note warn
Claude 2.1以前は`Text Completions API`と`Messages API`に対応していましたが、claude 3は`Messages API`のみの対応です。
Bedrockではこれまで`Text Completions API`の形式で記述する方法が一般的でしたので、注意が必要です。
:::

```python:Messages APIを使用
import json
import boto3

client = boto3.client("bedrock-runtime")

body = {
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 300,
    "system": "あなたは優秀なAIボットです",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "こんにちは。あなたはどんなことができますか？"}
            ],
        }
    ],
}

response = client.invoke_model(
    modelId="anthropic.claude-3-sonnet-20240229-v1:0", body=json.dumps(body)
)
response_body = json.loads(response.get("body").read())


print(json.dumps(response_body, indent=2, ensure_ascii=False))
```
```
{
  "id": "msg_01WvAdiNE8jyrzMFZ1w7tNwW",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "こんにちは。私はChatGPTと呼ばれる対話型AIです。自然言語処理の技術を使って、様々な質問に答えたり、タスクをサポートすることができます。以下のようなことが可能です。\n\n- 質疑応答: あらゆるジャンルの質問に対して詳細な回答を提供できます。\n- 作文支援: 文書やエッセイ、小説などの執筆をサポートできます。\n- プログラミング: コードの解説や修正、新しいコードの作成などにも対応できます。\n- 分析とリサーチ: データの分析や調査、発表資料の作成などもできます。\n- 知的対話: 人間とさまざまな話題について知的で建設的な対話を行えます。\n\n人工知能ですので、感情を持つことはできませんが、できる限り丁寧で分かりやすい対話を心がけています。何か不明な点があればいつでも質問してく"
    }
  ],
  "model": "claude-3-sonnet-28k-20240229",
  "stop_reason": "max_tokens",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 38,
    "output_tokens": 300
  }
}
```

イメージをアップロードする際は`messages`の中に画像をBase64でエンコードして含めます。

```python:Messages APIを使用
import base64
import json

import boto3

with open("image.png", mode="rb") as f:
    data = base64.b64encode(f.read()).decode("utf-8")

client = boto3.client("bedrock-runtime")

body = {
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 300,
    "system": "あなたは優秀なAIボットです",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": data,
                    },
                },
                {
                    "type": "text",
                    "text": "Claudeのモデルのそれぞれの名称と、特徴を教えて",
                },
            ],
        }
    ],
}

response = client.invoke_model(
    modelId="anthropic.claude-3-sonnet-20240229-v1:0", body=json.dumps(body)
)
response_body = json.loads(response.get("body").read())


print(json.dumps(response_body, indent=2, ensure_ascii=False))
```
```
{
  "id": "msg_01A976nwAHsyKrTvS1E9imho",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "この画像は、Anthropic社が提供するAIモデルの違いを比較しています。\n\n一番左側のHaikuは、「軽量で高速」なモデルで、小規模のタスクに適しています。\n\n真ん中のSonnetは、「パフォーマンスと速度を兼ね備えた」モデルで、効率的な大量処理タスクに適しています。\n\n一番右側のOpusは、「最も知能が高い」モデルで、複雑な分析、マルチステップのタスク、高次の数学やコーディングなどの難しい作業に対応できます。\n\n各モデルの能力は異なりますが、軽量から高機能まで、ユースケースに合わせて選択できるよう設計されています。"
    }
  ],
  "model": "claude-3-sonnet-28k-20240229",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 1275,
    "output_tokens": 230
  }
}
```

## まとめ

Claude 3に興味を持ったあなた、ぜひ、AWSのBedrockでClaudeを堪能しましょう。
BedrockではClaude以外にも様々なモデルが利用可能です。最近だとMistral AIのMistral 7BとMixtral 8X7Bも利用可能になりました。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/96730efa-250a-acbc-0b1f-1d693cb63d43.png)

Bedrock入門記事はQiitaにもたくさんあります。こちらはAWSアカウントの作成方法から載っていますので、初めてAWSにふれる方にもおすすめの記事です。

https://qiita.com/minorun365/items/24dfb0ea3afde6ed0a56