29
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なんか知らんけど Amazon Bedrock でドキュメントが読めたので 18 モデルで比較してみた

Last updated at Posted at 2024-06-28

いつの間にかアップデートが走ってました。
https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html

やってみる

適当に PDF を用意します。
私は、Anthropic Claude Messages APIを test.pdf として保存しました。

そして以下のようにコードを記述しました。

import boto3
import os

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

ANTHROPIC_VERSION = 'bedrock-2023-05-31'

AVAILABLE_MODEL_IDS = [
    'anthropic.claude-instant-v1', # v1
    'anthropic.claude-v2:1','anthropic.claude-v2', # v2
    'anthropic.claude-3-haiku-20240307-v1:0','anthropic.claude-3-sonnet-20240229-v1:0', # v3
]
model_id = AVAILABLE_MODEL_IDS[-1] # claude-3-sonnet

file_path = './test.pdf'
full_path = os.path.join(os.path.dirname(__file__),f'{file_path}')

response = brt.converse(
    # system=[{
    #     'text':system_prompt
    # }],
    modelId = model_id,
    messages = [
        {
            'role':'user',
            'content': [
                {
                    'document': {
                        'name': 'test', 'format': 'pdf',
                        'source': { 
                            'bytes': open(full_path, 'rb').read() 
                        } 
                    }
                },
                { 'text': 'ドキュメントを日本語で説明して' }
            ]
        }
    ],
    inferenceConfig={
        'maxTokens':4096,
        'temperature':0,
        # 'stopSequences':['</output>']
    }
)
print(response['output']['message']['content'][0]['text'])

そして忘れずに pip install boto3 -U します。(1.34.122で動かしました。)

すると…

python claude/converse_pdf.py
このドキュメントは、AWS Bedrock サービスの Anthropic Claude Messages API の使用方法について説明しています。主な内容は以下の通りです。

- Anthropic Claude Messages APIの概要と、メッセージングAPIを使ってチャットボットやバーチャルアシスタントアプリケーションを作成する方法が説明されています。

- サポートされているAnthropicのClaudeモデルのバージョンが列挙されています。

- リクエストとレスポンスの構造、必須パラメータと任意パラメータについて詳しく説明されています。

- システムプロンプト、マルチモーダルプロンプト(画像とテキストの組み合わせ)、ツール使用(関数呼び出し)などの高度な機能についても解説があります。

- Python言語を使ったコード例が複数示されており、単一のユーザーメッセージ、複数のメッセージ、マルチモーダルプロンプト、ストリーミングレスポンスなどの使用例が含まれています。

総じて、このドキュメントはAWS BerockでAnthropicのClaude言語モデルを活用する開発者向けの技術的な内容になっています。

なにーーー!Claude が PDF を読んでるよパトラッシュ…。

ちなみに format=abc など適当なフォーマットにするとエラーが発生して、使えるフォーマット一覧を表示してくれる。

botocore.errorfactory.ValidationException: An error occurred (ValidationException) when calling the Converse operation: 1 validation error detected: Value 'abc' at 'messages.1.member.content.1.member.document.format' failed to satisfy constraint: Member must satisfy enum value set: [docx, csv, html, txt, pdf, md, doc, xlsx, xls]

結構いけますね。

対応モデル

こんなに対応してなのか…。もっとアピールしてよAWSさん。

image.png

せっかくなのでループでそれぞれのモデルを試してみるのである。

コードを以下のように書き換えた

import boto3
import os

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

ANTHROPIC_VERSION = 'bedrock-2023-05-31'

MODEL_IDS = [
    'amazon.titan-text-express-v1',
    'amazon.titan-text-lite-v1',
    'anthropic.claude-instant-v1',
    'anthropic.claude-v2',
    'anthropic.claude-v2:1',
    'anthropic.claude-3-haiku-20240307-v1:0',
    'anthropic.claude-3-sonnet-20240229-v1:0',
    'cohere.command-text-v14',
    'cohere.command-light-text-v14',
    'cohere.command-r-v1:0',
    'cohere.command-r-plus-v1:0',
    'meta.llama2-13b-chat-v1',
    'meta.llama2-70b-chat-v1',
    'meta.llama3-8b-instruct-v1:0',
    'meta.llama3-70b-instruct-v1:0',
    'mistral.mistral-7b-instruct-v0:2',
    'mistral.mixtral-8x7b-instruct-v0:1',
    'mistral.mistral-large-2402-v1:0',
]


file_path = './test.pdf'
full_path = os.path.join(os.path.dirname(__file__),f'{file_path}')

for model_id in MODEL_IDS:
    print(f'---{model_id}---')
    try:
        response = brt.converse(
            modelId = model_id,
            messages = [
                {
                    'role':'user',
                    'content': [
                        {
                            'document': {
                                'name': 'test', 'format': 'pdf',
                                'source': { 
                                    'bytes': open(full_path, 'rb').read() 
                                } 
                            }
                        },
                        { 'text': 'ドキュメントを日本語で説明して' }
                    ]
                }
            ],
            inferenceConfig={
                'maxTokens':2048,
                'temperature':0,
            }
        )
        print(response['output']['message']['content'][0]['text'])
    except Exception as e:
        print(e)
    print('-------\n\n\n')

実行してみた。

python claude/converse_pdf.py
---amazon.titan-text-express-v1---
An error occurred (ValidationException) when calling the Converse operation: The model returned the following errors: 400 Bad Request: Too many input tokens. Max input tokens: 8192, request input token count: 10697 
-------



---amazon.titan-text-lite-v1---
An error occurred (ValidationException) when calling the Converse operation: The model returned the following errors: 400 Bad Request: Too many input tokens. Max input tokens: 4096, request input token count: 10445 
-------



---anthropic.claude-instant-v1---
はい、そのドキュメントはAnthropic ClaudeメッセージAPIの使用方法についての説明です。

主なポイントは以下のとおりです:

- メッセージAPIを使用して、ユーザとAIアシスタントとの会話を実装できるようになります。

- メッセージパラメータには、ロールとコンテンツを指定します。ロールはユーザまたはアシスタント、コンテンツはテキストや画像などです。

- 複数のやり取りを指定でき、最後のメッセージがアシスタントの場合はそこから応答を続けられます。

- 画像データはbase64エンコードされます。

- モデルはAnthropic Claudeです。

- ツールの定義と使用方法も説明されています。

- コード例も示されており、実際のAPI呼び出し方法が分かります。

以上が、このドキュメントの主な内容の日本語説明です。メッセージAPIの仕様やパラメータ、使用方法が詳しく説明されています。
-------



---anthropic.claude-v2---
このドキュメントは、Amazon BedrockのAnthropic Claude Messages APIについて説明しています。

要点:

- Anthropic Claude Messages APIを使用すると、チャットボットや仮想アシスタントアプリケーションを作成できます。このAPIは、ユーザーとAnthropic Claudeモデル(アシスタント)間の会話のやり取りを管理します。

- 入力メッセージは、roleとcontentのオブジェクトで構成されます。roleはuserまたはassistantのいずれかです。contentはテキストまたは画像データです。

- メッセージはInvokeModelまたはInvokeModelWithResponseStream APIでBedrockに送信します。

- サポートされるAnthropic Claudeモデルは、Claude 2、Claude 3 Sonnet、Claude 3.5 Sonnetなどです。

- パラメータには、max_tokens、temperature、top_p、top_kなどがあります。これらは生成されるテキストの長さやランダム性を制御します。

- マルチモーダルプロンプトでは、画像とテキストの両方を同時に送信できます。

- ツール使用機能を使うと、モデルが定義されたツールを呼び出すことができます。

- コード例では、メッセージの送受信方法やマルチモーダルプロンプトの例が示されています。

このAPIを使うと、自然な会話ができるチャットボットを簡単に構築できます。画像とテキストを組み合わせたインタラクションも可能です。
-------



---anthropic.claude-v2:1---
このドキュメントは、Amazon BedrockのAnthropic Claude Messages APIについて説明しています。

要約すると、

- Anthropic Claude Messages APIを使用すると、チャットボットや仮想アシスタントアプリケーションを作成できます。このAPIは、ユーザーとAnthropic Claudeモデル(アシスタント)間の会話のやり取りを管理します。

- 入力メッセージには、role(userまたはassistant)とcontentが必要です。複数のuserメッセージとassistantメッセージを指定できます。

- contentにはテキストや画像を含めることができます。画像の場合はbase64エンコードされた画像バイトを指定します。

- systemプロンプトを使用すると、モデルにコンテキストと指示を提供できます。

- ツール使用機能を使うと、モデルがメッセージへの応答生成にツールを利用できるようになります。

- 応答には、生成されたテキストのほか、使用トークン数などの使用状況情報が含まれます。

- コード例では、単一のuserメッセージや事前入力されたassistantメッセージのプロンプト、マルチモーダルプロンプトの送信方法が示されています。

以上が、このドキュメントの要約です。Anthropic Claude Messages APIの利用方法が詳しく説明されています。
-------



---anthropic.claude-3-haiku-20240307-v1:0---
このドキュメントは、Amazon Bedrock上のAnthropic Claude APIの使用方法について説明しています。主な内容は以下の通りです:

1. Anthropic Claude Messages APIの概要
   - メッセージベースのチャットボットやバーチャルアシスタントを作成するためのAPIです。
   - ユーザーとアシスタントの会話履歴を管理し、次のメッセージを生成します。

2. サポートされているモデル
   - Anthropic Claude Instant v1.2、Anthropic Claude 2 v2、Anthropic Claude 2 v2.1など、複数のAnthropic Claudeモデルがサポートされています。

3. リクエストとレスポンス
   - リクエストには、メッセージ履歴、システムプロンプト、温度、トップpなどのパラメータを指定します。
   - レスポンスには、生成されたメッセージ、使用トークン数、停止理由などの情報が含まれます。

4. コード例
   - メッセージのみのリクエスト
   - 事前に埋められたアシスタントメッセージを含むリクエスト
   - マルチモーダルなリクエスト(画像とテキストを含む)

全体として、Anthropic Claude Messages APIの使用方法と、様々なユースケースに対応するためのリクエスト例が示されています。
-------



---anthropic.claude-3-sonnet-20240229-v1:0---
このドキュメントは、AWS Bedrock サービスの Anthropic Claude Messages API の使用方法について説明しています。主な内容は以下の通りです。

- Anthropic Claude Messages APIの概要と、メッセージングAPIを使ってチャットボットやバーチャルアシスタントアプリケーションを作成する方法が説明されています。

- サポートされているAnthropicClaudeモデルのリストが示されています。

- リクエストとレスポンスの構造、必須パラメータと任意パラメータについて詳しく説明されています。

- システムプロンプト、マルチモーダルプロンプト、ツール使用(関数呼び出し)などの高度な機能についても解説があります。

- Python言語を使ったコード例が複数示されており、単一のユーザーメッセージ、複数のメッセージ、マルチモーダルプロンプト(画像+テキスト)の送信方法が分かります。

- ストリーミングレスポンスの取得方法についても、コード例が用意されています。

総じて、このドキュメントはAWS BedrocクのAnthropicClaudeモデルを使ってメッセージングアプリケーションを構築する開発者向けのリファレンスとなっています。
-------



---cohere.command-text-v14---
An error occurred (ValidationException) when calling the Converse operation: The model returned the following errors: Input is too long for requested model.
-------



---cohere.command-light-text-v14---
An error occurred (ValidationException) when calling the Converse operation: This model doesn't support documents.
-------



---cohere.command-r-v1:0---
このドキュメントは、アマゾン・ベッドロックのユーザーガイドで、アンソロピック・クロード・メッセージAPIについて説明したものです。API(アプリケーション・プログラミング・インターフェース)とは、開発者がソフトウェアの機能を利用できるようにするインターフェースで、チャットボットやバーチャルアシスタントのアプリケーションを作成するために使用できます。このガイドでは、パラメーター、コード例、使用できるモデルなど、APIの様々な機能について説明しています。
-------



---cohere.command-r-plus-v1:0---
このドキュメントは、Anthropic Claude Messages API を使用してチャットボットやバーチャルアシスタント アプリケーションを作成する方法を説明しています。この API は、ユーザーと Anthropic Claude モデル(アシスタント)との会話のやりとりを管理します。

このドキュメントでは、ベースとなる推論操作を使用して Anthropic Claude Messages API を使用する方法と、推奨される Converse API を使用してメッセージを実装する方法について説明しています。

Anthropic Claude モデルは、交互にユーザーとアシスタントの会話が行われるようにトレーニングされています。新しいメッセージを作成する際は、メッセージ パラメーターを使用して以前の会話のやり取りを指定します。その後、モデルが会話の次のメッセージを生成します。

各入力メッセージには、ロールとコンテンツが必要です。ユーザー ロールのみの 1 つのメッセージ、または複数のユーザーとアシスタントのメッセージを指定できます。最初のメッセージは常にユーザー ロールでなければなりません。

このドキュメントには、さまざまなコード例と、Anthropic Claude モデルで使用できるさまざまなパラメーターとオプションも記載されています。
-------



---meta.llama2-13b-chat-v1---
An error occurred (ValidationException) when calling the Converse operation: The model returned the following errors: This model's maximum context length is 4096 tokens. Please reduce the length of the prompt
-------



---meta.llama2-70b-chat-v1---
An error occurred (ValidationException) when calling the Converse operation: The model returned the following errors: This model's maximum context length is 4096 tokens. Please reduce the length of the prompt
-------



---meta.llama3-8b-instruct-v1:0---
An error occurred (ValidationException) when calling the Converse operation: The model returned the following errors: This model's maximum context length is 8192 tokens. Please reduce the length of the prompt
-------



---meta.llama3-70b-instruct-v1:0---
An error occurred (ValidationException) when calling the Converse operation: The model returned the following errors: This model's maximum context length is 8192 tokens. Please reduce the length of the prompt
-------



---mistral.mistral-7b-instruct-v0:2---
 このドキュメントは、Amazon Bedrockの Anthropic Claude Messages API について説明しています。 Anthropic Claude Messages APIは、チャットボットや仮人アシスタントアプリケーションなどを作成するために使用できます。APIは、ユーザーと Anthropic Claude モデル (アシスタント) の間の会話を管理します。

このドキュメントでは、APIの概要、サポートされるモデル、リクエストとレスポンス、およびコード例について説明しています。 Anthropic Claude Messages APIを使用する方法は、InvokeModel または InvokeModelWithResponseStream APIを使用することを推奨しています。しかし、Converse APIを使用することを強くお勧めしています。

 Anthropic Claudeは、ユーザーとアシスタントの対話の交代を管理します。各入力メッセージは、roleとcontentで構成され、モデルは次のメッセージを生成します。入力メッセージは、ユーザーメッセージの場合は常にuser roleを使用する必要があります。

 Anthropic Claudeは、ユーザーが応答を先に入力しておくことを許可しています。このテクニックを使用すると、Claudeはユーザーの入力から引き続き応答します。最終メッセージがassistant roleを使用する場合、レスポンスコンテンツは、最終メッセージのコンテンツから直接続続きします。これにより、モデルの応答を制限できます。

 このドキュメントでは、例を提供しています。単一のユーザーメッセージと複数の会話回りの例があります。各入力メッセージは、roleとcontentで構成され、最初のメッセージは常にuser roleを使用する必要があります。

 Anthropic Claudeは、Text Completion APIからのプロンプトを移行するためにも使用できます。System promptsも使用でき、ユーザーが提供するコンテキストや指示を Anthropic Claude に提供します。

 Anthropic Claudeは、multimodal promptをサポートし、画像とテキストを組み合わせて1つのプロンプトを作成できます。

 Anthropic Claudeは、 Anthropic Claude Instant v1.2、Anthropic Claude 2 v2、Anthropic Claude 2 v2.1、Anthropic Claude 3 Sonnet、Anthropic Claude 3.5 Sonnet、Anthropic Claude 3 Haiku、Anthropic Claude 3 Opusの6種類のモデルをサポートしています。

 Anthropic Claudeは、InvokeModelまたはInvokeModelWithResponseStream APIを使用してリクエストを送信し、bodyフィールドにリクエストボディを渡します。最大サイズは20MBです。

 Anthropic ClaudeのAPIの詳細は、<https://docs.anthropic.com/claude/reference/messages_post>を参照してください。
-------



---mistral.mixtral-8x7b-instruct-v0:1---
 このドキュメントは、AWS Bedrockユーザーガイドの一部で、Anthropic Claude Messages APIについて説明しています。このAPIを使用すると、チャットボットや仮想アシスタントアプリケーションを作成できます。APIはユーザーとAnthropic Claudeモデル(アシスタント)との会話を管理します。

このドキュメントでは、Anthropic Claude Messages APIの概要、サポートされているモデル、要求と応答、コード例について説明しています。また、Anthropic Claudeモデルを操作するためのシステムプロンプトや、Anthropic Claudeモデルが画像とテキストを組み合わせたプロンプトを処理できるMultimodalプロンプトについても説明しています。

さらに、このドキュメントでは、Anthropic Claudeモデルが使用できるTools(機能)についても説明しています。Toolsは、Anthropic Claudeモデルが応答を生成するために使用できる外部の機能です。Toolsを使用すると、Anthropic Claudeモデルはより複雑なタスクを処理できます。

このドキュメントには、Anthropic Claude Messages APIを使用するためのコード例も含まれています。これらの例では、Pythonを使用して、Anthropic Claude 3 Sonnetモデルにメッセージを送信し、応答を受信する方法を示しています。また、Multimodalプロンプトを使用して、画像とテキストを組み合わせてAnthropic Claude 3 Sonnetモデルにメッセージを送信する方法も示しています。

Anthropic Claude Messages APIを使用するために、Amazon BedrockのAPIリファレンスドキュメントを参照することも重要です。このドキュメントには、Anthropic Claude Messages APIを呼び出すためのAPIメソッドとパラメーターについて説明しています。
-------



---mistral.mistral-large-2402-v1:0---
Read timeout on endpoint URL: "https://bedrock-runtime.us-east-1.amazonaws.com/model/mistral.mistral-large-2402-v1%3A0/converse"
---

タイムアウトしたりトークンが長すぎエラーが起きたり、対応していないエラーなども出ましたが(確認したつもり何だがなぁ)初めて正しい Converse API の使い方をした予感です。
簡単にモデルを差し替えて使えますね!

29
22
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
29
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?