DeepSeek V4-Flash Vision Exp : intégrer et tester la vision à bas coût
Le modèle le moins cher de DeepSeek peut désormais voir. Le 21 août 2026, DeepSeek a lancé deepseek-v4-flash-vision-exp, une version de V4-Flash dotée de capacités de vision. Elle accepte les images via la même API de production, au même prix que le modèle textuel, chaque image étant facturée pour un maximum de 384 jetons d'entrée. La note de publication officielle indique que le modèle conserve les capacités textuelles de V4-Flash et ajoute une compréhension des images dont les performances d'agent multimodal seraient proches de celles d'Opus 4.8.
Essayez Apidog dès aujourd’hui
Ce guide présente le modèle, la signification de « Exp » pour une utilisation en production, les trois méthodes d'envoi d'images, les limites à prévoir et une méthode fiable pour tester les requêtes multimodales. Comme ces requêtes mélangent plusieurs types de contenu et grossissent rapidement, il est plus pratique de les construire dans Apidog que de modifier manuellement du JSON dans un terminal.
Qu'est-ce que deepseek-v4-flash-vision-exp ?
Le modèle associe V4-Flash-0731 à un encodeur d'images. Selon DeepSeek, il correspond au modèle de base sur les tâches textuelles, notamment les charges de travail d'agents, le raisonnement et la connaissance générale. Vous pouvez donc l'utiliser à la place de V4-Flash sans perdre ses fonctionnalités textuelles.
L'annonce sur OpenRouter le décrit comme un modèle sparse Mixture-of-Experts avec 13 milliards de paramètres actifs sur un total de 284 milliards.
Le contexte important est le positionnement de V4-Flash : il s'agit de la gamme économique de DeepSeek. Nous avons présenté le modèle textuel dans ce guide de l'API DeepSeek V4-Flash. L'économie reste la même avec la vision.
L'affirmation « proche d'Opus 4.8 sur les benchmarks d'agents multimodaux » vient de DeepSeek. Considérez donc les benchmarks des fournisseurs comme des indications et évaluez le modèle sur vos propres documents avant toute migration.
Malgré son étiquette expérimentale, ce n'est pas un simple modèle de bac à sable. Il fonctionne sur les points de terminaison d'API de production, avec les mêmes limites de débit et le même SLA que les autres modèles V4. Aucune liste d'attente ni demande d'accès spéciale n'est nécessaire.
Tarification : les tarifs Flash incluent les images
La grille tarifaire est identique à celle de deepseek-v4-flash, selon la page officielle de tarification de DeepSeek :
| Type de jetons | Heures creuses | Heures de pointe |
|---|---|---|
| Entrée, cache hit — par 1M de jetons | $0.007 | $0.014 |
| Entrée, cache miss — par 1M de jetons | $0.22 | $0.44 |
| Sortie — par 1M de jetons | $0.66 | $1.32 |
Les images sont tokenisées pour la facturation à hauteur de 384 jetons chacune et utilisent le tarif d'entrée. Au tarif de pointe en cache miss, une image au coût maximal revient à environ $0.00017. Même 1 000 images coûtent donc moins cher qu'un café.
Deux règles de tarification sont héritées du modèle textuel :
- Les tarifs des heures creuses correspondent à la moitié des tarifs de pointe.
- Les heures de pointe sont comprises entre 01:00 et 04:00, puis 06:00 et 10:00 UTC les jours de semaine.
- La mise en cache du contexte s'applique aux entrées répétées, ce qui est utile lorsque vous réutilisez le même prompt système avec des images différentes.
La gamme V4 annonce une fenêtre de contexte de 1M de jetons, avec une limite de sortie nettement inférieure en pratique.
Envoyer une image : trois méthodes
Le modèle utilise le point de terminaison standard Chat Completions :
https://api.deepseek.com/chat/completions
Les formats Messages et Responses sont également pris en charge, comme l'explique ce guide du déploiement de l'API V4-Flash Responses.
Les images doivent se trouver dans le tableau content d'un message user. Vous pouvez les transmettre de trois manières.
1. Image encodée en Base64
Cette méthode est autonome et convient aux appels ponctuels. La taille maximale est de 32 MiB par image.
import base64
from openai import OpenAI
client = OpenAI(
[REDACTED CREDENTIAL]
base_url="https://api.deepseek.com"
)
with open("invoice.png", "rb") as image_file:
b64 = base64.b64encode(image_file.read()).decode()
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[{
"role": "user",
"content": [
{
"type": "text",
"text": "Extract the line items and totals as JSON."
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{b64}"
}
}
]
}]
)
print(response.choices[0].message.content)
2. URL externe
Si l'image est déjà hébergée sur un CDN ou un serveur public, transmettez directement son URL. Celle-ci peut contenir jusqu'à 8 192 caractères.
{
"type": "image_url",
"image_url": {
"url": "https://example.com/chart.png"
}
}
3. Référence à un fichier via l'API Files
Téléchargez l'image une fois, puis réutilisez son identifiant dans plusieurs requêtes. L'API Files de DeepSeek accepte gratuitement les téléchargements d'images. Une référence file_id évite de renvoyer la même image et permet d'utiliser des fichiers allant jusqu'à 64 MiB.
{
"type": "file",
"file": {
"file_id": "file-api-xxxxxxxxxxxxxxxx"
}
}
Choisissez :
- Base64 pour un appel ponctuel ;
- une URL lorsque l'image existe déjà sur un CDN ;
-
un
file_idlorsque le même fichier est utilisé plusieurs fois.
Contrôler le prétraitement avec detail
Chaque image peut recevoir un champ detail optionnel :
-
"low"réduit l'image à 512 × 512. C'est l'option la plus rapide et la moins coûteuse, adaptée aux questions de classification ; -
"high"ou"original"conserve les dimensions d'origine, ce qui convient mieux aux documents denses et aux petits caractères ; -
"auto"laisse l'API choisir.
En interne, les images sont normalisées vers environ 800 × 800 pour le comptage des jetons, ce qui explique le plafond de 384 jetons par image.
Pour une tâche proche de l'OCR, par exemple l'extraction de données depuis des reçus ou des tableaux de bord, comparez "low" et "high" sur votre propre corpus. Le coût supplémentaire reste limité, mais la précision peut varier fortement.
Limites à connaître avant la production
| Contrainte | Valeur |
|---|---|
| Nombre maximal d'images par requête | 600 |
| Taille d'une image inline en Base64 | 32 MiB |
| Taille d'une image via l'API Files | 64 MiB |
| Taille totale du corps de requête | 48 MiB |
| Dimension maximale par côté | 8 192 px |
| Dimension maximale par côté avec 15 images ou plus | 4 096 px |
| Longueur maximale d'une URL externe | 8 192 caractères |
| Emplacement autorisé | Messages user uniquement |
La dernière contrainte est une source fréquente d'erreurs HTTP 400 : une image placée dans un message system ou assistant est rejetée.
Les requêtes contenant plusieurs images sont prises en charge. Vous pouvez également intercaler librement du texte entre les images, ce qui permet de construire des boucles d'agents capables de capturer un écran, de l'analyser, puis d'agir.
DeepSeek a ajouté la prise en charge native du modèle à DeepSeek Harness 0.1.1 le même jour. Cet aperçu de DeepSeek Harness présente cette pile. L'appel d'outils fonctionne également avec la vision, comme dans ce guide de l'appel de fonctions.
Que signifie « Exp » en production ?
Le suffixe indique que le modèle peut être révisé ou remplacé rapidement. Il ne s'agit pas d'un mur de paiement, mais vous devez concevoir votre intégration pour absorber un changement de modèle.
Centraliser l'identifiant
Ne répétez pas deepseek-v4-flash-vision-exp dans toute l'application. Utilisez une variable d'environnement ou une configuration centralisée :
DEEPSEEK_VISION_MODEL=deepseek-v4-flash-vision-exp
Prévoir une solution de repli
Conservez deepseek-v4-flash comme solution de repli pour les requêtes sans image. Le modèle de vision étant annoncé comme équivalent sur les tâches textuelles, ce routage ne change pas les fonctionnalités textuelles.
Conserver vos évaluations
Enregistrez des exemples représentatifs et leurs résultats. Lorsqu'un successeur non expérimental sera disponible, vous pourrez comparer les deux versions sur vos tâches plutôt que de vous fier uniquement aux benchmarks du fournisseur.
Exemple : calculer le coût d'un pipeline de documents
Supposons un pipeline qui traite 50 000 factures numérisées par mois, avec une image par facture, une instruction de 200 jetons et environ 400 jetons de sortie JSON par appel.
-
Entrée des images : 50 000 × 384 = 19,2M de jetons. Au tarif de pointe en cache miss, soit
$0.44/1M, le coût est d'environ$8.45. -
Entrée textuelle : 50 000 × 200 = 10M de jetons, soit environ
$4.40au tarif de pointe. Avec la mise en cache du bloc d'instructions répété, la plus grande partie peut passer au tarif cache hit de$0.014/1M, soit environ$0.14. -
Sortie : 50 000 × 400 = 20M de jetons à
$1.32/1M, soit$26.40.
Le total atteint donc environ 35 à 40 $ par mois aux tarifs de pointe, et environ la moitié si le traitement est exécuté en dehors des heures de pointe en semaine.
Les jetons de sortie représentent la plus grande partie de la facture. Avec un coût d'image aussi faible, la meilleure optimisation consiste à demander un format de réponse compact, par exemple un JSON structuré, plutôt qu'une description en prose. Réduire la taille de la sortie aura généralement plus d'effet que réduire la résolution de l'image.
Ce profil rend également plus réalistes les boucles d'agents continues. Un cycle capture d'écran → raisonnement → action, trop coûteux avec certains modèles multimodaux haut de gamme, devient viable lorsque chaque image est plafonnée à 384 jetons.
Tester les requêtes multimodales dans Apidog
Les requêtes de vision sont difficiles à modifier manuellement : les chaînes Base64 rendent le JSON illisible et les comparaisons entre plusieurs valeurs de detail produisent des charges utiles presque identiques.
Voici une boucle de test plus fiable dans Apidog.
-
Enregistrez la requête dans un projet et remplacez les valeurs variables par
{{model_id}},{{detail}}et la charge utile de l'image. - Automatisez l'encodage avec un script pré-requête qui lit l'image et injecte la chaîne Base64. Le corps affiché reste ainsi lisible.
- Ajoutez des assertions structurelles. Si la réponse doit contenir des lignes de facture, des boîtes englobantes ou des valeurs de graphique, analysez le JSON et vérifiez explicitement les champs attendus.
-
Comparez plusieurs variantes de prompt et de
detailavec les mêmes documents de test. - Simulez la réponse pendant le développement de l'interface utilisateur. La simulation intelligente d'Apidog permet de servir le schéma sans consommer d'appels API.
Vous pouvez télécharger Apidog gratuitement. Lorsque DeepSeek révise le modèle expérimental, il suffit de relancer la même collection de tests.
FAQ
deepseek-v4-flash-vision-exp est-il gratuit ?
Non. Il utilise toutefois exactement les tarifs Flash du modèle textuel, avec un maximum de 384 jetons d'entrée facturés par image. Le stockage d'images via l'API Files de DeepSeek est gratuit ; la facturation intervient lorsque les images sont utilisées dans une requête.
Remplace-t-il deepseek-v4-flash ?
Non. Le modèle textuel reste l'identifiant stable. Vous pouvez utiliser la version Vision pour les tâches textuelles si vous acceptez son statut expérimental, mais l'approche la plus prudente consiste à lui envoyer uniquement les requêtes qui contiennent des images.
Peut-on l'utiliser avec un format d'API de style Anthropic ?
Oui. Les points de terminaison V4 de DeepSeek acceptent les formats Chat Completions, Messages et Responses. Les clients utilisant l'un de ces formats peuvent donc ajouter des blocs d'image sans changer de dialecte de requête.
Ce guide détaillé de l'API V4 Pro présente les mécanismes de point de terminaison partagés au sein de la famille V4.
Comment la tarification se compare-t-elle à GPT ou Claude Vision ?
Avec un tarif d'entrée compris entre $0.22 et $0.44 par million de jetons et des images plafonnées à 384 jetons, le coût est nettement inférieur à celui de nombreuses API multimodales haut de gamme. La précision dépend toutefois de votre charge de travail : mesurez-la avec votre propre jeu d'évaluation.
Conclusion
Avec deepseek-v4-flash-vision-exp, DeepSeek ajoute la compréhension d'images à ses points de terminaison de production tout en conservant les tarifs Flash. Vous disposez de trois méthodes d'entrée — Base64, URL externe et file_id — ainsi que de limites précises à intégrer dans votre architecture.
Centralisez l'identifiant expérimental, prévoyez une solution de repli, puis testez les sorties sur vos propres documents. Construisez la requête dans Apidog, ajoutez des assertions et conservez vos résultats : vous pourrez utiliser le modèle dès maintenant et évaluer objectivement son successeur.
Top comments (0)