Vision | DeepSeek API
Ondersteunde afbeeldingsformaten: JPEG, PNG, GIF en WebP. Het formaat wordt gedetecteerd op basis van de werkelijke bestandsinhoud, niet op basis van de bestandsnaam of het opgegeven MIME-type.
Afbeeldingen verzenden
Er zijn drie manieren om een afbeelding aan het model te leveren. Al deze methoden maken gebruik van het standaard OpenAI-compatibele Chat Completions-formaat, waarbij de inhoud (content) een array van blokken is in plaats van een eenvoudige tekststring. Dezelfde drie methoden zijn ook beschikbaar in de Responses API, waar afbeeldingen worden overgebracht in input_image-inhoudsdelen.
De base_url voor de onderstaande voorbeelden is https://api.deepseek.com.
1. Base64-gecodeerde afbeelding (inline)
Codeer de afbeelding en voeg deze direct toe aan het verzoek als een data: URL. Dit is de eenvoudigste optie voor lokale bestanden. De gecodeerde gegevens tellen mee voor de limiet van de request body van 48 MiB (zie Limieten).
Python voorbeeld:
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": "Wat staat er op deze afbeelding?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{b64}"},
},
],
}
],
)
print(response.choices[0].message.content)
cURL voorbeeld:
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": "Wat staat er op deze afbeelding?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64_DATA>"}}
]
}
]
}'
2. Externe afbeelding-URL
Stuur een publiek toegankelijke http(s)-link en het model downloadt de afbeelding voor u. De URL mag maximaal 8192 tekens lang zijn, het afbeeldingsbestand mag maximaal 32 MiB zijn en de download moet binnen 60 seconden zijn voltooid. Als uw link langer is, gebruik dan een base64-data-URL of de Files API.
Python voorbeeld:
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Beschrijf deze afbeelding."},
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg"},
},
],
}
],
)
print(response.choices[0].message.content)
3. Verwijzen naar een bestand geüpload via de Files API
Upload een afbeelding één keer met de Files API en verwijs vervolgens naar de fileid in uw verzoeken. Dit is de beste optie wanneer u dezelfde afbeelding in meerdere verzoeken hergebruikt, of wanneer de afbeelding de limiet van de request body van 48 MiB overschrijdt. In tegenstelling tot inline-afbeeldingen kunnen afbeeldingen die via de Files API fileid worden aangeroepen tot 64 MiB groot zijn en zijn ze niet onderhevig aan de controle van 32 MiB per afbeelding.
Gebruik een file content block met de geretourneerde file_id (die de vorm file-api-... heeft):
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Wat staat er op deze afbeelding?"},
{"type": "file", "file_id": "file-api-xxxxxxxxxxxxxxxx"},
],
}
],
)
print(response.choices[0].message.content)
Als alternatief kan een file block de afbeelding inline als base64 overbrengen via filedata in plaats van fileid (deze twee sluiten elkaar uit):
{
"type": "file",
"file_data": "data:image/jpeg;base64,<BASE64_DATA>",
"filename": "image.jpg"
}
Detailniveau
Voor image_url-inputs kunt u optioneel een detail-veld instellen om te bepalen hoe de afbeelding wordt verwerkt:
| Waarde | Gedrag |
|---|---|
low | De afbeelding wordt voor inferentie geschaald naar 512×512. Sneller en goedkoper wanneer fijne visuele details niet belangrijk zijn. |
high | Behoudt de originele afbeelding. (Aangeboden voor compatibiliteit; gelijk aan original.) |
original | Behoudt de originele afbeelding. |
auto | Automatische selectie. Momenteel gelijk aan original. |
Voorbeeld:
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg", "detail": "low"}
}
Wanneer de Files API gebruiken
Inline-afbeeldingen (base64 of file_data) tellen mee voor de limiet van de request body van 48 MiB. Overweeg de Files API in de volgende gevallen:
- Wanneer één enkel verzoek de limiet van de body-grootte zou overschrijden.
- Wanneer de afbeelding groter is dan 32 MiB; dit is alleen mogelijk via de Files API.
- Wanneer u naar dezelfde afbeelding verwijst in meerdere verzoeken en wilt voorkomen dat u deze elke keer opnieuw uploadt.
Tokengebruik
Afbeeldingen worden omgezet in tokens op basis van hun afmetingen. Deze tokens worden samen met uw teksttokens gefactureerd.
Voorafgaand aan de inferentie wordt elke afbeelding automatisch herschaald:
- Afbeeldingen met een totaal aantal pixels onder ongeveer 384×384 worden vergroot, waarbij de beeldverhouding behouden blijft.
- Grotere afbeeldingen worden verkleind, waarbij de beeldverhouding behouden blijft, zodat het totale aantal pixels na herschaling ongeveer gelijk is aan dat van een 800×800 afbeelding.
Hierdoor is er een bovengrens van 384 tokens per afbeelding: bijvoorbeeld verbruiken een afbeelding van 2000×2000 en een van 5000×5000 na herschaling hetzelfde aantal tokens. Wanneer een verzoek meerdere afbeeldingen bevat, wordt elke afbeelding onafhankelijk geteld volgens dezelfde regel — er is geen aparte berekening voor verzoeken met meerdere afbeeldingen.
Om de tokenkosten van een afbeelding van een specifieke grootte te schatten, kunt u de image token calculator op de pagina "Token & Token Usage" gebruiken.
Limieten
| Limiet | Waarde |
|---|---|
| Ondersteunde formaten | JPEG, PNG, GIF, WebP |
| Lengte externe URL | 8192 tekens |
| Grootte request body | 48 MiB |
| Max. grootte enkele afbeelding (base64 / externe URL) | 32 MiB |
Max. grootte enkele afbeelding (Files API file_id) | 64 MiB |
| Max. aantal afbeeldingen per verzoek | 600 |
| Max. totale afbeeldingsgrootte per verzoek | 64 MiB zonder fileid afbeeldingen; tot 200 MiB inclusief fileid afbeeldingen |
| Max. afbeeldingsafmetingen | 8192 px per zijde; daalt naar 4096 px per zijde wanneer een verzoek 15 of meer afbeeldingen bevat |
Voor opslag- en uploadquota van bestanden die via de Files API zijn geüpload, zie Files API: Limits.
Beperkingen
- Afbeeldingen worden alleen ondersteund in berichten van de gebruiker (
user): afbeeldingen in systeem- (system) of assistentberichten (assistant) resulteren in een 400-fout. - Alleen vision-modellen (
deepseek-v4-flash-vision-exp) accepteren afbeeldingen; andere modellen retourneren een 400-fout ("This model does not support image"). - Gebruikersteksten die het gereserveerde image placeholder token bevatten, worden geweigerd met een 400-fout.
Afbeeldingen gebruiken met de Anthropic API
Naast het bovenstaande OpenAI-compatibele eindpunt kunt u afbeeldingen verzenden via het Anthropic-compatibele /messages eindpunt (base_url = https://api.deepseek.com/anthropic).
Het verschil zit in de vorm van het image content block. In plaats van image_url gebruikt Anthropic een image block met een source-object waarvan het type base64, url of file is:
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": "Wat staat er op deze afbeelding?"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "<BASE64_DATA>",
},
},
],
}
],
)
print(message.content)
De drie source-varianten weerspiegelen de OpenAI-methoden:
source.type | Equivalent OpenAI-methode | Opmerkingen |
|---|---|---|
base64 | Base64-gecodeerde afbeelding | Vereist een media_type veld (image/jpeg, image/png, image/gif, of image/webp). |
url | Externe afbeelding-URL | Maximaal 8192 tekens. |
file | Files API file_id | Vereist de header anthropic-beta: files-api-2025-04-14. |
Afbeeldingen gebruiken met de Responses API
Het deepseek-v4-flash-vision-exp-model accepteert afbeeldingen ook via de OpenAI-compatibele Responses API. Dezelfde drie invoermethoden (base64 data URL, externe http(s) URL, Files API fileid) en dezelfde limieten zijn van toepassing; alleen de vorm van het inhoudsdeel verschilt — afbeeldingen worden overgebracht in inputimage-delen, zowel in berichten van de gebruiker/ontwikkelaar als in de output van functioncalloutput / customtoolcall_output items:
response = client.responses.create(
model="deepseek-v4-flash-vision-exp",
input=[
{
"role": "user",
"content": [
{"type": "input_text", "text": "Wat staat er op deze afbeelding?"},
{"type": "input_image", "image_url": "https://example.com/image.jpg", "detail": "low"},
],
}
],
)
print(response.output_text)
Het inputimage-deel ondersteunt een detail-veld met dezelfde semantiek als eerder beschreven (low / high / original / auto). detail wordt genegeerd wanneer de afbeelding via fileid wordt verstrekt, en imageurl en fileid sluiten elkaar uit.
Voor veldsemantiek, beperkingen (afbeeldingen in systeem/assistentberichten worden geweigerd met een 400-fout) en afbeeldingen in tool-output, zie de Responses API guide.
Groetjes,