AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

LLM 비전 튜토리얼 – API 요청에 이미지 URL·Base64를 넣는 법

비전 기능이 있는 LLM에는 텍스트 문자열 하나 대신, 텍스트와 image_url 객체를 담은 content 배열을 보낸다. 이 형식은 스크린샷 분석, 영수증 OCR, 차트 질의처럼 이미지와 질문을 함께 처리할 때의 공통 출발점이다.

가장 작은 요청 형식

OpenAI 호환 Chat Completions API의 메시지는 다음처럼 구성한다. 모델명과 엔드포인트만 제공사에 맞게 바꾸면 된다.

{
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "영수증의 합계를 알려줘."},
      {"type": "image_url", "image_url": {"url": "https://example.com/receipt.jpg"}}
    ]
  }]
}

URL과 Base64 중 선택하기

이미지 위치권장 방식이유
공개 CDN·접근 가능한 서명 URLHTTPS URL요청이 작고 공급자가 이미지를 가져간다
로컬 파일·내부 문서Base64 data URL별도 공개 URL이 필요 없다
만료 가능성이 큰 URLBase64 또는 수명 관리모델이 이미지를 읽기 전에 URL 접근이 실패할 수 있다
import base64

with open("receipt.jpg", "rb") as f:
    data_url = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()

Base64는 페이로드를 키우므로 큰 파일을 무작정 넣기보다, 질문에 필요한 부분을 자르거나 해상도를 조정한다. 다만 작은 글자·차트·UI는 과도한 축소로 정보가 사라질 수 있다.

여러 이미지와 문서 RAG

여러 페이지는 image part를 여러 개 넣을 수 있지만 이미지 수와 토큰 비용은 모델별로 다르다. 긴 문서 검색에서는 (1) 이미지 내용을 텍스트로 요약해 텍스트 임베딩으로 찾거나, (2) 멀티모달 임베딩으로 이미지와 텍스트를 함께 색인한 뒤, 검색된 텍스트와 원본 이미지를 비전 모델에 전달한다. 실제 영수증·의료·신분증 데이터는 API 전송, 보관, 접근 권한 정책을 먼저 검토해야 한다.

관련 문서

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)