
2026/08/21 19:33
DeepSeek-v4-flash-vision-exp
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
deepseek-v4-flash-vision-exp モデルは、チャートの分析やスクリーンショットの読み取りなどのタスクにおいて、テキストと並んで画像入力をサポートすることで、マルチモーダルインタラクションを革新します。標準的な OpenAI 互換 API を通じて統合され、JPEG、PNG、GIF、WebP 形式の画像を受け付けます。これらの画像はメタデータではなくファイル内容から検出されます。画像は Base64(インライン)、公開された URL、または File API リファレンスを介して提供でき、Anthropic 互換および OpenAI Responses API エンドポイントに対してはそれぞれ専用の処理が行われます。パフォーマンスを維持しコストを管理するため、モデルは自動的に画像サイズを変更します(小さなものは拡大、大きなものは縮小)し、画像あたりのトークン使用量を厳格に 384 トークン以内と制限します。URL ベースの入力に対しては、detail パラメータ(low、auto など)を調整することで処理をさらに最適化できますが、この設定は File ID リファレンスの場合は無視されます。厳格な制約に遵守する必要があります:インラインデータの要求ボディは 48 MiB に制限され(File API の画像にはより大きな合計サイズが可能な場合があります)、個々の画像の解像度は 15 枚以上の画像が存在する場合は 8192 ピクセルから 4096 ピクセルに低下し、それを超えないようにします。URL 入力の場合、ダウンロードは 60 秒以内に完了する必要があり、特定のサイズ制限が適用されます(URL を介した画像は 32 MiB が最大、ファイルに対してはより大きなサイズが可能)。なお、ビジョン機能は deepseek-v4-flash-vision-exp に限定され、画像はユーザーメッセージのみで受け付けることに注意してください。本文
DeepSeek-v4-flash-vision-exp モデル:画像処理機能と送信方法の概要
DeepSeek-v4-flash-vision-exp モデルは、画像とテキストを同時に入力可能とするため、画像の説明、スクリーンショットからの文字認識(OCR)、チャート解析など、多様な視覚的タスクに対応できます。
サポートされる画像形式
モデルはファイル名の MIME タイプではなく、実際のファイル内容から画像形式を自動的に判別します。
- サポートされている形式: JPEG, PNG, GIF, WebP
- 基本 API URL:
https://api.deepseek.com
画像の送信方法
モデルに画像を提供するには、標準の OpenAI 互換 Chat Completions フォーマットを使用し、
content フィールドを単一文字列ではなくブロックの配列として提供します。
以下の 3 つの方法から選択できます。
1. Base64 エンコードされた画像(インライン)
ローカルファイルを直接リクエスト本文に埋め込む方法です(データ URL の形式)。
- 特徴: ローカルファイルに対する最もシンプルな選択肢。
- 制限: エンコードされたデータは、リクエスト本文のサイズ制限48 MiBに含まれます。
Python 例
import base64 from openai import OpenAI client = OpenAI(api_key="<DeepSeek API キー>", 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": "この画像には何がありますか?"}, { "type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}, }, ], } ], ) print(response.choices[0].message.content)
cURL 例
curl https://api.deepseek.com/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <DeepSeek API キー>" \ -d '{ "model": "deepseek-v4-flash-vision-exp", "messages": [ { "role": "user", "content": [ {"type": "text", "text": "この画像には何がありますか?"}, {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64_DATA>"}} ] } ] }'
2. 外部の公開 URL を使用する方法
公開されている http(s) リンクを渡し、モデル側で画像をダウンロードします。
- URL の最大長さ: 8,192 キャラクター
- 画像ファイルサイズ: 最大32 MiB
- ダウンロード完了までの時間: 60 秒以内
注意: リンクが上記制限を超える場合は、Base64 データ URL(方法 1)または Files API を使用してください。
Python 例
response = client.chat.completions.create( model="deepseek-v4-flash-vision-exp", messages=[ { "role": "user", "content": [ {"type": "text", "text": "この画像を説明してください。"}, { "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 のサイズ制限を超えた場合も対応可能。
- 容量上限:
で参照される画像は64 MiBまで支持され、チェック対象外となります(Base64/URL は 32 MiB 制限あり)。file_id
Python 例(file_id を使用)
response = client.chat.completions.create( model="deepseek-v4-flash-vision-exp", messages=[ { "role": "user", "content": [ {"type": "text", "text": "この画像には何がありますか?"}, {"type": "file", "file_id": "file-api-xxxxxxxxxxxxxxxx"} ], } ], ) print(response.choices[0].message.content)
JSON 例(file_data を使用)
file_id の代わりに、画像を Base64 形式でインラインに含めることもできます。両者は互いに排他的です。
{ "type": "file", "file_data": "data:image/jpeg;base64,<BASE64_DATA>", "filename": "image.jpg" }
DETAIL レベルの設定
画像の処理詳細度を制御するため、
image_url タイプの入力に対してオプションの detail フィールドを指定できます。
| 値 | 動作 |
|---|---|
| 推論前に画像を512×512に縮小します。詳細さが不要な場合、高速かつ安価です。 |
| オリジナル画像を保持します。(互換性のため提供、 と同等) |
| オリジナル画像を保持します。 |
| 自動的に選択されます。現在は と同等です。 |
設定例:
{ "type": "image_url", "image_url": {"url": "https://example.com/image.jpg", "detail": "low"} }
Files API を使用するべき場合
インライン画像(Base64 または
file_data)は48 MiB のリクエスト本文サイズ制限に含まれます。以下のいずれかに該当する場合、Files API の使用を検討してください。
- 単一のリクエストで48 MiB を超える可能性がある場合
- 画像サイズが 32 MiB より大きい場合(Files API でのみ可能)
- 同じ画像を複数のリクエストで参照したい場合(再アップロード不要のため)
トークン使用量と自動再サイズ処理
画像は解像度に応じてトークンに変換され、テキストトークンと併せて課金されます。推論前に各画像は自動的に再サイズ処理されます。
- 拡大対象: 全画素数が384×384 より小さい画像(アスペクト比を保ったまま)
- 縮小対象: より大きな画像(全画素数を 800×800 の画像と同程度にするため、アスペクト比を保ったまま)
トークン消費の上限
- 1 画像あたりのトークン消費量は最大 384 トークンに上限があります。
- 例:2000×2000 の画像と 5000×5000 の画像も、再サイズ処理後には同じ数のトークンを消費します。
- 複数の画像を含むリクエストでは、各画像について同様のルールを独立して適用し、特別な計算は行われません。
費用試算: 「Token & Token Usage」ページの**「Image token calculator(画像トークン計算機)」**を使用してください。
制限事項一覧
| 制限項目 | 値/備考 |
|---|---|
| サポートされる形式 | JPEG, PNG, GIF, WebP |
| 外部 URL の最大長さ | 8,192 キャラクター |
| リクエスト本文サイズ上限 | 48 MiB(インライン時) |
| 単一画像の最大サイズ (Base64/URL) | 32 MiB |
単一画像の最大サイズ (Files API ) | 64 MiB |
| リクエストあたりの最大画像数 | 600 枚 |
画像全体最大サイズ ( を使わない場合) | 64 MiB |
画像全体最大サイズ ( を含む場合) | 200 MiB |
| 画像の最大解像度 | 1 辺あたり 8,192 ピクセル(15 枚以上の場合は 4,096 ピクセルに低下) |
Files API のストレージおよびアップロード制限については、「Files API: Limits」をご参照ください。
追加の制約
- メッセージ種別: 画像はユーザーメッセージのみでサポートされます(システム/アシスタントメッセージ内の画像は 400 エラー)。
- 対応モデル: 画像を受け付けるのはビジョンモデル(例:
)のみです(他のモデルは「画像をサポートしていません」との 400 エラー)。deepseek-v4-flash-vision-exp - テキスト内: ユーザーテキストに予約された画像プレースホルダートークンを含む場合は 400 エラーで却下されます。
Anthropic API での使用方法
OpenAI 互換エンドポイントに加え、Anthropic 互換の
/messages エンドポイント(base_url = https://api.deepseek.com/anthropic)でも画像を送信できます。
構造的な違い
Anthropic は
image_url の代わりに source オブジェクトを使用し、その type が以下のいずれかである必要があります。
Python 例 (Anthropic)
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": "この画像には何がありますか?"}, { "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": "<BASE64_DATA>", }, }, ], } ], ) print(message.content)
ソースタイプとの対応関係
| 対応する OpenAI 方法 | 備考 |
|---|---|---|
| Base64 エンコードされた画像 | フィールド(例:)が必要です。 |
| 外部の公開 URL | 最大 8,192 キャラクターまでサポート。 |
| Files API の | ヘッダー の追加が必要です。 |
Responses API を使用して画像を送信する場合
DeepSeek-v4-flash-vision-exp モデルは、OpenAI 互換の Responses API でも画像を受け付けます。入力方法(Base64, URL, Files API)および制限事項も同様です。
コンテンツパースの違い
画像は
input_image パートとして扱われ、ユーザー/開発者メッセージ、またはツール出力に含まれます。
Python 例 (Responses API)
response = client.responses.create( model="deepseek-v4-flash-vision-exp", input=[ { "role": "user", "content": [ {"type": "input_text", "text": "この画像には何がありますか?"}, {"type": "input_image", "image_url": "https://example.com/image.jpg", "detail": "low"}, ], } ], ) print(response.output_text)
注意点
パートはinput_image
フィールドをサポートし、同じ意味(detail
,low
,high
,original
)を持ちます。auto
で提供している場合はfile_id
は無視されます。detail
とimage_url
は互いに排他です。file_id
詳細なフィールド定義や制限事項については、Responses API ガイドをご参照ください。