이미지와 비전

이미지와 비전 (Images and vision)

최근의 언어 모델은 이미지 입력을 처리하고 분석할 수 있어요. 이 능력을 **비전(vision)**이라고 해요. GPT Image 모델은 텍스트와 이미지 입력으로 새 이미지를 만들거나 기존 이미지를 편집할 수 있어요.

출처: 문서

본문

이미지를 분석할지 생성할지에 따라 엔드포인트를 선택하세요.

API 지원되는 사용 사례
Responses API 이미지 분석, 또는 image generation 도구로 이미지 생성·편집
Images API 이미지를 출력으로 생성(선택적으로 이미지를 입력으로 사용)
Chat Completions API 이미지 분석과 텍스트 응답 생성

우리 모델이 지원하는 입력·출력 모달리티는 모델 페이지를 참고하세요.

이미지 생성 또는 편집

Images API에서는 gpt-image-2.5-sunburst를 선택해 텍스트로 이미지를 생성하거나 기존 이미지를 편집할 수 있어요. Responses API에서는 image generation 도구를 지원하는 주류 모델을 선택하면, 도구가 GPT Image 모델 선택을 처리해요.

Responses로 이미지 생성:

from openai import OpenAI
import base64

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input="Generate an image of gray tabby cat hugging an otter with an orange scarf",
    tools=[{"type": "image_generation"}],
)

# Save the image to a file
image_data = [
    output.result
    for output in response.output
    if output.type == "image_generation_call"
]

if image_data:
    image_base64 = image_data[0]
    with open("cat_and_otter.png", "wb") as f:
        f.write(base64.b64decode(image_base64))

(JavaScript, Go, Java, C#, Ruby, CLI 예시도 image_generation 도구를 쓰고 image_generation_call 출력에서 result를 추출해 파일로 저장하는 같은 패턴입니다.)

이미지 생성에 대해 더 배우려면 Image generation 가이드를 확인하세요.

이미지 생성을 위한 세계 지식 사용

GPT Image 모델은 참조 이미지 없이 세계 지식으로 작업할 수 있어요. 예를 들어 준보석(semi-precious stones) 캐비닛 프롬프트는 자수정, 로즈쿼츠, 옥 같은 알아볼 수 있는 보석이 있는 장면을 만들 수 있어요.

이미지 분석

비전 지원 모델로 이미지를 설명하고, 보이는 텍스트를 읽고, 객체·모양·색·질감에 대한 질문에 답할 수 있어요. 답을 쓸 때는 모델의 제한 사항을 고려하세요.

모델에 이미지를 입력으로 주기

이미지를 다음 중 한 가지 방식으로 분석용으로 제공할 수 있어요.

  • 이미지 파일의 완전한 URL 제공
  • 이미지를 Base64 인코딩 data URL로 제공
  • 파일 ID 제공(Files API로 생성)

content 배열에 여러 이미지를 포함해 단일 요청에서 여러 이미지를 입력으로 제공할 수 있지만, 이미지가 토큰으로 계산되어 그에 따라 청구된다는 점을 기억하세요.

URL 전달:

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "what's in this image?"},
                {
                    "type": "input_image",
                    "image_url": "https://api.nga.gov/iiif/a2e6da57-3cd1-4235-b20e-95dcaefed6c8/full/!800,800/0/default.jpg",
                },
            ],
        }
    ],
)

print(response.output_text)

(JavaScript, Go, Java, C#, Ruby, curl, CLI 예시도 input_image 항목에 image_url을 전달하는 같은 패턴입니다.)

Base64 인코딩 이미지 전달:

import base64
from openai import OpenAI

client = OpenAI()


# Function to encode the image
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")


# Path to your image
image_path = "path_to_your_image.jpg"

# Getting the Base64 string
base64_image = encode_image(image_path)


response = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "what's in this image?"},
                {
                    "type": "input_image",
                    "image_url": f"data:image/jpeg;base64,{base64_image}",
                },
            ],
        }
    ],
)

print(response.output_text)

파일 ID 전달:

from openai import OpenAI

client = OpenAI()


# Function to create a file with the Files API
def create_file(file_path):
    with open(file_path, "rb") as file_content:
        result = client.files.create(
            file=file_content,
            purpose="vision",
        )
        return result.id


# Getting the file ID
file_id = create_file("path_to_your_image.jpg")

response = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "what's in this image?"},
                {
                    "type": "input_image",
                    "file_id": file_id,
                },
            ],
        }
    ],
)

print(response.output_text)

(각 언어 예시의 전체 코드는 원문을 참고하세요.)

이미지 입력 요구사항

모델이 분석할 수 있을 만큼 선명한 지원 이미지 파일을 사용하세요.

요구사항 지원되는 입력
파일 유형 PNG (.png), JPEG (.jpeg or .jpg), WEBP (.webp), non-animated GIF (.gif)
요청 크기 요청당 최대 512 MB 총 페이로드
이미지 수 요청당 최대 1,500개 이미지

패치 기반 이미지 입력의 경우 API는 선택한 모델과 detail 수준의 리사이징 규칙을 적용한 뒤 이미지당 최대 30,000개 패치를 지원해요. 이 한도는 지원되는 detail 수준 전체에 걸쳐 각 이미지에 개별적으로 적용되며, 요청의 결합 패치 수에는 적용되지 않아요.

모델·detail별 낮은 리사이징 예산은 여전히 적용돼요. 처리 후 30,000 패치 한도를 초과하는 이미지는 거부되며, 그 한도에 맞게 자동 리사이즈되지 않아요. 이미지 크기를 줄이고 다시 시도하세요.

이미지 토큰과 나머지 프롬프트도 모델의 입력·컨텍스트 한도에 맞아야 해요. 토큰 추정이 요청이 모든 입력 한도를 충족한다는 것을 보장하지는 않아요. 이미지 사용은 우리의 사용 정책을 준수해야 해요.

이미지 detail 수준 선택

detail 파라미터는 이미지 전처리를 제어해요. 지원되는 값은 모델에 따라 low, high, original, auto예요. 파라미터를 생략하면 Responses API와 Chat Completions API 모두에서 auto로 기본 설정돼요. 모델 크기 조정 표가 해당 동작을 보여줘요.

detail 수준을 고르는 지침:

Detail 수준 가장 적합한 용도
low 거친 이미지 이해. 리사이징·토큰 사용은 모델에 따라 달라지며, low가 항상 high보다 토큰을 적게 쓰지는 않아요.
high 정확한 원본 이미지 좌표가 필요하지 않을 때의 표준 고충실도 이미지 이해.
original 모델이 지원할 때 크고 밀집된, 공간에 민감한, 또는 computer-use 이미지.
auto 모델 크기 조정 표에 표시된 모델 기본 크기 조정 동작 사용.

광학 문자 인식(OCR), 소형 객체 감지, computer use처럼 미세한 시각 디테일이나 정확한 좌표가 필요한 작업에서는 지원될 때 "detail": "original"을 쓰세요. Original detail도 이미지의 픽셀 차원 한도나 리사이징 패치 예산에 맞게 리사이즈할 수 있지만, 별도의 30,000 패치 거부 한도에는 맞추지 않아요. 좌표에 민감한 작업에서는 그 한도에 맞게 이미지를 리사이즈해 보내고, 반환된 좌표를 원본 이미지에 매핑하세요. 좌표 처리는 Computer use 가이드를 참고하세요.

모델 크기 조정 동작

다음 표는 범용 비전 모델의 크기 조정 동작을 요약해요. 다른 모델과 특수 변형은 다른 한도를 쓸 수 있어요. 모든 리사이징은 작은 이미지를 키우지 않으면서 종횡비를 보존해요.

모델 계열 지원되는 detail 수준 패치·리사이징 동작
gpt-6-astra low, high, original, auto low는 512 × 512 픽셀 안에 맞음. high는 최대 2,500 패치와 65,535 픽셀 최대 차원 허용. 두 한도 모두 적용. original은 이미지 차원을 보존하되, 어느 면이든 65,535 픽셀보다 큰 이미지는 그 한도에 맞게 축소. 결과 이미지가 30,000 패치를 초과하면 API가 요청을 거부하며 패치 한도에 맞게 리사이즈하지 않음. auto는 original과 같은 크기 조정 동작.
gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna low, high, original, auto low는 512 × 512 안에, high는 2048 × 2048과 2,500 패치 안에 맞음. original은 차원 보존하되 어느 면 65,535 픽셀 초과 시 축소. 결과가 30,000 패치 초과 시 거부. auto는 original과 동일.
gpt-5.5 low, high, original, auto low는 512 × 512 안에, high는 2,500 패치와 2048 픽셀 최대 차원. original은 10,000 패치와 6000 픽셀 최대 차원. auto는 original과 동일.
gpt-5.4, gpt-5.4-mini, gpt-5.4-nano low, high, original, auto low는 2048 픽셀 최대 차원과 6,144 패치 예산 사용(따라서 high보다 토큰을 많이 쓸 수 있음). high는 2,500 패치와 2048 픽셀. original은 10,000 패치와 6000 픽셀. auto는 high와 동일.
gpt-5.2, gpt-4.1-mini low, high, auto 이 detail 수준은 같은 크기 조정 한도(2048 픽셀 최대 차원, 6,144 패치 예산)를 사용. original 지원 안 함.
gpt-5.1, gpt-4.1, gpt-4o, gpt-4o-mini low, high, auto low는 고정 토큰 수 사용. high와 auto는 타일 기반 크기 조정 규칙 사용.

비용 계산

비전 모델은 이미지 입력을 청구 가능한 입력 토큰으로 변환해요. 이미지 입력 비용 계산기와 이 섹션의 패치·타일 규칙은 비전 모델 입력을 다루며, GPT Image 생성·편집은 다루지 않아요. 그 별도 가격은 GPT Image 모델 입력을 참고하세요.

이미지 토큰은 분당 토큰(TPM) 한도에도 계산돼요. 계산기는 표준 입력 요율로 이미지 하나를 추정하며, 나머지 프롬프트나 모델 출력은 포함하지 않아요.

이미지 입력 비용 계산기

이미지 입력 비용 계산기로 모델·이미지 크기·detail 수준별로 이미지 하나의 입력 토큰과 비용을 추정하세요.

패치 기반 이미지 토큰화

일부 모델은 이미지를 32px × 32px 패치로 덮어 토큰화해요. 많은 모델·detail 조합이 리사이징 패치 예산을 정의해요. 먼저 API가 선택한 detail 수준의 픽셀 차원 한도 안에 이미지를 맞추는데, 종횡비를 보존하고 정수 픽셀로 반올림하며 작은 이미지는 키우지 않아요. 토큰 비용은 이렇게 결정돼요.

A. 픽셀 차원 한도 적용 후 이미지를 덮는 데 필요한 32px × 32px 패치 수를 계산해요. 패치는 이미지 경계를 넘어 확장될 수 있어요.

patch_count = ceil(width/32)×ceil(height/32)

B. 선택한 모델·detail 수준이 리사이징 패치 예산을 지정하면, 이미지가 그 예산을 초과할 때 비례적으로 축소해요. 아니면 이 단계를 건너뜁니다. 정수 픽셀 차원으로 변환하고 패치 적용을 계산한 후 예산 안에 머물도록 축소 배율을 조정하세요. 최종 차원을 계산할 때까지 전체 정밀도를 유지해요.

shrink_factor = sqrt((32^2 * patch_budget) / (width * height))
adjusted_shrink_factor = shrink_factor * min(
  floor(width * shrink_factor / 32) / (width * shrink_factor / 32),
  floor(height * shrink_factor / 32) / (height * shrink_factor / 32)
)

C. B 단계가 이미지를 축소했다면 최종 축소 폭·높이를 정수 픽셀로 내림해요. 결과 이미지를 덮는 패치를 계산해요. 이것이 모델 배율 적용 전의 이미지 토큰 수예요. 패치 예산이 적용되면 이 수는 그 예산 안에 머물러요.

resized_patch_count = ceil(resized_width/32)×ceil(resized_height/32)

이 수가 30,000 패치를 초과하면 API가 요청을 거부해요. 토큰 배율을 적용하기 전에 이 한도를 확인하세요.

D. 패치 수에 모델 배율을 곱하고 올림해 청구 가능한 이미지 입력 토큰을 구해요. 그 토큰에 모델 입력 가격을 한 번 적용하세요. 배율은 다른 프롬프트 토큰이나 가격에 다시 적용되지 않아요.

모델 배율
gpt-6-astra 1.2
gpt-5.6-sol 1.2
gpt-5.6-terra 1.2
gpt-5.6-luna 1.2
gpt-5.5 1.2
gpt-5.4 1.2
gpt-5.4-mini 1.2
gpt-5.4-nano 1.2
gpt-5.2 1.2
gpt-4.1-mini 1.62
o4-mini* 1.72

gpt-4.1-mini는 2025-04-14 스냅샷에 적용됩니다.

* 폐지 및 종료 예정. 날짜와 대체 모델은 폐지 일정 참고. 이 모델들은 계산기나 위 모델 크기 조정 표에 포함되지 않아요.

gpt-6-astra, detail: high의 이미지 토큰 계산 예시

이 조합은 65,535 픽셀 최대 차원, 2,500 패치 예산, 1.2× 배율을 사용해요.

  • 1024 × 1024 이미지는 32 × 32 = 1024 패치 필요. 리사이징 불필요. 청구 가능한 이미지 입력은 ceil(1024 × 1.2) = 1229 토큰.
  • 2048 × 2048 이미지는 처음에 64 × 64 = 4096 패치 필요. 패치 예산이 1600 × 1600 픽셀(즉 50 × 50 = 2500 패치)로 줄여요. 추정치는 ceil(2500 × 1.2) = 3000 토큰.
  • 4096 × 512 이미지는 원래 크기 유지: 128 × 16 = 2048 패치와 ceil(2048 × 1.2) = 2458 토큰.

청구의 부동소수점 반올림으로 최종 수가 추정치와 한 토큰 다를 수 있어요.

타일 기반 이미지 토큰화

이 표의 모델은 기본 토큰 수에 이미지 타일 수의 토큰을 더해요.

모델 기본 토큰 타일 토큰
gpt-5.1 70 140
gpt-5* 70 140
gpt-4o, gpt-4.1 85 170
gpt-4o-mini 2833 5667
o1, o1-pro, o3* 75 150

* 폐지 및 종료 예정. 날짜와 대체 모델은 폐지 일정 참고.

"detail": "low"에서는 차원과 무관하게 이미지가 모델의 기본 토큰만 비용이 들어요. "detail": "high"나 "detail": "auto"에서는.

  • 종횡비를 유지하며 2048px × 2048px 정사각형에 들어가도록 축소. 작은 이미지는 키우지 않음.
  • 가장 짧은 면이 768px를 초과하면 768px로 축소하고 다른 차원을 내림.
  • 이미지를 덮는 데 필요한 512px 정사각형 수를 셈. 각 정사각형이 모델의 타일 토큰을 사용.
  • 모델의 기본 토큰을 타일 토큰에 더함.

GPT Image 모델 입력

GPT Image 모델은 생성·편집에 별도의 이미지 토큰 가격을 사용해요. 비전 계산기는 그 입력·출력 비용을 추정하지 않아요. 현재 요율은 image generation 가격을, 생성·편집 워크플로는 Image generation 가이드를 참고하세요.

GPT Image 1

다음 입력 토큰 규칙은 gpt-image-1에 적용돼요. 타일 기반 이미지 크기 조정을 쓰되, 768px 대신 가장 짧은 면을 512px로 축소해요. 토큰 사용은 이미지 차원과 Images API의 input_fidelity 파라미터에 따라 달라져요.

입력 충실도가 low면 기본 비용은 65 이미지 토큰이고 각 타일은 129 이미지 토큰이에요. high 입력 충실도에서는 위에서 설명한 이미지 토큰에 더해 이미지의 종횡비에 따라 정해진 수의 토큰을 추가해요.

  • 이미지가 정사각형이면 4160개의 추가 입력 이미지 토큰을 더해요.
  • 세로·가로에 가까우면 6240개의 추가 토큰을 더해요.

이미지 입력 토큰 가격은 image pricing 섹션을 참고하세요.

제한 사항

비전 모델은 실수할 수 있어요. 애플리케이션을 설계할 때 이 제한 사항을 고려하세요.

  • 의료 이미지: 이 모델은 CT 스캔 같은 전문 의료 이미지 해석에 적합하지 않으며 의료 조언에 쓰면 안 돼요.
  • 비영어: 일본어·한국어 같은 비라틴 알파벳 텍스트가 있는 이미지를 처리할 때 모델 성능이 최적이 아닐 수 있어요.
  • 작은 텍스트: 가독성을 높이기 위해 이미지 안의 텍스트를 키우세요. 가능하면 "detail": "original"을 쓰는 것도 성능에 도움이 될 수 있어요.
  • 회전: 모델이 회전되거나 거꾸로 된 텍스트·이미지를 잘못 해석할 수 있어요.
  • 시각 요소: 실선·점선·파선처럼 색이나 스타일이 다양한 그래프나 텍스트를 이해하는 데 어려움을 겪을 수 있어요.
  • 공간 추론: 체스 위치 식별처럼 정밀한 공간 로컬라이제이션이 필요한 작업에 어려움을 겪어요.
  • 정확성: 특정 시나리오에서 부정확한 설명이나 캡션을 생성할 수 있어요.
  • 이미지 형태: 파노라마와 어안(fisheye) 이미지에 어려움을 겪어요.
  • 메타데이터와 리사이징: 모델은 원래 파일 이름이나 메타데이터를 처리하지 않아요. original detail 포함해 분석 전에 이미지가 리사이즈될 수 있어요. 각 모델에 적용되는 한도는 모델 크기 조정 동작을 참고하세요.
  • 계수: 모델이 이미지의 객체 수를 대략적으로 줄 수 있어요.
  • CAPTCHA: 안전상의 이유로 우리 시스템은 CAPTCHA 제출을 차단해요.

더 알아보기 (Learn more)

관련 문서: Image generation, Image prompting, 이미지 입력 비용 계산기 가이드를 함께 보면 좋아요.