画像認識と画像入力
マルチモーダルモデルに画像を送信する方法:エンコード、サイズ制限、費用。
ClaudeとGeminiのモデルは、テキストとともに画像を受け付けます。画像は通常のメッセージ内のコンテンツブロックとして扱われます。
Base64画像
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": [
{"type": "image", "source": {
"type": "base64",
"media_type": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUg..."
}},
{"type": "text", "text": "What does this chart show?"}
]
}]
}
Python
import base64, anthropic
img = base64.standard_b64encode(open(class="s">"chart.png", class="s">"rb").read()).decode()
client = anthropic.Anthropic(api_key=class="s">"sk-your-key", base_url=class="s">"https://aiprimetech.io")
msg = client.messages.create(
model=class="s">"claude-sonnet-4-6",
max_tokens=1024,
messages=[{class="s">"role": class="s">"user", class="s">"content": [
{class="s">"type": class="s">"image", class="s">"source": {class="s">"type": class="s">"base64",
class="s">"media_type": class="s">"image/png", class="s">"data": img}},
{class="s">"type": class="s">"text", class="s">"text": class="s">"What does this chart show?"},
]}],
)
print(msg.content[0].text)
実用上の制限
| 制約 | ガイダンス |
|---|---|
| 形式 | PNG、JPEG、GIF、WebP |
| 解像度 | 非常に大きな画像は上流側で縮小されます。送信前に長辺を約1500pxにリサイズすると、品質を損なわずにトークンを節約できます。 |
| 費用 | 画像は入力トークンとして課金され、その量はおおむね面積に比例します。ページ全体のスクリーンショットは、テキストのページより高くつく場合があります。 |
| 複数の画像 | メッセージごとに複数の画像ブロックを含めることができます。それぞれに課金されます。 |
エージェントループでは、画像も他のコンテンツと同様に、ターンごとに履歴とともに再送されます。画像の内容が説明されたら会話履歴から削除してください。そうしないと、同じスクリーンショットに繰り返し料金を支払うことになります。