高速＆格安なのに賢いClaude 3 Haikuが登場！Bedrockにも来ました

# GPTの対抗馬Claudeの軽量モデルが登場！

日本時間2024/3/14（木）未明、Anthropic社の生成AIモデルであるClaude 3シリーズのラインナップの一つ「Haiku」がリリースされました。

Claude 3には高性能順にOpus、Sonnet、Haikuの3種類のモデルがあります。
詳細は以下の記事もご参照ください。

https://qiita.com/minorun365/items/e6f3aa71f5e1bdf21139


# 公式情報まとめ

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

- 価格が安い：最上位モデルOpusの60分の1の単価！
- レスポンスが速い
- マルチモーダル対応（テキスト＋画像の入力が可能）

![スクリーン ショット 2024-03-14 に 13.41.16 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/85b33a1a-02a4-9fe3-2d9b-4b1513539f64.png)
（Claude公式サイトより）

OpenAIのGPT-4 Turboが 入力： $10 / Mtok、出力： $30 / Mtok なので、Haikuの安さが際立っていますね。

https://openai.com/pricing


# Anthropic公式から触ってみる

公式Webチャットアプリ「Claude.ai」でProプラン（月額20ドル）に加入していればすぐに試すことができます。

https://www.anthropic.com/claude

テキストボックスにプロンプトを入力すると、送信先のモデルを選べるようになっています。

![スクリーン ショット 2024-03-14 に 13.50.19 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/d62621c2-bf5e-014d-89d6-389e1854ffaf.png)

また、HaikuはClaude公式のAPIとしても即日提供開始されています。

https://www.anthropic.com/api


# AWSのBedrockから触ってみる

AWSの生成AIサービスAmazon BedrockにもHaikuが同時登場しています。

https://aws.amazon.com/jp/blogs/aws/anthropics-claude-3-haiku-model-is-now-available-in-amazon-bedrock/

公式リリースでは米国西部（オレゴン）リージョンで利用可能とありますが、日本時間3/14昼時点で実機を確認すると米国東部（バージニア）リージョンでも確認できました。


### AWSマネジメントコンソール（GUI）

まずはAWSアカウントにサインインし、Amazon Bedrock > モデルアクセス からバージニア北部リージョンのClaude 3 Haikuを有効化します。

![スクリーン ショット 2024-03-14 に 13.54.23 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/83c36dea-0ecb-3796-2b8d-3838bf8eb37e.png)

少し待つとすぐ利用可能になります。

チャットのプレイグラウンドにアクセスすると、画像を添付しての質問も可能です！

![スクリーン ショット 2024-03-14 に 14.07.39 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/ee2b916a-4045-b4d5-1f27-7e5f46dc078d.png)



### API利用（AWS SDK for Python）

基本的にClaude 3 Sonnet on Bedrockと同様のコードで利用可能です。
HaikuのモデルIDは `anthropic.claude-3-haiku-20240307-v1:0` となります。

開発環境としてお手軽なAWS Cloud9を利用してみます。
まずAWS SDK for Python（Boto3）とLangChainをアップデートしておきます。

```bash: Cloud 9
pip install -U boto3 langchain
```

LangChain等のフレームワークを使わず、素のAWS SDK for PythonでHaikuを動かすコード例は以下です。AWSブログを参考にしています。

```py: haiku.py
import boto3
import json

bedrock_runtime = boto3.client(service_name='bedrock-runtime')

prompt_config = {
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 4096,
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "日本の総理大臣は？"},
            ],
        }
    ],
}

body = json.dumps(prompt_config)

modelId = "anthropic.claude-3-haiku-20240307-v1:0"
accept = "application/json"
contentType = "application/json"

response = bedrock_runtime.invoke_model(
    body=body, modelId=modelId, accept=accept, contentType=contentType
)
response_body = json.loads(response.get("body").read())

results = response_body.get("content")[0].get("text")
print(results)
```

出力例。爆速でレスポンスが返ってきました！

```bash: Cloud 9
minorun365:~/environment $ python3 haiku.py 
現在の日本の総理大臣は岸田文雄氏です。

岸田文雄氏は2021年10月4日に自民党総裁に選出され、同日の国会で第100代内閣総理大臣に就任しました。

岸田前総理の前は、2020年9月16日から2021年10月4日まで菅義偉氏が総理大臣を務めていました。

このように、日本の総理大臣は定期的に交代しており、直近の歴代総理大臣は以下の通りです。

- 第99代:菅義偉(2020年9月~2021年10月)
- 第100代:岸田文雄(2021年10月~現在)
```

LangChainでBedrockのClaude 3系を動かすには、LLMモジュールの代わりにChatモジュールの「BedrockChat」を利用します。

```py: haiku-kangchain.py
from langchain_community.chat_models import BedrockChat
from langchain.schema import HumanMessage

chat = BedrockChat(
    region_name = "us-east-1",
    model_id="anthropic.claude-3-haiku-20240307-v1:0"
)

result = chat(
    [
        HumanMessage(content="日本の総理大臣は？"),
    ]
)

print(result.content)
```

出力例。爆速でレスポンスが返ってきました！

```bash: Cloud 9
minorun365:~/environment $ python3 haiku-langchain.py 
/home/ec2-user/.local/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `__call__` was deprecated in LangChain 0.1.7 and will be removed in 0.2.0. Use invoke instead.
  warn_deprecated(
現在の日本の総理大臣は岸田文雄(きしだ ふみお)さんです。

岸田文雄さんは2021年10月に就任しました。主な経歴は以下の通りです:

- 1957年生まれ、宮城県出身
- 自民党所属の政治家
- 1993年に衆議院議員に初当選
- 2008年から2012年まで外務大臣を務めた
- 2012年から2017年まで政調会長を務めた
- 2021年10月4日に第100代総理大臣に就任

岸田総理は、新型コロナウイルス対策や経済政策、安全保障強化など、様々な課題に取り組んでいます。任期は通常4年ですが、総理大臣の交代は政局の動向により随時あり得ます。
```

※現状、LangChainを用いるとDeprecatedの警告が出てしまうようです。LangChainのGitHub上で日々Issueがやり取りされています。

https://github.com/langchain-ai/langchain/issues

また、画像をBase64エンコードした文字列を含めることで、API経由でマルチモーダル入力にも対応しています。

以下の記事を参照のうえ、ぜひ試してみてください！

https://qiita.com/moritalous/items/8266f0c4bea6514713f7