本指南說明如何將圖像傳送給 Claude、適用的限制與成本,以及在哪裡可以找到基於座標的工作流程的指引。
透過以下方式使用 Claude 的視覺能力:
在 API 上,使用以下三種來源類型之一,以 image 內容區塊的形式向 Claude 提供圖像:
file_id(上傳一次,多次參照)在 Amazon Bedrock 和 Google Cloud 上,目前僅提供 base64 編碼的來源。
正如將長文件放在查詢之前可以改善文字提示的結果一樣,當圖像出現在文字之前時,Claude 的表現最佳。放在文字之後或與文字交錯的圖像仍然表現良好,但如果您的使用案例允許,請優先採用先圖像後文字的結構。
image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image1_media_type = "image/png"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": image1_media_type,
"data": image1_data,
},
},
{"type": "text", "text": "Describe this image."},
],
}
],
)
print(message)client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg",
},
},
{"type": "text", "text": "Describe this image."},
],
}
],
)
print(message)對於您會重複使用的圖像,或當您想避免編碼開銷時,請使用 Files API。上傳圖像一次,然後在後續訊息中參照回傳的 file_id,而不是重新傳送 base64 資料。
在多輪對話和代理式工作流程中,每個請求都會重新傳送完整的對話歷史。如果圖像是 base64 編碼的,每一輪的酬載中都會包含完整的圖像位元組,隨著對話的增長,這可能會顯著增加請求大小和延遲。將圖像上傳到 Files API 並透過 file_id 參照它們,無論對話歷史中累積了多少圖像,都能保持請求酬載的小巧。
client = anthropic.Anthropic()
# 上傳圖片檔案
with open("image.jpg", "rb") as f:
file_upload = client.beta.files.upload(file=("image.jpg", f, "image/jpeg"))
# 在訊息中使用已上傳的檔案
message = client.beta.messages.create(
model="claude-opus-5",
max_tokens=1024,
betas=["files-api-2025-04-14"],
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {"type": "file", "file_id": file_upload.id},
},
{"type": "text", "text": "Describe this image."},
],
}
],
)
print(message.content)請參閱 Messages API 範例以取得更多範例程式碼和參數詳細資訊。
您可以在單一請求中包含多張圖像,Claude 會聯合分析它們。這對於比較圖像、詢問差異,或處理諸如文件頁面之類的序列非常有用。傳送多張圖像時,請為每張圖像加上簡短的文字標籤(Image 1:、Image 2: 等),以便您可以在提示和後續輪次中按名稱參照它們。
image1_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"
image2_data = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYPgPAAEDAQAIicLsAAAAAElFTkSuQmCC"
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Image 1:"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image1_data,
},
},
{"type": "text", "text": "Image 2:"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image2_data,
},
},
{"type": "text", "text": "How are these images different?"},
],
}
],
)
print(message)在多輪對話中,以相同的方式在後續的 user 輪次中新增新圖像。Claude 可以存取先前輪次中的每張圖像,因此諸如「這些與前兩張相似嗎?」之類的後續問題無需在新輪次的內容中再次包含先前的圖像即可運作。
每則訊息或每個請求的最大圖像數量為:
每張圖像的最大尺寸為 8000x8000 px。
如果單一 API 請求包含超過 20 張圖像,則會套用更嚴格的每張圖像尺寸限制。在 Amazon Bedrock 和 Google Cloud 上,諸如 PDF 之類的文件區塊也計入此門檻。超過更嚴格限制的圖像會被拒絕,並回傳 invalid_request_error,其訊息會提及「many-image requests」並說明目前的像素限制。若要在所有平台上保持在限制之下,請將每張圖像調整大小,使任一邊都不超過 2000 px,或將請求保持在 20 個或更少的圖像和文件區塊。
每張圖像的最大大小為:
雖然 API 支援每個請求最多 600 張圖像,但可能會先達到請求大小限制(標準端點為 32 MB;在某些合作夥伴營運的平台上較低,例如 Amazon Bedrock 和 Google Cloud)。對於大量圖像,請考慮使用 Files API 上傳並透過 file_id 參照,以保持請求酬載的小巧。
即使使用 Files API,包含許多大型圖像的請求也可能在達到 600 張圖像數量之前就失敗。請在上傳之前減少圖像尺寸或檔案大小(例如透過降低取樣)(請參閱解析度與 token 成本)。
Claude 支援 JPEG、PNG、GIF 和 WebP 圖像(image/jpeg、image/png、image/gif、image/webp)。不支援動畫,且僅使用第一個影格。
Claude 以區塊(patch)而非像素來檢視圖像。每個區塊是圖像中一個 28×28 像素的方塊,稱為視覺 token。因此,一張圖像的成本為 ⌈width / 28⌉ × ⌈height / 28⌉ 個視覺 token。
每個模型都有一個最大原生圖像解析度,以長邊限制和視覺 token 限制表示。大於任一限制的圖像會在處理前被縮小;請參閱 Claude 如何調整圖像大小和填充以了解確切的規則。
| 解析度層級 | 模型 | 最大長邊 | 最大視覺 token |
|---|---|---|---|
| 高解析度 | Claude 4.7 及更新的模型 | 2576 px | 4784 |
| 標準 | 所有其他模型 | 1568 px | 1568 |
高解析度支援在列出的模型上是自動的,不需要 beta 標頭或用戶端選擇加入。
下表顯示了每個層級上幾種圖像大小的縮小後解析度和視覺 token 成本:
| 圖像大小 | 標準層級:縮小至 | 標準層級:token | 高解析度層級:縮小至 | 高解析度層級:token |
|---|---|---|---|---|
| 200x200 px(0.04 百萬像素) | 不調整大小 | 64 | 不調整大小 | 64 |
| 1000x1000 px(1 百萬像素) | 不調整大小 | 1296 | 不調整大小 | 1296 |
| 1092x1092 px(1.19 百萬像素) | 不調整大小 | 1521 | 不調整大小 | 1521 |
| 1920x1080 px(2.07 百萬像素) | 1456x819 px | 1560 | 不調整大小 | 2691 |
| 2000x1500 px(3 百萬像素) | 1269x952 px | 1564 | 不調整大小 | 3888 |
| 3840x2160 px(8.29 百萬像素) | 1456x819 px | 1560 | 2576x1449 px | 4784 |
當圖像被縮小時,Claude 會在保持其長寬比的同時,將其縮放到符合該層級限制的最大尺寸。這會限制 token 成本的上限。有關精確的規則和參考實作,請參閱 Claude 如何調整圖像大小和填充。
若要估算成本,請將 token 數量乘以您所使用模型的每 token 價格。例如,以 Claude Haiku 4.5 每百萬輸入 token 1 美元(標準層級)計算,1000×1000 的圖像每千張約花費 $1.30。以 Claude Opus 5 每百萬 5 美元(高解析度層級)計算,同一張圖像每千張約花費 $6.48,而 4K 圖像每千張約花費 $23.92。
高解析度圖像使用的視覺 token 可能比同一張圖像在標準層級模型上多出大約三倍。如果您不需要高解析度為電腦使用、螢幕截圖理解和密集文件所提供的額外保真度,請在傳送前對圖像進行降低取樣以控制 token 成本。為了最小化延遲並簡化基於座標的工作流程,請優先在上傳圖像之前調整其大小。
向 Claude 提供圖像時,請記住以下幾點以獲得最佳結果:
有關邊界框、點和像素座標,請參閱座標與邊界框。Claude 回傳的是相對於其在調整大小後所看到的圖像的絕對像素座標;該指南涵蓋了 Claude 如何調整圖像大小和填充,以及如何預先調整大小或重新縮放,使座標與您的原始圖像對齊。
雖然 Claude 的圖像理解能力是最先進的,但仍有一些需要注意的限制:
請務必仔細審查和驗證 Claude 的圖像解讀,尤其是對於高風險的使用案例。在沒有人工監督的情況下,請勿將 Claude 用於需要完美精確度或敏感圖像分析的任務。
取得諸如解讀圖表和從表單中擷取內容等任務的技巧和最佳實務技術。
查看 Messages API 文件,包括涉及圖像的 API 呼叫範例。
Was this page helpful?