Vision
메시지에 이미지를 넣어 멀티모달 모델로 분석합니다.
비전(이미지 입력)은 별도의 엔드포인트가 아니라 /v1/chat/completions의 메시지 안에서 동작합니다. 이미지는 최상위 파라미터가 아니라 messages[].content를 콘텐츠 파트 배열로 구성해 그 안에 넣습니다. 라우팅된 모델이 비전을 지원하면 그대로 사용할 수 있으며, 별도의 활성화 플래그는 없습니다.
요청#
content를 문자열 대신 파트 배열로 바꾸세요. 사용 가능한 파트 타입은 텍스트용 {"type": "text", "text": "..."}와 이미지용 {"type": "image_url", "image_url": {"url": "..."}} 두 가지입니다.
url에는 공개 https 이미지 URL을 넣을 수 있습니다. OpenAI · Google 모델은 네이티브로 그대로 전달되고, Anthropic(Claude) 모델로 라우팅되면 라우터가 자동으로 변환해 줍니다.
curl https://router.pleum.ai/v1/chat/completions \
-H "Authorization: Bearer $PLEUM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/photo.png"
}
}
]
}
]
}'외부 URL 대신 base64 데이터 URL(data:image/png;base64,...)로 이미지를 인라인으로 보낼 수도 있습니다. PNG · JPEG · WebP · GIF 등 일반적인 형식을 지원합니다.
{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this diagram."},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
}
]
}
]
}모델별 지원 여부#
비전은 라우팅된 모델이 이미지 입력을 지원하는 경우에만 동작합니다. 현재 GET /v1/models 응답으로는 모델별 비전 지원 여부를 구분할 수 없으니, 각 제공사의 모델 문서에서 확인하세요. 비전을 지원하지 않는 모델에 이미지를 보내면 오류가 반환됩니다.
응답#
응답은 일반 채팅 완성과 동일한 형식입니다. 이미지는 모델에서 입력 토큰으로 계산되어 usage.prompt_tokens에 합산되고, 비용은 cost에 반영됩니다.
{
"id": "chatcmpl-gpt-4o-1204ms",
"object": "chat.completion",
"model": "gpt-4o",
"provider": "openai",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The image shows a red bicycle leaning against a brick wall."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1124,
"completion_tokens": 16,
"total_tokens": 1140
},
"cost": {
"usd": 0.003012,
"krw": 5,
"fx_rate": 1390.5,
"markup_rate": 0.0
}
}"cache_control": {"type": "ephemeral"}를 붙이는 것은Anthropic(Claude)에만 영향을 줍니다(명시적 캐싱). OpenAI · Gemini · DeepSeek은 자동 캐싱되며 이 마커를 무시합니다.