いつの間にかアップデートが走ってました。
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さん。
せっかくなのでループでそれぞれのモデルを試してみるのである。
コードを以下のように書き換えた
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 の使い方をした予感です。
簡単にモデルを差し替えて使えますね!