Claude 3 모델 제품군은 Claude가 이미지를 이해하고 분석할 수 있는 새로운 비전 기능을 제공하여 멀티모달 상호 작용을 위한 흥미로운 가능성을 열어줍니다. 이제 Claude를 사용하면 텍스트와 이미지 입력을 모두 제공하여 대화를 풍부하게 하고 강력한 새로운 사용 사례를 가능하게 할 수 있습니다.

비전 지원 모델

Claude의 비전 기능에 액세스하기 위해 특별한 버전의 Claude 3 모델을 사용할 필요가 없습니다. 모든 Claude 3 모델은 이미지를 이해하고 분석할 수 있습니다.

이 가이드에서는 모범 사례, 코드 예제 및 주의해야 할 제한 사항을 포함하여 Claude에서 이미지를 사용하는 방법을 안내합니다.

지금 claude.ai에서 이미지로 채팅해 보세요!


시작하기

현재 Claude의 비전 기능은 다음 세 가지 방법으로 활용할 수 있습니다:

  • claude.ai의 채팅 창에서 직접 사용. 파일을 업로드하듯이 이미지를 업로드하거나 이미지를 창으로 직접 드래그 앤 드롭하세요!
  • Console Workbench를 통해 사용. 이미지를 허용하는 모델(Claude 3 모델만 해당)을 선택하면 모든 User 메시지 블록의 오른쪽 상단에 이미지를 추가하는 버튼이 나타납니다.
  • API 요청을 통해 사용 - 아래 지침을 참조하세요.

이 가이드에서는 Anthropic Python SDK와 다음 예제 변수를 사용할 것입니다. httpx 라이브러리를 사용하여 Wikipedia에서 샘플 이미지를 가져오지만, 원하는 이미지 소스를 사용해도 됩니다.

Python
import anthropic
import base64
import httpx

client = anthropic.Anthropic()

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 콘텐츠 블록에 제공할 수 있습니다. 다음은 Python에서 base64로 인코딩된 이미지를 Messages API 요청에 포함하는 방법을 보여주는 간단한 예제입니다:

Python

message = client.messages.create(
    model="claude-3-opus-20240229",
    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)

지원되는 이미지 형식은 JPEG, PNG, GIF 및 WebP입니다. 더 많은 예제 코드와 매개변수 세부 정보는 Messages API 예제를 참조하세요.


이미지 크기

최적의 성능을 위해 이미지가 크기 또는 토큰 제한을 초과할 가능성이 있는 경우 업로드하기 전에 이미지 크기를 조정하는 것이 좋습니다. 이미지의 긴 변이 1568픽셀 이상이거나 이미지가 약 1600토큰 이상인 경우 크기 제한 내에 들어갈 때까지 가로 세로 비율을 유지하면서 축소됩니다. 입력 이미지가 너무 크고 크기를 조정해야 하는 경우 모델 성능을 추가로 제공하지 않고 첫 번째 토큰까지의 시간이 증가합니다. 가장자리가 200픽셀 미만인 매우 작은 이미지는 성능이 저하될 수 있습니다.

첫 번째 토큰까지의 시간을 개선하려면 이미지 크기를 1.15메가픽셀 이하(양쪽 치수 모두 1568픽셀 이내)로 조정하는 것이 좋습니다.

다음은 크기가 조정되지 않는 일반적인 가로 세로 비율에 대해 API에서 허용하는 최대 이미지 크기 표입니다. 이 모든 이미지는 약 1600토큰과 1K 이미지당 약 $4.80(Claude 3 Sonnet 사용 가정)으로 근사합니다:

가로 세로 비율이미지 크기
1:11092x1092 px
3:4951x1268 px
2:3896x1344 px
9:16819x1456 px
1:2784x1568 px

이미지 모범 사례

Claude에 이미지를 제공할 때 최상의 결과를 얻으려면 다음 지침을 염두에 두세요:

  • 이미지 선명도: 이미지가 선명하고 너무 흐리거나 픽셀화되지 않았는지 확인하세요. Claude는 불분명하거나 품질이 낮은 이미지를 정확하게 해석하는 데 어려움을 겪을 수 있습니다.
  • 이미지 배치: 문서-쿼리 배치와 마찬가지로 이미지가 텍스트 앞에 올 때 Claude가 가장 잘 작동합니다. 텍스트 뒤에 배치되거나 텍스트와 삽입된 이미지도 여전히 잘 수행되지만, 사용 사례에서 허용되는 경우 이미지-텍스트 구조를 권장합니다. 자세한 내용은 비전 프롬프팅 팁을 참조하세요.
  • 텍스트: 이미지에 중요한 텍스트가 포함된 경우 읽을 수 있고 너무 작지 않은지 확인하세요. 그러나 텍스트를 확대하기 위해 주요 시각적 맥락을 잘라내지 마세요.
  • 여러 이미지: 단일 요청에 여러 이미지를 포함할 수 있습니다(claude.ai의 경우 최대 5개, API 요청의 경우 최대 20개). Claude는 응답을 작성할 때 제공된 모든 이미지를 분석합니다. 이는 이미지를 비교하거나 대조하는 데 도움이 될 수 있습니다.

자세한 내용과 지침은 제한 사항을 참조하세요.


프롬프팅 팁

Claude와의 텍스트 기반 상호 작용에 잘 작동하는 많은 프롬프팅 기술은 이미지 기반 프롬프트에도 적용할 수 있습니다. 이미지 처리 기술과 사용 사례에 대한 연습과 함께 프롬프팅 기술 및 전략을 안내하는 멀티모달 쿡북을 참조하세요.

아래는 이미지와 관련된 몇 가지 예제 모범 사례 프롬프트 구조입니다. 일반적으로 이미지에 대한 질문이나 이미지를 사용하는 작업에 대한 지침보다 프롬프트의 앞부분에 이미지를 배치하는 것이 가장 좋습니다. 여러 이미지가 있는 상황에서는 각 이미지를 Image 1:Image 2: 등으로 소개하는 것이 좋습니다. 이미지 사이 또는 이미지와 프롬프트 사이에 줄 바꿈이 필요하지 않습니다.

1. 예제: 하나의 이미지

다음은 프롬프트 구조입니다:

역할내용
User[Image] 이 이미지를 설명해 주세요.

다음은 해당 API 호출입니다:

Python
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "이 이미지를 설명해 주세요."
                }
            ],
        }
    ],
)

2. 예제: 여러 이미지

다음은 프롬프트 구조입니다:

역할내용
UserImage 1: [Image 1] Image 2: [Image 2] 이 이미지들은 어떻게 다른가요?

다음은 해당 API 호출입니다:

Python
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Image 1:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "Image 2:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image2_media_type,
                        "data": image2_data,
                    },
                },
                {
                    "type": "text",
                    "text": "이 이미지들은 어떻게 다른가요?"
                }
            ],
        }
    ],
)

3. 예제: 시스템 프롬프트가 있는 여러 이미지

다음은 프롬프트 구조입니다:

내용
System스페인어로만 응답하세요.
UserImage 1: [Image 1] Image 2: [Image 2] 이 이미지들은 어떻게 다른가요?

다음은 해당 API 호출입니다:

Python
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    system="스페인어로만 응답하세요.",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Image 1:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image1_media_type,
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "Image 2:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image2_media_type,
                        "data": image2_data,
                    },
                },
                {
                    "type": "text",
                    "text": "이 이미지들은 어떻게 다른가요?"
                }
            ],
        }
    ],
)

4. 예제: 두 대화 턴에 걸친 네 개의 이미지

Claude의 비전 기능은 이미지와 텍스트를 모두 혼합하는 멀티모달 대화에서 진가를 발휘합니다. Claude와 확장된 양방향 교환을 수행하고 언제든지 새 이미지나 후속 질문을 추가할 수 있습니다. 이를 통해 반복적인 이미지 분석, 비교 또는 시각적 요소와 다른 지식을 결합하는 강력한 워크플로를 사용할 수 있습니다.

다음은 예제 프롬프트 구조입니다:

역할내용
UserImage 1: [Image 1] Image 2: [Image 2] 이 이미지들은 어떻게 다른가요?
Assistant[Claude의 응답]
UserImage 1: [Image 3] Image 2: [Image 4] 이 이미지들은 처음 두 이미지와 비슷한가요?
Assistant[Claude의 응답]

API를 사용할 때는 표준 다중 턴 대화 구조의 일부로 user 역할의 Messages 배열에 새 이미지를 삽입하기만 하면 됩니다.


이미지 비용

Claude에 대한 요청에 포함하는 각 이미지는 토큰 사용량에 포함됩니다. 대략적인 비용을 계산하려면 이미지 토큰의 대략적인 수에 사용 중인 모델의 토큰당 가격을 곱하세요. 모델 가격 세부 정보는 가격 페이지에서 확인할 수 있습니다.

이미지 크기를 조정할 필요가 없다고 가정하면 다음과 같은 간단한 알고리즘을 통해 사용된 토큰 수를 추정할 수 있습니다:

tokens = (width px * height px)/750

다음은 API의 크기 제약 조건 내에서 다양한 이미지 크기에 대한 대략적인 토큰화 및 비용의 몇 가지 예입니다(Claude 3 Sonnet을 백만 입력 토큰당 $3로 사용한다고 가정):

이미지 크기토큰 수이미지당 비용1K 이미지당 비용
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의 이미지 이해 기능은 최첨단이지만 알아두어야 할 몇 가지 제한 사항이 있습니다:

  • 사람 식별: Claude는 이미지에서 사람을 식별(즉, 이름 지정)하는 데 사용할 수 없으며 이를 거부합니다.
  • 정확성: Claude는 품질이 낮거나 회전되었거나 200픽셀 미만의 매우 작은 이미지를 해석할 때 환각을 보거나 실수를 할 수 있습니다.
  • 공간 추론: Claude의 공간 추론 능력은 제한적입니다. 아날로그 시계 면을 읽거나 체스 말의 정확한 위치를 설명하는 것과 같이 정밀한 위치 파악이나 레이아웃이 필요한 작업에 어려움을 겪을 수 있습니다.
  • 계수: Claude는 이미지에서 객체의 대략적인 수를 제공할 수 있지만, 특히 많은 수의 작은 객체가 있는 경우 항상 정확하지는 않을 수 있습니다.
  • AI 생성 이미지: Claude는 이미지가 AI에 의해 생성되었는지 알지 못하며 물어보면 잘못된 대답을 할 수 있습니다. 가짜 또는 합성 이미지를 감지하는 데 의존하지 마세요.
  • 부적절한 콘텐츠: Claude는 이용 약관을 위반하는 부적절하거나 노골적인 이미지를 처리하지 않습니다.
  • 의료 응용 프로그램: Claude는 일반적인 의료 이미지를 분석할 수 있지만 CT나 MRI와 같은 복잡한 진단 스캔을 해석하도록 설계되지 않았습니다. Claude의 출력은 전문적인 의료 조언이나 진단을 대신할 수 없습니다.

특히 중요한 사용 사례의 경우 Claude의 이미지 해석을 항상 주의 깊게 검토하고 확인하세요. 인간의 감독 없이 완벽한 정밀도나 민감한 이미지 분석이 필요한 작업에 Claude를 사용하지 마세요.


FAQ

Claude는 어떤 이미지 파일 형식을 지원하나요?

Claude는 현재 JPEG, PNG, GIF 및 WebP 이미지 형식, 특히 image/jpeg, image/png, image/gifimage/webp를 지원합니다.

Claude는 이미지 URL을 읽을 수 있나요?

Claude는 claude.ai를 포함한 어떤 인터페이스에서도 이미지 URL을 읽을 수 없습니다. 현재 API는 text 또는 image 블록에 URL을 추가하는 것을 지원하지 않습니다. text 블록에 이미지 URL(또는 모든 종류의 URL)을 추가하면 Claude가 현재 해당 URL에서 정보를 검색할 수 없기 때문에 Claude가 환각을 일으킬 수 있습니다.

업로드할 수 있는 이미지 파일 크기에 제한이 있나요?

예, 허용되는 최대 이미지 파일 크기는 이미지당 5MB입니다(claude.ai에서는 이미지당 10MB). 5MB보다 큰 이미지는 거부되고 API 사용 시 오류를 반환합니다.

하나의 요청에 몇 개의 이미지를 포함할 수 있나요?

Messages API를 통해 단일 요청에 최대 20개의 이미지를 포함할 수 있습니다. claude.ai에서는 턴당 최대 5개의 이미지를 포함할 수 있습니다. 해당 제한을 초과하는 이미지 수는 거부되고 API 사용 시 오류를 반환합니다.

Claude는 이미지 메타데이터를 읽나요?

아니요, Claude는 전달된 이미지의 메타데이터를 구문 분석하거나 수신하지 않습니다.

업로드한 이미지를 삭제할 수 있나요?

아니요. 또한 이미지 업로드는 임시적이며 API 요청 기간 이상 저장되지 않습니다. 업로드된 이미지는 처리된 후 자동으로 삭제됩니다.

이미지 업로드에 대한 데이터 개인 정보 보호 및 보안에 대한 자세한 내용은 어디에서 찾을 수 있나요?

업로드된 이미지 및 기타 데이터 처리 방법에 대한 정보는 개인정보 처리방침 페이지를 참조하세요. 업로드된 이미지를 사용하여 모델을 훈련시키지 않습니다.

Claude의 이미지 해석이 잘못된 것 같으면 어떻게 해야 하나요?

Claude에서 잘못된 것으로 보이는 이미지 해석을 받은 경우 먼저 이미지가 선명하고 고품질이며 올바르게 방향이 지정되었는지 다시 확인하세요. 문제가 지속되면 프롬프트 엔지니어링 기술을 사용하여 결과를 개선해 보세요. 문제를 해결할 수 없는 경우 claude.ai에서 직접 엄지손가락 위/아래 인터페이스를 통해 우려되는 출력을 플래그로 표시하거나 지원팀에 문의하여 알려주세요. 여러분의 의견은 저희가 개선하는 데 도움이 됩니다!

Claude는 이미지를 생성, 제작, 편집, 조작 또는 생성할 수 있나요?

아니요, Claude는 이미지 이해 모델일 뿐입니다. 이미지를 해석하고 분석할 수 있지만 이미지를 생성, 제작, 편집, 조작 또는 생성할 수는 없습니다.


비전에 대해 더 깊이 알아보기

Claude를 사용하여 이미지로 구축할 준비가 되셨나요? 다음은 몇 가지 유용한 리소스입니다:

다른 질문이 있는 경우 언제든지 지원팀에 문의하세요. Anthropic 전문가로부터 도움을 받고 다른 제작자와 연결하려면 개발자 커뮤니티에 가입할 수도 있습니다.

Claude의 강력한 새로운 비전 기능으로 여러분이 무엇을 만들어낼지 기대됩니다!