【AWS CLI】 スクリプトを利用して 1 度にAmazon Bedrockの複数モデルに質問を投げてみる

記事タイトルとURLをコピーする

こんにちは。AWS CLI が好きな福島です。

はじめに

Amazon Bedrock では複数のモデルを利用することができますが、 claude-v2 がテキスト生成では良いのかなと思いつつ、 どのモデルがどの程度の精度があるのか比較してみたいなと思いました。

そのため今回は簡単にモデルの比較ができるように、以下のモデルに対して一度に質問ができるスクリプトを作ってみました。

  • ai21.j2-ultra
  • anthropic.claude-v2
  • cohere.command-text-v14

スクリプト

  • 使い方
    使い方は以下の通りで引数に質問を入力することで複数のモデルに問い合わせを行い、回答を生成してくれます。
./bedroke-runtime-invoke.sh "AWS無料利用枠とは何ですか?"
  • スクリプトの中身
#!/bin/bash

readonly AWS_REGION="us-east-1"
readonly MAX_TOKENS=1000
readonly TEMPERATURE=0

function invoke_model() {
  local model_id=$1
  local body=$2

  aws bedrock-runtime invoke-model \
    --model-id "${model_id}" \
    --body "$(echo "${body}" | base64)" \
    --region "${AWS_REGION}" "${model_id}-response.json" >/dev/null
}

function create_ai21_body {
  local input_text="$1"
  local ai21

  ai21=$(
    cat <<EOF
{
    "prompt":"${input_text}",
    "maxTokens":${MAX_TOKENS},
    "temperature":${TEMPERATURE}
}
EOF
  )

  echo "${ai21}"
}

function create_anthropic_body {
  local input_text="$1"
  local anthropic

  anthropic=$(
    cat <<EOF
{
    "prompt": "\n\nHuman: ${input_text}\n\nAssistant:",
    "max_tokens_to_sample": ${MAX_TOKENS},
    "temperature": ${TEMPERATURE},
    "stop_sequences": []
}
EOF
  )

  echo "${anthropic}"
}

function create_cohere_body {
  local input_text="$1"
  local cohere

  cohere=$(
    cat <<EOF
{
    "prompt": "${input_text}",
    "max_tokens": ${MAX_TOKENS},
    "temperature": ${TEMPERATURE}
}
EOF
  )

  echo "${cohere}"
}

function main() {
  local input_text="$1"

  echo "
## 質問内容
${input_text}
"
  start_time=$(date +%s.%N)

  echo "## AI21 Labs(ai21.j2-ultra)"
  invoke_model "ai21.j2-ultra" "$(create_ai21_body "${input_text}")"
  jq -r '.completions[].data.text' ai21.j2-ultra-response.json
  echo ""
  end_time=$(date +%s.%N)
  execution_time=$(echo "$end_time - $start_time" | bc)
  echo "AI21 Labs(ai21.j2-ultra) の実行時間: $execution_time"

  start_time=$(date +%s.%N)
  echo "## Anthropic(anthropic.claude-v2)"
  invoke_model "anthropic.claude-v2" "$(create_anthropic_body "${input_text}")"
  jq -r '.completion' anthropic.claude-v2-response.json
  echo ""
  end_time=$(date +%s.%N)
  execution_time=$(echo "$end_time - $start_time" | bc)
  echo "Anthropic(anthropic.claude-v2) の実行時間: $execution_time"

  start_time=$(date +%s.%N)
  echo "## Cohere(cohere.command-text-v14)"
  invoke_model "cohere.command-text-v14" "$(create_cohere_body "${input_text}")"
  jq -r '.generations[].text' cohere.command-text-v14-response.json
  echo ""
  end_time=$(date +%s.%N)
  execution_time=$(echo "$end_time - $start_time" | bc)
  echo "Cohere(cohere.command-text-v14) の実行時間: $execution_time"
}

if [[ -z $1 ]]; then
  echo "Usage: $0 <input_text>"
  exit 1
else
  main "$1"
fi

ここから AWS のサポートケースに載っているよくある質問から 2 つ質問した結果を記載します。 ※claude 以外は日本語をサポートをしていませんが、あえて日本語で質問してみます。

まとめ

色々な質問を試せていないため、質問によっては結果が変わる可能性もありますが、 日本語でちょっと質問をして試した結果、個人的に感じたことを記載します。

  • ai21.j2-ultra は日本語をサポートしていないが、頑張って日本語で回答してくれる。
  • ただ、回答内容はちょっと期待したものとは異なったため、今後に期待。
  • anthropic.claude-v2 は日本語をサポートしており、適切かつ詳細な回答をしてくれる印象。
  • cohere.command-text-v14 も日本語をサポートしていないが、英語で回答してくれる。
  • ただ、翻訳したところ、claude に近いレベルの回答をくれた印象

ということでもっといろいろ試してみたいですが、今時点でかつ日本語で利用することを考えると、anthropic.claude-v2が良いのかなと感じました。

質問内容 ①

AWS アカウントを解約するにはどうすればいいですか?

回答

AI21 Labs(ai21.j2-ultra)

アカウントを解約するには、AWS アカウントへログインし、[サインアウト]ボタンをクリックします。詳細については、以下のリンクを参照してください。

- https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-instance-addressing.html

AI21 Labs(ai21.j2-ultra) の実行時間: 4.0 秒

レスポンスが早くそれっぽいことを言っているのかなと思いましたが、全然違う答えが返ってきました。 ただ、英語をサポートしていないにも関わらず、日本語で返信くれたのはありがたいですね。今後に期待です。

Anthropic(anthropic.claude-v2)

AWS アカウントを解約する手順は以下の通りです。

1. AWS Management Console にログインし、アカウント設定のページに移動します。

2. 「アカウントを閉じる」をクリックします。

3. 表示されるダイアログで、アカウントを閉じる理由を選択します。

4. 「アカウントの閉鎖を要求」をクリックします。

5. 確認のためにパスワードを入力し、「アカウントを閉じる」をクリックします。

6. AWS からアカウントの閉鎖が承認されると、メールで通知が届きます。

7. アカウントは 90 日間ステータスが「閉鎖待ち」となり、この期間中は再開できます。

8. 90 日経過後、AWS アカウントは完全に閉鎖されます。

9. アカウントの閉鎖後、AWS リソースやデータへのアクセスはできなくなります。必要なデータは事前にバックアップしてください。

10. アカウントを完全に削除するには、AWS サポートに削除のリクエストを提出する必要があります。

この手順でアカウントの解約ができます。データのバックアップなど事前の準備が必要になりますのでご注意ください。

Anthropic(anthropic.claude-v2) の実行時間: 18.0 秒

細く確認していませんが、正しい回答が返ってきているように感じます。 正しい回答かつ詳細に書かれているのは、素晴らしいですね!

Cohere(cohere.command-text-v14)

To close your AWS account, you need to take the following steps:

1. Access the AWS Management Console and sign in to your account.
2. Navigate to the "Billing and Cost Management" section and select "Close Account."
3. Review the information about closing your account, including any outstanding charges or pending services.
4. If you have any active services, you will need to cancel or delete them before closing your account.
5. Once you have reviewed the information, select "Close Account" to proceed with the closure.
6. Follow the instructions to complete the closure process. This may include confirming your decision and providing additional information.
7. Once the account closure is complete, you will receive a confirmation email.

It is important to note that once your account is closed, you will no longer have access to any resources or services associated with it. Make sure to back up any important data before closing your account.

If you have any questions or concerns about closing your AWS account, you can contact AWS customer support for assistance.

Cohere(cohere.command-text-v14) の実行時間: 10.0 秒

日本語をサポートしていないため、英語の回答が返ってきました。 以下に翻訳した内容を記載しておりますが、概ね正しい回答に見受けられます。

## Google 翻訳
AWS アカウントを閉鎖するには、次の手順を実行する必要があります。

1. AWS マネジメントコンソールにアクセスし、アカウントにサインインします。
2. [請求とコスト管理] セクションに移動し、[アカウントを閉じる] を選択します。
3. 未払いの料金や保留中のサービスなど、アカウントの閉鎖に関する情報を確認します。
4. アクティブなサービスがある場合は、アカウントを閉鎖する前に、それらをキャンセルまたは削除する必要があります。
5. 情報を確認したら、[アカウントを閉じる] を選択して閉鎖を進めます。
6. 指示に従って閉鎖プロセスを完了します。 これには、決定の確認や追加情報の提供が含まれる場合があります。
7. アカウントの閉鎖が完了すると、確認メールが届きます。

アカウントが閉鎖されると、それに関連付けられたリソースやサービスにアクセスできなくなることに注意することが重要です。 アカウントを閉鎖する前に、重要なデータを必ずバックアップしてください。

AWS アカウントの閉鎖に関して質問や懸念がある場合は、AWS カスタマーサポートにお問い合わせください。

質問内容 ②

AWS 無料利用枠とは何ですか? どのように使用すればよいですか?

回答

AI21 Labs(ai21.j2-ultra)

AWS 無料利用枠とは、Amazon Web Services(AWS)のサービスに対する無償で利用できる枠です。この枠は、特定の期間にわたって利用できますが、利用量に制限があります。利用枠の使用方法については以下に説明します。

1. アカウント作成:まずはアカウントを作成します。アカウント作成には、Amazon アカウントを利用することができますが、AWS には専用のアカウントもあります。
2. サービス選択:利用枠には、特定のサービスが含まれています。利用枠には、EC2 や RDS などの基本的なサービスが含まれていますが、一部のサービスは利用枠に含まれていない場合があります。利用枠に含まれていないサービスを利用したい場合は、プロビジョニングされたサービスを利用するか、利用枠に含まれていないサービスを利用するために必要な料金を払う必要があります。
3. 利用枠の利用:利用枠に含まれているサービスを利用するには、利用枠に含まれているサービスを選択し、利用枠の利用枠を選択します。利用枠の利用枠は、利用枠に含まれているサービスの利用量に応じて変化します。利用枠の利用枠が切れている場合は、利用枠を増やすことができますが、利用枠を増やすには料金がかかります。
4. 利用量の管理:利用枠には、利用量が制限されています。利用量が制限されるためには、利用枠に含まれているサービスを利用しないでください。利用量が制限される場合は、利用枠を増やすことができますが、利用枠を増やすには料金がかかります。

利用枠は、初めて利用する際には役に立ちますが、利用量が制限されるためには、利用枠を増やすことができますが、利用枠を増やすには料金がかかります。利用枠を増やすには、利用量が制限されるためには、利用枠を増やす必要がありますが、利用枠を増やすには料金がかかります。利用枠を増やすには、利用量が制限されるためには、利用枠を増やす必要がありますが、利用枠を増やすには料金がかかります。利用枠を増やすには、利用量が制限されるためには、利用枠を増やす必要がありますが、利用枠を増やすには料金がかかります。利用枠を増やすには、利用量が制限されるためには、利用枠を増やす必要がありますが、利用枠を増やすには料金がかかります。利用枠を増やすには、利用量が制限されるためには、利用枠を増やす必要がありますが、利用枠を増やすには料金がかかります。利用枠を増やすには、利用量が制限されるためには、利用枠を増やす必要がありますが、利用枠を増やすには料金がかかります。利用枠を

AI21 Labs(ai21.j2-ultra) の実行時間: 22.0 秒

こちらもそれっぽい回答が返ってきているように見えますが、ほとんどよく分からない回答に見えます。

Anthropic(anthropic.claude-v2)

AWS の無料利用枠とは、AWS の一部のサービスを無料で利用できる枠のことです。

主な特徴は以下の通りです:

- 新規の AWS アカウント作成後、12 か月間は一定のサービスとリソースが無料で利用できます
- 主に低スペックのインスタンスやストレージ、データ転送などが無料枠の対象となります
- 無料利用枠を超えると従量課金されるため、コスト管理が必要
- クレジットカード情報の登録が必須

無料利用枠の主なサービスは EC2、S3、RDS などです。利用するには以下の手順が必要です。

1. AWS アカウントを作成し、クレジットカードを登録
2. 無料枠対象のサービスを利用
3. 使用量や期間に注意し、無料枠を超えないように使用

無料利用枠は AWS を試すには便利ですが、想定以上のコストが発生するリスクもあるため、利用状況の監視が重要です。初心者は利用額のアラートを設定することをおすすめします。

Anthropic(anthropic.claude-v2) の実行時間: 17.0 秒

正しい回答が返ってきているように見受けられます。 最後の回答については、質問に対してプラスアルファでの回答になっているのですごいですね。

Cohere(cohere.command-text-v14)

AWS Free Tier is a program offered by Amazon Web Services (AWS) that allows users to use certain AWS services for free for one year. It is designed to help new users get hands-on experience with AWS products and services without incurring any upfront costs. The AWS Free Tier provides access to a limited set of resources and services, enabling users to explore and experiment with various AWS offerings.

The AWS Free Tier is available to new AWS customers for 12 months from the date of account activation. It includes a variety of services, such as Amazon EC2, Amazon S3, Amazon RDS, and more. The usage limits and available services may vary over time, so it's essential to check the official AWS Free Tier page for the most up-to-date information.

To utilize the AWS Free Tier, you need to sign up for an AWS account, if you haven't already. You can create an AWS account on the AWS website. Once your account is set up, you can access the AWS Management Console, where you can find and activate the AWS Free Tier. From there, you can start using the included services for your development, testing, and experimentation purposes.

It's important to note that the AWS Free Tier is designed for testing and experimentation purposes and may not be suitable for production workloads. It's always recommended to review the usage limits and terms of the Free Tier to ensure you don't exceed the included credits or incur any charges. Additionally, AWS regularly updates the Free Tier offerings, so there may be new services and features available from time to time.

When using the AWS Free Tier, it's a good practice to monitor your usage regularly, as some services may have usage thresholds that, once exceeded, could start generating charges. For ongoing or production-level usage, AWS offers different pricing plans and discounts, such as the AWS Savings Plans and Reserved Instances, which can help you save costs based on your expected usage.

Overall, the AWS Free Tier is an excellent opportunity for beginners and developers to get started with AWS services and gain hands-on experience without immediate financial commitments. It allows users to explore and experiment with different AWS offerings, helping them to understand how AWS can support their technical projects or business needs.

Cohere(cohere.command-text-v14) の実行時間: 15.0 秒

正しい回答が返ってきているように見受けらます。 また、Claude と同様に質問に対してプラスアルファでの回答になっているのですごいですね。 あとは日本語サポートを待つのみです。

## Google 翻訳
AWS 無料利用枠は、アマゾン ウェブ サービス (AWS) が提供するプログラムで、ユーザーは AWS の特定のサービスを 1 年間無料で利用できます。 これは、新規ユーザーが初期費用をかけずに AWS の製品とサービスを実際に体験できるように設計されています。 AWS 無料利用枠は、限られたリソースとサービスのセットへのアクセスを提供し、ユーザーがさまざまな AWS 製品を探索および実験できるようにします。

AWS 無料利用枠は、AWS の新規顧客がアカウントのアクティベーション日から 12 か月間利用できます。 これには、Amazon EC2、Amazon S3、Amazon RDS などのさまざまなサービスが含まれます。 使用制限と利用可能なサービスは時間の経過とともに変化する可能性があるため、公式 AWS 無料利用枠ページで最新情報を確認することが重要です。

AWS 無料利用枠を利用するには、AWS アカウントにサインアップする必要があります (まだサインアップしていない場合)。 AWS アカウントは AWS ウェブサイトで作成できます。 アカウントが設定されたら、AWS マネジメントコンソールにアクセスして、AWS 無料利用枠を見つけてアクティブ化できます。 そこから、開発、テスト、実験の目的で、含まれているサービスの使用を開始できます。

AWS 無料利用枠はテストと実験を目的として設計されており、実稼働ワークロードには適していない可能性があることに注意することが重要です。 含まれているクレジットを超えたり、料金が発生したりしないように、無料利用枠の使用制限と条件を常に確認することをお勧めします。 さらに、AWS は無料利用枠を定期的に更新しているため、新しいサービスや機能が随時提供される可能性があります。

一部のサービスには使用量のしきい値があり、それを超えると料金が発生し始める可能性があるため、AWS 無料利用枠を使用する場合は、使用量を定期的に監視することをお勧めします。 AWS は、継続的な使用または本番レベルの使用のために、AWS Savings Plans やリザーブドインスタンスなどのさまざまな料金プランと割引を提供しており、予想される使用量に基づいてコストを節約できます。

全体として、AWS 無料利用枠は、初心者や開発者にとって、すぐに金銭的な約束をすることなく AWS のサービスを開始し、実践的な経験を積むための素晴らしい機会です。 これにより、ユーザーはさまざまな AWS サービスを探索および実験することができ、AWS が技術プロジェクトやビジネス ニーズをどのようにサポートできるかを理解するのに役立ちます。

終わりに

今回は、Amazon Bedrock を利用して 1 度に複数のモデルに質問を投げられるスクリプトを作ってみました。 どなたかのお役に立てれば幸いです。

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。

AWS資格12冠。2023 Japan AWS Partner Ambassador/APN ALL AWS Certifications Engineer。