C.W.K.
Stream
Lesson 01 of 05 · published

Image 보내기 — URL vs base64

~22 min · vision, images, input

Level 0Tokenizer
0 XP0/54 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Vision-capable 모델은 image 를 URL 또는 base64 encoding 으로 받아. Responses API 는 input_image type, Chat Completions 는 image_url. 같은 픽셀 = 같은 cost, transport 차이는 가격에 영향 X.

URL 이 편할 때

이미지가 이미 public host (S3, R2, CDN) 에 있을 때. Request body 가 작아서 wire 부담 적음. URL 만 보내면 모델이 fetch.

Base64 가 편할 때

로컬 dev, private image, 생성된 이미지. base64.b64encode 로 encoding, data:image/jpeg;base64,... URI 로 prefix. Auth 우회 X — image 가 외부 host 안 거치니까.

Detail 옵션

detail: 'low' | 'high' | 'auto'. low 는 flat 85 token, high 는 32×32 patch grid (수백~수천 token), auto 는 모델이 결정. 일반 UI 엔 low 충분, OCR/dense chart 엔 high.

Code

URL 로 image (Responses)·python
response = client.responses.create(
    model="gpt-4.1",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "What is in this image?"},
            {
                "type": "input_image",
                "image_url": "https://example.com/photo.jpg",
                "detail": "high",  # "low", "high", "auto"
            },
        ],
    }],
)
Base64 로 image (Responses)·python
import base64

def encode_image(path: str) -> str:
    with open(path, "rb") as f:
        return base64.b64encode(f.read()).decode("utf-8")

b64 = encode_image("photo.jpg")

response = client.responses.create(
    model="gpt-4.1",
    input=[{
        "role": "user",
        "content": [
            {"type": "input_text", "text": "Describe this image in detail."},
            {"type": "input_image", "image_url": f"data:image/jpeg;base64,{b64}", "detail": "high"},
        ],
    }],
)
Image (Chat Completions shape)·python
completion = client.chat.completions.create(
    model="gpt-4o",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "What's in this image?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/image.jpg", "detail": "auto"}},
        ],
    }],
)

External links

Exercise

같은 이미지를 URL 로 한 번, base64 로 한 번 보내. Token usage 확인 — 동일해야. 그 다음 3MB 이미지를 detail=low vs detail=high 로; cost 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.