La prise en charge de la vision par DeepSeek a cessé d'être un projet annexe le 10 septembre 2026. Avec la publication en GA de DeepSeek-V4.1-Flash, l'entrée d'image réside dans le modèle principal sous un seul identifiant, deepseek-flash. Il n'y a pas de build de vision séparé ni de suffixe "Exp". La note de publication retire à la fois deepseek-v4-flash et deepseek-v4-flash-vision-exp ; les requêtes vers l'un ou l'autre nom sont désormais acheminées vers V4.1-Flash.
Ceci est important si vous avez développé sur le point de terminaison expérimental il y a trois semaines. Le format de requête que vous avez écrit pour V4-Flash-Vision-Exp fonctionne toujours, mais le modèle lisant vos images est nouveau : 763 milliards de paramètres, avec un encodeur de vision entraîné à partir de zéro en parallèle avec l'épine dorsale de texte. Ce guide couvre ce que signifie "multimodal natif" en pratique, les trois façons de fournir une image, le paramètre detail, le coût des images, et comment construire un test de vision reproductible dans Apidog qui prouve que l'ancien nom et le nouveau se comportent de la même manière.
En bref
- ID du modèle :
deepseek-flash. L'ancien nomdeepseek-v4-flash-vision-expest toujours résolu mais est servi par V4.1-Flash. - Les images sont placées dans le tableau
contentdu message utilisateur : une URL de données base64 (jusqu'à 32 Mio), une URL externe (jusqu'à 8 192 caractères), ou un ID de fichier. - Champ
detailoptionnel :low,high(aliasoriginal), ouauto. - Benchmarks de vision, tels que rapportés par DeepSeek : MMMU-Pro 56.5, CVBench 77.9, DocVQA 95.6, RefCOCO 86.0.
- La tarification est le tarif Flash standard : 0,15 $ par million de tokens d'entrée de cache-miss en heures creuses, 0,30 $ en heures de pointe.
- Le contexte est de 1 million de tokens, la sortie maximale est de 384 000, idem pour les appels uniquement textuels.
Ce que signifie "multimodal natif" ici
Vision-Exp attachait un encodeur d'image à un modèle de texte fini. V4.1-Flash fait l'inverse. Selon la carte du modèle, les images faisaient partie du corpus de pré-entraînement de 45 T de tokens dès le début, et l'encodeur est un nouveau DeepSeek-ViT entraîné à partir de zéro au lieu d'être emprunté à un modèle de vision existant. L'épine dorsale est un mélange d'experts de 552 milliards de paramètres ; avec l'encodeur attaché, le total atteint 763 milliards. Seuls 8 milliards de paramètres sont actifs pendant le préremplissage et 16 milliards pendant le décodage, ce qui explique comment un modèle aussi grand fonctionne toujours à la vitesse Flash et aux prix Flash. V4-Flash, le modèle textuel pur du guide API V4-Flash, était la base que Vision-Exp a étendue.
DeepSeek rapporte ces quatre scores de vision dans la carte du modèle. Ce sont les mesures propres au fournisseur, traitez-les donc comme des affirmations tant que vous n'avez pas traité vos propres documents via l'API.
| Benchmark | Ce qu'il mesure | V4.1-Flash |
|---|---|---|
| MMMU-Pro | Questions de niveau universitaire nécessitant à la fois l'image et le texte pour y répondre | 56.5 |
| CVBench | Comptage, ordonnancement en profondeur et relations spatiales dans les photos naturelles | 77.9 |
| DocVQA | Réponses aux questions sur des documents et formulaires scannés | 95.6 |
| RefCOCO | Localisation de l'objet auquel une phrase fait référence dans une image | 86.0 |
Pour les utilisateurs de l'API, DocVQA et RefCOCO sont les lignes à surveiller. La QA de documents est le score derrière l'extraction de factures et de formulaires. RefCOCO est l'ancrage : étant donné "le bouton Soumettre sous le champ e-mail", le modèle peut-il le trouver ? Cette compétence transforme les captures d'écran en actions d'agent. L'aperçu de l'architecture couvre le côté texte et le rapport technique plus en détail.
Le format de requête : trois façons de fournir une image
Rien n'a changé concernant le format filaire. Appelez le point de terminaison Chat Completions à l'adresse https://api.deepseek.com avec le SDK OpenAI, placez les parties texte et image dans le même tableau content, et définissez le modèle sur deepseek-flash. Voici un appel complet qui transforme une facture en JSON :
import base64, json
from openai import OpenAI
client = OpenAI(api_key="YOUR_DEEPSEEK_KEY", base_url="https://api.deepseek.com")
with open("invoice-2026-0912.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
schema_hint = (
"Return only JSON with keys: invoice_number (string), issue_date (YYYY-MM-DD), "
"vendor (string), currency (string), line_items (array of {description, quantity, "
"unit_price, amount}), subtotal, tax, total (numbers)."
)
response = client.chat.completions.create(
model="deepseek-flash",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": schema_hint},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{image_b64}",
"detail": "high",
},
},
],
}],
temperature=1.0,
max_tokens=2048,
)
invoice = json.loads(response.choices[0].message.content)
print(invoice["invoice_number"], invoice["total"])
print(response.usage.prompt_tokens, "prompt tokens")
C'est l'option un, base64 en ligne : autonome, limitée à 32 MiB par image, et adaptée aux appels uniques ou aux fichiers qui ne quittent jamais votre réseau.
L'option deux est une URL externe. Si l'image a déjà un lien public sur un CDN ou dans un stockage d'objets, ignorez l'encodage et transmettez le lien (jusqu'à 8 192 caractères). Cette requête curl lit un tableau de prix hébergé :
curl https://api.deepseek.com/chat/completions \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-flash",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "List every plan name and its monthly price from this chart as a JSON array."},
{"type": "image_url", "image_url": {"url": "https://assets.example-saas.com/pricing/plans-q3.png", "detail": "auto"}}
]
}]
}'
L'option trois est un ID de fichier. Téléchargez l'image une fois via l'API de fichiers de DeepSeek, puis référencez-la avec une partie file au lieu de renvoyer les octets :
{"type": "file", "file": {"file_id": "file-api-xxxxxxxxxxxxxxxx"}}
Choisissez les ID de fichier chaque fois que la même image apparaît dans plus d'une requête, comme une capture d'écran de référence que chaque test d'une suite compare. La présentation complète des paramètres se trouve dans le guide API V4.1-Flash.
Le paramètre `detail` et les limites de requête
Le paramètre detail est optionnel et se trouve à l'intérieur de l'objet image_url. Les trois valeurs proviennent de Vision-Exp :
"low"réduit l'échelle à 512x512. Le moins cher et le plus rapide ; convient aux questions du type "est-ce un tableau de bord ou un reçu"."high"(alias"original") conserve la résolution source. Utilisez-le pour les documents denses, les petits caractères et les captures d'écran d'interface utilisateur où une étiquette de 12px est importante."auto"laisse l'API choisir.
Les plafonds que vous atteindrez en premier :
| Contrainte | Valeur |
|---|---|
| Image base64 en ligne | jusqu'à 32 Mio |
| Longueur de l'URL externe | jusqu'à 8 192 caractères |
| Référence d'ID de fichier | prise en charge via l'API Fichiers |
| Fenêtre de contexte | 1 million de tokens |
| Sortie maximale | 384 000 tokens |
Valeurs detail |
low, high/original, auto |
Le guide Vision-Exp énumérait d'autres plafonds sur le nombre d'images, la taille du corps et les dimensions en pixels. Ceux-ci ont été publiés pour le modèle expérimental ; vérifiez le journal des modifications de l'API avant de vous y fier pour V4.1-Flash. Une règle n'a pas changé : les images appartiennent aux messages utilisateur. Si vous en mettez une dans un message système ou d'assistant, vous obtiendrez une erreur 400.
Ce que coûtent les images sur deepseek-flash
Il n'y a pas de prix distinct pour la vision. Les images sont facturées comme des tokens d'entrée au tarif Flash de la page de tarification, à compter du 10 septembre 2026 à 04:00 UTC :
| deepseek-flash, par 1 million de tokens | Heures creuses | Heures de pointe |
|---|---|---|
| Entrée, cache hit | 0,003 $ | 0,006 $ |
| Entrée, cache miss | 0,15 $ | 0,30 $ |
| Sortie | 0,60 $ | 1,20 $ |
Les heures de pointe sont du lundi au vendredi, de 01h00 à 04h00 et de 06h00 à 10h00 UTC ; les heures creuses sont à moitié prix. Sur Vision-Exp, chaque image était facturée pour un maximum de 384 tokens d'entrée. Il faut [VÉRIFIER] dans la documentation si ce plafond est reporté tel quel sur V4.1-Flash. Le champ usage.prompt_tokens de chaque réponse indique le nombre réel, c'est pourquoi l'exemple Python l'affiche.
Si le plafond de 384 tokens est maintenu, une image coûte environ 0,000115 $ aux tarifs de pointe en cas de cache-miss et la moitié en heures creuses, de sorte que mille factures reviennent à environ 0,12 $ d'entrée d'image. La sortie domine tout pipeline réel : 400 tokens JSON par facture coûtent environ quatre fois plus que l'image elle-même en période de pointe. Le levier est un schéma de réponse strict, et non le redimensionnement d'image. Le calcul des heures de pointe, des heures creuses et des cache-hits est expliqué en détail dans DeepSeek-V4.1-Flash pricing explained ; la version courte est que l'entrée en cas de cache-miss est 32 % moins chère que ce que Vision-Exp facturait en août.
Trois cas d'utilisation qui méritent un pilote
Extraction de documents. Factures, reçus, bons de livraison, formulaires d'assurance. Demandez un schéma JSON fixe, envoyez avec detail: "high", et vérifiez que les postes s'additionnent au sous-total avant de faire confiance à un enregistrement.
Captures d'écran d'interface utilisateur pour tester des assertions. Capturez une page après un déploiement, demandez si les éléments attendus sont présents et où, et transformez la réponse en un succès/échec. RefCOCO est le benchmark pertinent : il s'agit de trouver des éléments nommés.
Lecture de graphiques. Extrayez les noms de séries, les étiquettes d'axes et les valeurs tracées d'une image de graphique dans un tableau. Les lignes qui se chevauchent ou les axes non étiquetés nécessitent une vérification manuelle.
Tester le point de terminaison de vision dans Apidog
Les requêtes de vision sont pénibles à itérer manuellement : un blob base64 rend le corps JSON illisible, et la comparaison des paramètres detail implique de jongler avec des charges utiles presque identiques. Voici une boucle qui reste lisible et se réexécute en un clic.

- Configurez un environnement. Créez des variables pour
base_url,api_key,model(deepseek-flash), etdetail(high). Changer le niveau de détail plus tard est un changement de menu déroulant, pas une modification de la charge utile. - Encodez l'image dans un script de pré-requête. Au lieu de coller du base64 dans le corps, laissez un script de pré-requête encoder le fichier d'exemple et écrire le résultat dans une variable
image_b64. Le corps visible reste court, et échanger l'image de test signifie changer un seul chemin. - Enregistrez le corps de la requête avec des variables. Utilisez
"model": "{{model}}","detail": "{{detail}}", et"url": "data:image/png;base64,{{image_b64}}". Enregistrez-le comme un cas de test pour qu'il soit réutilisable. - Affirmez sur la forme JSON. Affirmez que la réponse est analysable en JSON, que
invoice_numberest une chaîne non vide, queline_itemsest un tableau non vide, quetotalest un nombre, et queusage.prompt_tokensest inférieur à un seuil que vous choisissez. Cela transforme "semble bon" en un succès/échec. - Confirmez que l'ancien nom est routé vers le même modèle. Dupliquez la requête enregistrée, définissez
modelsurdeepseek-v4-flash-vision-exp, et exécutez les deux dans un scénario de test unique sur la même image. Comparez les champs extraits et le nombre deusage.prompt_tokens. Des résultats correspondants confirment ce que la note de publication indique : les deux noms atteignent V4.1-Flash, vous pouvez donc renommer votre configuration en toute confiance. - Exécutez-le en CI. Exécutez le scénario avec
apidog-clià chaque changement d'invite, afin qu'une régression de schéma fasse surface avant la production.
Téléchargez Apidog et l'installation prend environ quinze minutes à construire. Apidog teste la couche API, pas l'hôte du modèle, donc le même scénario fonctionne avec tout point de terminaison compatible OpenAI vers lequel vous vous dirigez ultérieurement.
Où cela vous mène
Le point de terminaison expérimental a prouvé le format de requête et le prix. V4.1-Flash conserve les deux et propose un modèle qui a vu des images dès son premier token d'entraînement. Pointez votre client vers deepseek-flash, gardez detail dans une variable, affirmez sur le JSON que vous recevez, et exécutez l'ancien nom via le même scénario Apidog une fois pour confirmer le reroutage. Après cela, la seule question qui reste est la précision sur vos propres documents, et vous avez maintenant un test qui y répond.
