2024/3/16 Haikuがリリースされたので内容更新しました。
Claude 3、気になりますよね
今まで触ったことないけど、興味を持った方へ、入門するところまでのご案内です。
とりあえずチャットがしたい
claude.aiにアクセスして、アカウントを作成します。
メールアドレスを入力する方法と、Googleのアカウントと紐付ける方法があります。
私はGoogleアカウントとの紐づけを行いました。
ログインができたら、もう、チャットができます。ChatGPTのような感じです。
日本語も自然に回答してくれます。
左下にClaude 3 Sonnetとあります。これはClaude 3のモデルの名称で、SonnetはClaude 3のシリーズの中で真ん中のモデルです。
- Haiku - ハイク
- Sonnet - ソネット
- Opus - オーパス
名前からモデルの特徴を想像してもらいました。概ね特徴を捉えているのではないでしょうか。
Claude 3の特徴として、文字のプロンプトだけでなく画像もインプットにできます。試しに先程の3つのモデルの画像を渡して見ましょう。
画像にしてから渡していますので、画像から文字情報を上手に抽出しているのだと思います。
3つのモデルのうち、HaikuとOpusは、Claude Proのサブスクリプションを有効にすると使えるようになります。ChatGPT Plusみたいなものです。
APIでアクセスがしたい
APIを使用したい場合は、console.anthropic.comにアクセスします。チャットの利用と入り口が異なります。
こちらもメールアドレスかGoogleアカウントでログインすることで利用可能です。
ログイン直後の画面です。テスト用に5ドルもらえるのもOpenAIと同じです。
Workbenchの画面です。左のモデル選択肢に、opus、sonnet、haikuが確認できます。
APIキーが発行できます。
APIキーが発行できたら、SDKを使ってアクセスできます。SDKはPythonと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の画面を表示します。
左のメニューのモデルアクセスをクリックし、右上のモデルアクセス管理をクリックします。
ユースケースを入力し、Claude 3 Sonnetを有効にします。(以下の画面キャプチャは実施後のものです) Haikuの手順も同様です。
モデルが使用できるようになるまで少し時間がかかります。
モデルはマーケットプレイスを経由して利用することになりますので、有効化されるとメールが届くと思います。
有効化できたら、左メニューのチャットを選択し、画面上部のモデルを選択をクリックします。
Claude 3 SonnetまたはHaikuを選択し、適用をクリックします。
お好きなチャットをお楽しみください。
Amazon Bedrockで使う(APIアクセス)
最後にBoto3を使ったアクセス方法です。
Claude 2.1以前はText Completions APIとMessages APIに対応していましたが、claude 3はMessages APIのみの対応です。
BedrockではこれまでText Completions 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でエンコードして含めます。
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も利用可能になりました。
Bedrock入門記事はQiitaにもたくさんあります。こちらはAWSアカウントの作成方法から載っていますので、初めてAWSにふれる方にもおすすめの記事です。

















