AI・機械学習
DeepSeek-v4-flash-vision-exp
DeepSeek-v4-flash-vision-exp (api-docs.deepseek.com)
要約
DeepSeek-v4-flash-vision-expモデルは、画像とテキストを同時に受け付け、画像の説明、スクリーンショットからのテキスト読み取り、グラフ分析などが可能です。画像はBase64エンコード、外部URL、またはFiles API経由で送信でき、それぞれに制限事項があります。画像のトークン使用量は、リサイズ後のピクセル数に基づいて計算されます。
全文翻訳
このページについて
ビジョン
DeepSeek-v4-flash-vision-expモデルは、画像とテキストを同時に受け付けるため、モデルに写真の説明を求めたり、スクリーンショットからテキストを読み取ったり、グラフを分析したりすることができます。
サポートされている画像フォーマット: JPEG、PNG、GIF、WebP。
フォーマットは、ファイル名や宣言されたMIMEタイプではなく、実際のファイルコンテンツから検出されます。
画像の送信
モデルに画像を提供する方法は3つあります。いずれも標準的なOpenAI互換のChat Completionsフォーマットを使用しており、contentはプレーンな文字列ではなくブロックの配列になります。同じ3つの方法がResponses APIでも利用可能で、画像はinput_imageコンテンツパートで渡されます。
以下の例のbase_urlはhttps://api.deepseek.comです。
1. Base64エンコードされた画像(インライン)
画像をエンコードし、data: URLとしてリクエストに直接埋め込みます。ローカルファイルの場合、これが最も簡単なオプションです。
エンコードされたデータは、48 MiBのリクエストボディ制限(Limitsを参照)に含まれます。
import base64
from openai import OpenAI
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")
with open("image.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{b64}"},
},
],
}
],
)
print(response.choices[0].message.content)
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <DeepSeek API Key>" \
-d '{
"model": "deepseek-v4-flash-vision-exp",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64_DATA>"}}
]
}
]
}'
2. 外部画像URL
公開されているhttp(s)リンクを渡すと、モデルが画像をダウンロードします。
URLは最大8192文字、画像ファイルは最大32 MiB、ダウンロードは60秒以内に完了する必要があります。リンクがそれより長い場合は、base64データURLまたはFiles APIを使用してください。
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image."},
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg"},
},
],
}
],
)
print(response.choices[0].message.content)
3. Files API経由でアップロードしたファイルを参照
画像をFiles APIで一度アップロードし、そのfile_idをリクエストで参照します。同じ画像を複数のリクエストで使用する場合や、画像が48 MiBのインライン制限を超える場合に最適なオプションです。
インライン画像とは異なり、Files APIのfile_idで参照される画像は最大64 MiBまで可能で、32 MiBの画像ごとのチェックの対象外です。
返されたfile_id(file-api-...の形式)を持つファイルコンテンツブロックを使用します。
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "file", "file_id": "file-api-xxxxxxxxxxxxxxxx"},
],
}
],
)
print(response.choices[0].message.content)
または、fileブロックはfile_idの代わりにfile_dataを介して画像をインラインでbase64で渡すことができます(両者は相互に排他的です)。
{
"type": "file",
"file_data": "data:image/jpeg;base64,<BASE64_DATA>",
"filename": "image.jpg"
}
詳細レベル
image_url入力では、オプションでdetailフィールドを設定して、画像の処理方法を制御できます。
値
動作
low
推論前に画像を512×512にダウンサイジングします。視覚的な詳細が重要でない場合に、より高速で安価です。
high
元の画像を保持します。(互換性のために提供されており、originalと同等です。)
original
元の画像を保持します。
auto
自動選択。現在はoriginalと同等です。
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg", "detail": "low"}
}
Files APIの使用時期
インライン画像(base64またはfile_data)は、48 MiBのリクエストボディサイズ制限に含まれます。Files APIを検討するのは、以下の場合です。
単一のリクエストがボディサイズ制限を超える場合。
画像が32 MiBより大きい場合(これはFiles APIでのみ可能です)。
同じ画像を複数のリクエストで参照し、毎回再アップロードするのを避けたい場合。
トークン使用量
画像は次元に基づいてトークンに変換され、これらのトークンはテキストトークンと一緒に課金されます。
推論前に、すべての画像は自動的にリサイズされます。
総ピクセル数が約384×384未満の画像は、アスペクト比を維持しながら拡大されます。
それより大きい画像は、アスペクト比を維持しながらダウンサイジングされ、リサイズ後の総ピクセル数が約800×800になります。
その結果、画像あたりのトークン数には384トークンという上限があります。例えば、2000×2000の画像と5000×5000の画像は、リサイズ後に同じ数のトークンを消費します。
リクエストに複数の画像が含まれる場合、各画像は同じルールで個別にカウントされます。マルチ画像リクエスト用の特別な計算はありません。
特定のサイズの画像のトークンコストを推定するには、トークンとトークン使用量ページにある画像トークン計算機を使用してください。
制限
制限
値
サポートされているフォーマット
JPEG、PNG、GIF、WebP
外部URLの長さ
8192文字
リクエストボディサイズ
48 MiB
単一画像あたりの最大サイズ(base64 / 外部URL)
32 MiB
単一画像あたりの最大サイズ(Files API file_id)
64 MiB
リクエストあたりの最大画像数
600
リクエストあたりの総画像サイズ
file_id画像なしで64 MiB。file_id画像を含むと最大200 MiB
画像あたりの最大次元
各辺8192 px。リクエストに15枚以上の画像が含まれる場合、各辺4096 pxに低下します。
Files APIでアップロードされたファイルのストレージおよびアップロードクォータについては、Files API: Limitsを参照してください。
制限事項
画像はユーザーメッセージでのみサポートされます。システムメッセージまたはアシスタントメッセージでの画像は400エラーを返します。
画像を受け付けるのはビジョンモデル(deepseek-v4-flash-vision-exp)のみです。他のモデルは400エラー(「このモデルは画像に対応していません」)を返します。
予約された画像プレースホルダートークンを含むユーザーテキストは、400エラーで拒否されます。
Anthropic APIでの画像の利用
上記のOpenAI互換エンドポイントに加えて、Anthropic互換の/messagesエンドポイント(base_url = https://api.deepseek.com/anthropic)を通じて画像送信も可能です。一般的な設定については、Anthropic APIを参照してください。
違いは、画像コンテンツブロックの形状です。image_urlの代わりに、Anthropicはsourceオブジェクトを持つimageブロックを使用し、そのtypeはbase64、url、またはfileのいずれかです。
import anthropic
client = anthropic.Anthropic()
# ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
message = client.messages.create(
model="deepseek-v4-flash-vision-exp",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "<BASE64_DATA>",
},
},
],
}
],
)
print(message.content)
3つのソースバリアントは、上記のOpenAIの方法を反映しています。
source.type
同等のOpenAIメソッド
備考
base64
Base64エンコードされた画像
media_typeフィールド(image/jpeg、image/png、image/gif、またはimage/webp)が必要です。
url
外部画像URL
最大8192文字。
file
Files API file_id
ヘッダーanthropic-beta: files-api-2025-04-14が必要です。
Responses APIでの画像の利用
DeepSeek-v4-flash-vision-expモデルは、OpenAI互換のResponses APIを通じて画像を受け付けることもできます。
同じ3つの入力方法(base64データURL、外部http(s) URL、Files API file_id)と制限が適用されます。コンテンツパートの形状のみが異なり、画像はinput_imageパートで渡され、ユーザー/開発者メッセージ内、またはfunction_call_output / custom_tool_call_outputアイテムの出力に含まれます。
response = client.responses.create(
model="deepseek-v4-flash-vision-exp",
input=[
{
"role": "user",
"content": [
{"type": "input_text", "text": "What is in this image?"},
{"type": "input_image", "image_url": "https://example.com/image.jpg", "detail": "low"},
],
}
],
)
print(resp