Vision
メッセージに画像を入れて、マルチモーダルモデルで分析します。
ビジョン(画像入力)は別のエンドポイントではなく、 /v1/chat/completions のメッセージ内部で動作します。画像はトップレベルの パラメータではなく、messages[].content をコンテンツパートの配列として構成し、その中に入れます。ルーティングされたモデルがビジョンに対応していればそのまま使え、 別途の有効化フラグはありません。
リクエスト#
content を文字列ではなくパートの配列に置き換えます。利用できるパートタイプは、 テキスト用の {"type": "text", "text": "..."} と画像用の {"type": "image_url", "image_url": {"url": "..."}} の 2 種類です。
url には公開の https 画像 URL を指定できます。OpenAI ・ Google のモデルはネイティブにそのまま渡され、Anthropic(Claude)モデルにルーティングされた場合は ルーターが自動的に変換します。
curl https://apirouter.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": 1525.0,
"markup_rate": 0.0
}
}"cache_control": {"type": "ephemeral"} を付けることは、 Anthropic(Claude)にのみ影響します(明示的キャッシング)。OpenAI・Gemini・DeepSeek は自動キャッシュされ、このマーカーを無視します。