ビジョン
Claude 3ファミリーのモデルには、Claudeが画像を理解・分析できる新しいビジョン機能が搭載されており、マルチモーダルなインタラクションの可能性が広がっています。
このガイドでは、ベストプラクティス、コード例、留意点など、Claudeで画像を扱う方法について説明します。
ビジョンの使い方
Claudeのビジョン機能は以下の方法で利用できます。
- claude.ai。画像をファイルのようにアップロードするか、チャットウィンドウに直接ドラッグ&ドロップします。
- Console Workbench。画像を受け付けるモデル(Claude 3モデルのみ)を選択すると、各ユーザーメッセージブロックの右上に画像を追加するボタンが表示されます。
- APIリクエスト。このガイドの例を参照してください。
アップロード前の注意点
画像サイズの評価
1つのリクエストに複数の画像を含めることができます(claude.aiでは最大5枚、APIリクエストでは最大20枚)。Claudeは提供されたすべての画像を分析して応答を作成します。これは画像の比較や対比に役立ちます。
最適なパフォーマンスを得るには、サイズやトークンの制限を超える画像はアップロード前にリサイズすることをお勧めします。画像の長辺が1568ピクセルを超える場合、または画像が約1,600トークンを超える場合、アスペクト比を維持したまま、サイズ制限内になるまで縮小されます。
入力画像が大きすぎてリサイズが必要な場合、モデルのパフォーマンスは向上しませんが、time-to-first-tokenのレイテンシーが増加します。いずれかの辺が200ピクセル未満の非常に小さな画像では、パフォーマンスが低下する可能性があります。
APIで受け付ける最大画像サイズのうち、一般的なアスペクト比でリサイズされない画像の表は以下の通りです。Claude 3.5 Sonnetモデルでは、これらの画像は約1,600トークンを使用し、1,000画像あたり約$4.80になります。
アスペクト比 | 画像サイズ |
---|---|
1:1 | 1092x1092 px |
3:4 | 951x1268 px |
2:3 | 896x1344 px |
9:16 | 819x1456 px |
1:2 | 784x1568 px |
画像コストの計算
Claudeへのリクエストに含める各画像は、トークン使用量にカウントされます。おおよそのコストを計算するには、画像トークンのおおよその数に、使用しているモデルのトークンあたりの価格を掛けます。
画像をリサイズする必要がない場合、このアルゴリズムを使用してトークン数を推定できます。tokens = (width px * height px)/750
APIのサイズ制約内のさまざまな画像サイズについて、Claude 3.5 Sonnetの入力トークン100万あたり$3という価格に基づいた、おおよそのトークン化とコストの例を以下に示します。
画像サイズ | トークン数 | 画像あたりのコスト | 1,000画像あたりのコスト |
---|---|---|---|
200x200 px(0.04メガピクセル) | ~54 | ~$0.00016 | ~$0.16 |
1000x1000 px(1メガピクセル) | ~1334 | ~$0.004 | ~$4.00 |
1092x1092 px(1.19メガピクセル) | ~1590 | ~$0.0048 | ~$4.80 |
画像品質の確保
Claudeに画像を提供する際は、最良の結果を得るために以下の点に留意してください。
- 画像フォーマット: サポートされている画像フォーマット(JPEG、PNG、GIF、WebP)を使用してください。
- 画像の鮮明さ: 画像が鮮明で、ぼやけたりピクセル化したりしていないことを確認してください。
- テキスト: 画像に重要なテキストが含まれている場合は、読みやすく、小さすぎないことを確認してください。テキストを拡大するために重要な視覚的コンテキストをトリミングしないでください。
プロンプトの例
Claudeとのテキストベースのインタラクションでうまくいくプロンプト技術の多くは、画像ベースのプロンプトにも適用できます。
これらの例は、画像を含むプロンプト構造のベストプラクティスを示しています。
プロンプト例について
これらのプロンプト例では、Anthropic Python SDKを使用し、httpx
ライブラリを使用してWikipediaから画像を取得しています。任意の画像ソースを使用できます。
プロンプト例ではこれらの変数を使用しています。
import base64
import httpx
image1_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image1_media_type = "image/jpeg"
image1_data = base64.b64encode(httpx.get(image1_url).content).decode("utf-8")
image2_url = "https://upload.wikimedia.org/wikipedia/commons/b/b5/Iridescent.green.sweat.bee1.jpg"
image2_media_type = "image/jpeg"
image2_data = base64.b64encode(httpx.get(image2_url).content).decode("utf-8")
APIリクエストで画像を利用するには、base64エンコードされた画像をimage
コンテンツブロックでClaudeに提供します。base64エンコードされた画像をMessages APIリクエストに含める方法を示す簡単なPythonの例を以下に示します。
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": image1_media_type,
"data": image1_data,
},
},
{
"type": "text",
"text": "この画像を説明してください。"
}
],
}
],
)
print(message)
パラメータの詳細など、その他のコード例については、Messages APIの例を参照してください。
制限事項
Claudeの画像理解機能は最先端ですが、いくつかの制限があることに注意してください。
- 人物の識別: Claudeは画像内の人物を識別(つまり、名前を付ける)するために使用することはできません。そのようなことを求められても拒否します。
- 精度: Claudeは、低品質、回転、または200ピクセル未満の非常に小さな画像を解釈する際に、幻覚を見たり間違いを犯したりする可能性があります。
- 空間推論: Claudeの空間推論能力は限られています。アナログ時計の文字盤を読んだり、チェスの駒の正確な位置を説明したりするなど、正確な位置や配置を必要とするタスクでは苦労するかもしれません。
- 数え上げ: Claudeは画像内のオブジェクトのおおよその数を数えることができますが、特に小さなオブジェクトが多数ある場合は、常に正確とは限りません。
- AI生成画像: ClaudeはAIが生成した画像かどうかを知りません。尋ねられても間違った答えをする可能性があります。偽物や合成画像の検出にClaudeを頼らないでください。
- 不適切なコンテンツ: Claudeは、利用規約に違反する不適切または露骨な画像を処理しません。
- ヘルスケアアプリケーション: Claudeは一般的な医療画像を分析できますが、CTやMRIなどの複雑な診断スキャンを解釈するようには設計されていません。Claudeの出力は、専門家による医療アドバイスや診断の代替とみなすべきではありません。
特に重要なユースケースでは、Claudeの画像解釈を慎重に確認してください。人間の監督なしに、完璧な精度や機密性の高い画像分析を必要とするタスクにClaudeを使用しないでください。
よくある質問
ビジョンについてさらに深く知る
Claudeを使って画像を扱う準備はできましたか?ここではいくつかの役立つリソースを紹介します。
- マルチモーダルクックブック: このクックブックには、画像の使い方を始めるためのヒントや、画像で最高のパフォーマンスを発揮するためのベストプラクティス手法が掲載されています。チャートの解釈と分析やフォームからのコンテンツ抽出など、画像を使ってClaudeに効果的にプロンプトを与えてタスクを実行する方法をご覧ください。
- APIリファレンス: Messages APIのドキュメントをご覧ください。画像を含むAPIコールの例も掲載しています。
その他ご不明な点がございましたら、サポートチームまでお気軽にお問い合わせください。また、開発者コミュニティに参加して、他のクリエイターとつながったり、Anthropicの専門家からヘルプを得たりすることもできます。