1
1

Amazon Bedrock API (Claude 3 Haiku)のはじめの第一歩

Posted at

はじめに

生成AIサービスを作るのには欠かせない、APIを使ったチャットに関する記事です。
Amazon BedrockはGUI上で動作させることもできますが、様々な機能を追加していくためにはAPI呼び出しが必要なので実装してみました。

モデルアクセス

AWSの生成AIモデルを使うためには、最初にアクセス申請をしなければなりません。
コンソールからAmazon Bedrockにアクセスし、使いたいモデルをリクエストします。
私はClaude 3 Haikuを選び、リクエストはすぐに承認されました。
image.png

リージョンによって使えるモデルが異なるので、使いたいモデルがないときはリージョンを変えてみましょう。
また、ここで指定したリージョンは後で使うので控えておいてください。

AWS CLIのインストール

以前に書いた記事をご覧ください。

APIキー

生成AIモデルを使うためにはAPIキーが必要です。
APIキーはAWS access portalAccess keysの中で取得できます。

image.png

以下の環境変数をコピーしてターミナルに貼り付けると使えるようになります。

image.png

Pythonコード

以下のように書くと動作します。このプログラムはAnthropic Claude Messages APIの内容をもとに書いています。

main.py
import boto3
import json

brt = boto3.client(service_name="bedrock-runtime", region_name="ap-southeast-2")
body = json.dumps({
    "anthropic_version": "bedrock-2023-05-31",
    "messages": [{"role": "user", "content": "日本固有の料理を教えてください。"}],
    "max_tokens": 300,
    "temperature": 0.1,
})

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

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

print(json.dumps(response_body, indent=4, ensure_ascii=False))
実行結果
{
    "id": "xxx",
    "type": "message",
    "role": "assistant",
    "model": "claude-3-haiku-20240307",
    "stop_sequence": null,
    "usage": {
        "input_tokens": 21,
        "output_tokens": 300
    },
    "content": [
        {
            "type": "text",
            "text": "はい、日本には非常に豊かな食文化があります。日本固有の代表的な料理をいくつか紹介します。\n\n1. 寿司 - 生の魚介類を酢飯の上に乗せた料理。江戸時代に発祥し、日本を代表する料理の一つです。\n\n2. そば - 細長い麺を使った料理。地域によって味付けや食べ方が異なります。代表的なものに、天ぷらそばやざるそばなどがあります。\n\n3. 天ぷら - 野菜や魚介類を小麦粉の衣で揚げた料理。軽く香ばしい食感が特徴です。\n\n4. 焼き魚 - 魚を塩や味噌などで味付けし、焼いた料理。さまざまな魚が使われ、地域によって調理法が異なります。\n\n5. 豆腐料理 - 湯豆腐やあげ出し豆腐など、豆"
        }
    ],
    "stop_reason": "max_tokens"
}

プログラムを書く上でわかりにくかったことは、リージョンを設定しなければならないことです。
モデルアクセスの項で設定したリージョンを指定する必要があります。

brt = boto3.client(service_name="bedrock-runtime", region_name="ap-southeast-2")

どのようにしてリージョンを判別しているかは、Anthropic API referenceに説明がありました。

aws_region changes the aws region to which the request is made. By default, we read AWS_REGION, and if that's not present, we default to us-east-1. Note that we do not read ~/.aws/config for the region.

さいごに

APIを使ってテキストを出力するだけでしたが、APIキーの設定方法、リージョンの設定など手間取った部分がありました。
基本的な使い方を習得したので、これからいろいろな機能を追加していきます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1