はじめに
生成AIサービスを作るのには欠かせない、APIを使ったチャットに関する記事です。
Amazon BedrockはGUI上で動作させることもできますが、様々な機能を追加していくためにはAPI呼び出しが必要なので実装してみました。
モデルアクセス
AWSの生成AIモデルを使うためには、最初にアクセス申請をしなければなりません。
コンソールからAmazon Bedrock
にアクセスし、使いたいモデルをリクエストします。
私はClaude 3 Haiku
を選び、リクエストはすぐに承認されました。
リージョンによって使えるモデルが異なるので、使いたいモデルがないときはリージョンを変えてみましょう。
また、ここで指定したリージョンは後で使うので控えておいてください。
AWS CLIのインストール
以前に書いた記事をご覧ください。
APIキー
生成AIモデルを使うためにはAPIキーが必要です。
APIキーはAWS access portal
→Access keys
の中で取得できます。
以下の環境変数をコピーしてターミナルに貼り付けると使えるようになります。
Pythonコード
以下のように書くと動作します。このプログラムはAnthropic Claude Messages APIの内容をもとに書いています。
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キーの設定方法、リージョンの設定など手間取った部分がありました。
基本的な使い方を習得したので、これからいろいろな機能を追加していきます。