이 가이드에서는 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-4-8",
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-4-8",
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를 사용하세요. 이미지를 한 번 업로드한 다음, base64 데이터를 다시 전송하는 대신 반환된 file_id를 후속 메시지에서 참조하세요.
멀티턴 대화 및 에이전트 워크플로에서는 각 요청이 전체 대화 기록을 다시 전송합니다. 이미지가 base64로 인코딩된 경우, 매 턴마다 전체 이미지 바이트가 페이로드에 포함되어 대화가 길어질수록 요청 크기와 "latency"(지연 시간)가 크게 증가할 수 있습니다. 이미지를 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-4-8",
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: 등)을 붙여 소개하면 프롬프트와 후속 턴에서 이름으로 참조할 수 있습니다.
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Image 1:"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC",
},
},
{"type": "text", "text": "Image 2:"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNgYPgPAAEDAQAIicLsAAAAAElFTkSuQmCC",
},
},
{"type": "text", "text": "How are these images different?"},
],
}
],
)
print(message)멀티턴 대화에서는 이후 user 턴에 동일한 방식으로 새 이미지를 추가하세요. Claude는 이전 턴의 모든 이미지에 접근할 수 있으므로, "이것들이 처음 두 개와 비슷한가요?"와 같은 후속 질문은 새 턴의 콘텐츠에 이전 이미지를 다시 포함하지 않아도 작동합니다.
메시지 또는 요청당 최대 이미지 수는 다음과 같습니다:
이미지당 최대 크기는 8000x8000 px입니다.
단일 API 요청에 20개를 초과하는 이미지가 포함된 경우, 더 엄격한 이미지별 크기 제한이 적용됩니다. Amazon Bedrock 및 Google Cloud에서는 PDF와 같은 문서 블록도 이 임계값에 포함됩니다. 더 엄격한 제한을 초과하는 이미지는 "many-image requests"를 참조하고 현재 픽셀 제한을 명시하는 메시지와 함께 invalid_request_error로 거부됩니다. 모든 플랫폼에서 제한 내에 머물려면 각 이미지의 어느 쪽 크기도 2000 px를 초과하지 않도록 크기를 조정하거나, 요청을 이미지 및 문서 블록 20개 이하로 유지하세요.
이미지당 최대 크기는 다음과 같습니다:
API는 요청당 최대 600개의 이미지를 지원하지만, 요청 크기 제한(표준 엔드포인트의 경우 32 MB, Amazon Bedrock 및 Google Cloud와 같은 일부 파트너 운영 플랫폼에서는 더 낮음)에 먼저 도달할 수 있습니다. 많은 이미지의 경우 Files API로 업로드하고 file_id로 참조하여 요청 페이로드를 작게 유지하는 것을 고려하세요.
Files API를 사용하더라도 큰 이미지가 많은 요청은 600개 이미지 수에 도달하기 전에 실패할 수 있습니다. 업로드하기 전에 이미지 크기 또는 파일 크기를 줄이세요(예: 다운샘플링). 해상도 및 토큰 비용을 참조하세요.
Claude는 JPEG, PNG, GIF, WebP 이미지(image/jpeg, image/png, image/gif, image/webp)를 지원합니다. 애니메이션은 지원되지 않으며 첫 번째 프레임만 사용됩니다.
Claude는 픽셀 대신 패치 단위로 이미지를 봅니다. 각 패치는 이미지의 28×28 픽셀 블록이며, 이를 비주얼 토큰이라고 합니다. 따라서 이미지는 ⌈width / 28⌉ × ⌈height / 28⌉ 비주얼 토큰의 비용이 듭니다.
각 모델에는 긴 변 제한과 비주얼 토큰 제한으로 표현되는 최대 기본 이미지 해상도가 있습니다. 두 제한 중 하나보다 큰 이미지는 처리 전에 축소됩니다. 정확한 규칙은 Claude가 이미지 크기를 조정하고 패딩하는 방법을 참조하세요.
| 해상도 등급 | 모델 | 최대 긴 변 | 최대 비주얼 토큰 |
|---|---|---|---|
| 고해상도 | Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, Claude Opus 4.7, Claude Sonnet 5 | 2576 px | 4784 |
| 표준 | 그 외 모든 모델 | 1568 px | 1568 |
고해상도 지원은 나열된 모델에서 자동으로 적용되며 베타 헤더나 클라이언트 측 옵트인이 필요하지 않습니다.
다음 표는 각 등급에서 여러 이미지 크기에 대한 비주얼 토큰 비용을 보여줍니다:
| 이미지 크기 | 표준 등급 토큰 | 고해상도 등급 토큰 |
|---|---|---|
| 200x200 px (0.04 메가픽셀) | 64 | 64 |
| 1000x1000 px (1 메가픽셀) | 1296 | 1296 |
| 1092x1092 px (1.19 메가픽셀) | 1521 | 1521 |
| 1920x1080 px (2.07 메가픽셀) | 1560 | 2691 |
| 2000x1500 px (3 메가픽셀) | 1564 | 3888 |
| 3840x2160 px (8.29 메가픽셀) | 1560 | 4784 |
비용을 추정하려면 토큰 수에 사용 중인 모델의 토큰당 가격을 곱하세요. 예를 들어, Claude Haiku 4.5의 입력 토큰 100만 개당 $1(표준 등급)에서 1000×1000 이미지는 이미지 1,000개당 약 $1.30의 비용이 듭니다. Claude Opus 4.8의 100만 개당 $5(고해상도 등급)에서는 동일한 이미지가 1,000개당 약 $6.48, 4K 이미지는 1,000개당 약 $23.92의 비용이 듭니다.
고해상도 이미지는 표준 등급 모델의 동일한 이미지보다 최대 약 3배 더 많은 비주얼 토큰을 사용할 수 있습니다. 컴퓨터 사용, 스크린샷 이해, 밀도 높은 문서에 고해상도가 제공하는 추가 정밀도가 필요하지 않다면, 토큰 비용을 제어하기 위해 전송 전에 이미지를 다운샘플링하세요. latency를 최소화하고 좌표 기반 워크플로를 단순화하려면 업로드하기 전에 이미지 크기를 조정하는 것을 선호하세요.
Claude에 이미지를 제공할 때 최상의 결과를 위해 다음 사항을 염두에 두세요:
바운딩 박스, 포인트, 픽셀 좌표에 대해서는 좌표 및 바운딩 박스를 참조하세요. Claude는 크기 조정 후 보는 이미지를 기준으로 절대 픽셀 좌표를 반환합니다. 해당 가이드에서는 Claude가 이미지 크기를 조정하고 패딩하는 방법과 좌표가 원본 이미지와 일치하도록 미리 크기를 조정하거나 재조정하는 방법을 다룹니다.
Claude의 이미지 이해 기능은 최첨단이지만, 알아두어야 할 몇 가지 제한 사항이 있습니다:
특히 중요한 사용 사례의 경우 Claude의 이미지 해석을 항상 신중하게 검토하고 검증하세요. 사람의 감독 없이 완벽한 정밀도나 민감한 이미지 분석이 필요한 작업에 Claude를 사용하지 마세요.
차트 해석 및 양식에서 콘텐츠 추출과 같은 작업에 대한 팁과 모범 사례 기법을 확인하세요.
이미지를 포함한 예제 API 호출을 비롯한 Messages API 문서를 참조하세요.
Was this page helpful?