[アップデート]Amazon BedrockでAnthropicの最新モデルClaude 2.1が利用可能になりました #AWSreInvent

2023.11.30

はじめに

現在開催中のAWS re:Invent 2023。 Amazon BedrockでAnthropicの最新モデルClaude 2.1が利用可能になりました!

3行まとめ

  • Amazon Bedrockで、Anthropicの最新モデルであるClaude 2.1が利用可能になりました
  • Claude 2.1は業界をリードする20万トークン(Claude 2.0のコンテキストの2倍)で、長いドキュメントに対する高精度のレスポンスを提供します
  • function callingとworkflow orchestrationのためのベータツールが導入され、追加の知識ソースからデータ取得しやすくなります(近い将来にオープン)

何が嬉しいか

従来のClaude 2.0でも業界をリードするコンテキスト長で長い会話が可能でしたが、その2倍のコンテキスト長で更に長い会話が可能になります。 また、function callingとworkflow orchestrationのためのベータツールの導入で、より複雑なタスクを実行することができるようになります。

やってみた

サービスページにアクセス

2024/11/29時点では、 バージニア北部リージョン(us-east-1)とオレゴン(us-west-2)で利用可能です。

今回は、AWSのマネジメントコンソールで、バージニア北部リージョン(us-west-2)のAmazon Bedrockのサービスページを開きます。

画面左袖から[Model access]にアクセスします。

モデルの有効化

画面右上の[Manage model access]を押下します。

[Anthropic]の[Submit use case details]をクリックし、必要な情報を入力して[Submit]します。

AWSから承認されると、[Claude]にて、[Access status]が[Access granted]と表示されます。

プレイグラウンドで動かしてみる

Amazon Bedrockのサービスページの画面左袖から[Playgrounds] > [Text] > [Select Model]を押下します。

Claude 2.1を選択して[Apply]を押下します。

メッセージを入力して、[Run]を押下します。

成功すれば、Claude 2.1から回答が返ってきます。

画面右袖ではTemperatureなどのパラメータを変更することができます。例えば、Temperatureは、テキストのランダムさを決めます。値が高ければ高いほど、創造的な回答が生成されます。値が低ければ低いほど、保守的な回答が生成されます。

APIで動かしてみる

AWS SDK for JavaScript v3

プログラム実行用のフォルダを作成します。 その後、必要なライブラリをインストールします。 たとえば、pnpmを利用する場合は以下のようになります。

pnpm install @aws-sdk/client-bedrock-runtime

Bedrockへのアクセス権限を持つIAM Userのアクセスキーをセットします。

export BEDROCK_AWS_REGION=us-east-1
export YOUR_AWS_ACCESS_KEY_ID={アクセスキーID}
export YOUR_AWS_SECRET_ACCESS_KEY={シークレットアクセスキー}

以下のTypeScriptファイルmain.tsを用意します。以下ポイントです。

import {
  BedrockRuntimeClient,
  InvokeModelCommand
} from '@aws-sdk/client-bedrock-runtime';

export const createBedrockClient = () => {
  const client = new BedrockRuntimeClient({
    region: process.env.BEDROCK_AWS_REGION || 'us-east-1',
    credentials: {
      accessKeyId: process.env.YOUR_AWS_ACCESS_KEY_ID || '',
      secretAccessKey: process.env.YOUR_AWS_SECRET_ACCESS_KEY || ''
    }
  });
  return client;
};

export async function invokeModelCommand(client: BedrockRuntimeClient) {
  const command = new InvokeModelCommand({
    modelId: 'anthropic.claude-v2:1',
    body: JSON.stringify({
      prompt: '\n\nHuman: 元気ですか?\n\nAssistant:',
      max_tokens_to_sample: 4096
    }),
    accept: 'application/json',
    contentType: 'application/json'
  });
  const response = await client.send(command);
  const body = JSON.parse(Buffer.from(response.body).toString('utf-8'));
  console.log(body);
}

const client = createBedrockClient();
invokeModelCommand(client);

esbuild-registerを利用してスクリプトを実行します。

node -r esbuild-register main.ts

以下のようなレスポンスが得られました!

{
  completion: ' はい、元気です。私は人工知能のアシスタントなので、いつも変わらず働いています。ご質問ありがとうございます。',
  stop_reason: 'stop_sequence',
  stop: '\n\nHuman:'
}

考察など

RAGでの活用に期待

RAGにおいては、独自データの情報をモデルのコンテキスト長に渡す必要があります。Claude 2.1ではコンテキスト長が更に増えたことで、より多くの独自データの情報をモデルに与えるできるのでRAGの精度が向上することが期待されます。

function callingに期待

現時点で一部パートナーに早期アクセスが提供されており、近い将来オープンになるとのことです。 Web検索やプライベートAPIの結果を反映したチャットボットの開発がしやすくなることが期待できます。 オープンが待ち遠しいですね!

さいごに

Bedrockの中で利用頻度が多いと思われる、Claude 2の最新モデルが追加されるとのことで嬉しい限りです。日本のリージョンでも早く利用できるようになると良いですね。それではまた!