Qwen
Qwen3.8 Flash
Comment Qwen3.8 Flash de Qwen traite de vrais documents d'entreprise : précision, coût réel, vitesse et où il se trompe.
Prix catalogue : 0,14 € par million de tokens d'entrée, 0,43 € par million de tokens de sortie · qwen/qwen3.8-flash
Résultats
| Tâche · documents | Rang | Champs corrects | Documents sans erreur | Pour 1 000 documents | À corriger / 1 000 | Vitesse (médiane) | Seuil |
|---|---|---|---|---|---|---|---|
| Clauses contractuelles · Anglais (US) | 9/10 | 95,1 % | 69 % | 0,57 € | 307 | 14,1 s | atteint le seuil |
| Clauses contractuelles · Tchèque | 8/10 | 99,9 % | 99 % | 0,58 € | 13 | 13,6 s | atteint le seuil |
| Clauses contractuelles · Allemand | 6/10 | 98,0 % | 87 % | 0,72 € | 127 | 19,7 s | atteint le seuil |
| Tri des e-mails · Anglais (US) | 6/10 | 97,5 % | 79 % | 0,28 € | 213 | 8,9 s | atteint le seuil |
| Tri des e-mails · Tchèque | 3/10 | 98,5 % | 87 % | 0,41 € | 133 | 13,0 s | atteint le seuil |
| Tri des e-mails · Allemand | 4/10 | 97,9 % | 81 % | 0,36 € | 187 | 12,1 s | atteint le seuil |
| Extraction de factures · Français | 10/10 | 90,6 % | 82 % | 1,13 € | 180 | 19,8 s | sous le seuil |
| Extraction de factures · Anglais (US) | 10/10 | 82,4 % | 57 % | 1,06 € | 427 | 17,4 s | sous le seuil |
| Extraction de factures · Tchèque | 10/10 | 91,8 % | 77 % | 0,94 € | 233 | 17,0 s | sous le seuil |
| Extraction de factures · Allemand | 10/10 | 93,5 % | 87 % | 1,03 € | 127 | 19,0 s | sous le seuil |
| Extraction de factures · Espagnol | 10/10 | 87,9 % | 74 % | 1,28 € | 260 | 22,3 s | sous le seuil |
| Détection des données personnelles · Anglais (US) | 10/10 | 99,2 % | 99 % | 0,26 € | 13 | 7,5 s | atteint le seuil |
| Détection des données personnelles · Tchèque | 10/10 | 97,0 % | 89 % | 0,37 € | 113 | 9,6 s | atteint le seuil |
| Détection des données personnelles · Allemand | 9/10 | 99,6 % | 99 % | 0,33 € | 7 | 12,2 s | atteint le seuil |
Où il se trompe
Les champs sur lesquels il se trompe le plus souvent et les types d'erreurs, sur tous les documents du benchmark.
Clauses contractuelles · Anglais (US)
Champs les plus faibles
- Prestataire69,3 %
- Client69,3 %
- Date d'effet99,3 %
- Pénalité de retard (% par jour)99,3 %
Types d'erreurs (nombre de champs)
Clauses contractuelles · Tchèque
Champs les plus faibles
- Type de contrat98,7 %
Types d'erreurs (nombre de champs)
Clauses contractuelles · Allemand
Champs les plus faibles
- Droit applicable91,3 %
- Identifiant du prestataire94,7 %
- Identifiant du client94,7 %
- Prestataire99,3 %
Types d'erreurs (nombre de champs)
Tri des e-mails · Anglais (US)
Champs les plus faibles
- Tonalité80,7 %
- Priorité97,3 %
- Échéance99,3 %
Types d'erreurs (nombre de champs)
Tri des e-mails · Tchèque
Champs les plus faibles
- Tonalité88,7 %
- Priorité99,3 %
- Nom du client99,3 %
- Numéro de commande99,3 %
Types d'erreurs (nombre de champs)
Tri des e-mails · Allemand
Champs les plus faibles
- Tonalité84,7 %
- Priorité96,0 %
Types d'erreurs (nombre de champs)
Extraction de factures · Français
Champs les plus faibles
- Référence de paiement86,0 %
- Date d'échéance89,0 %
- Numéro de facture90,0 %
- Compte bancaire90,0 %
Types d'erreurs (nombre de champs)
Extraction de factures · Anglais (US)
Champs les plus faibles
- HT par taux70,0 %
- Taxe par taux76,0 %
- Référence de paiement79,3 %
- Compte bancaire81,3 %
Types d'erreurs (nombre de champs)
Extraction de factures · Tchèque
Champs les plus faibles
- HT par taux80,0 %
- Taxe par taux80,7 %
- Compte bancaire90,7 %
- Fournisseur93,3 %
Types d'erreurs (nombre de champs)
Extraction de factures · Allemand
Champs les plus faibles
- Référence de paiement88,7 %
- Numéro de facture92,7 %
- Fournisseur94,0 %
- Identifiant du fournisseur (EIN, IČO…)94,0 %
Types d'erreurs (nombre de champs)
Extraction de factures · Espagnol
Champs les plus faibles
- Référence de paiement85,0 %
- Fournisseur86,0 %
- N° de TVA86,0 %
- HT par taux86,0 %
Types d'erreurs (nombre de champs)
Détection des données personnelles · Anglais (US)
Champs les plus faibles
- Adresses98,7 %
- Noms99,3 %
- Adresses e-mail99,3 %
- Numéros de téléphone99,3 %
Types d'erreurs (nombre de champs)
Détection des données personnelles · Tchèque
Champs les plus faibles
- Noms90,7 %
- Adresses96,7 %
- Numéros de téléphone97,3 %
- Adresses e-mail98,0 %
Types d'erreurs (nombre de champs)
Détection des données personnelles · Allemand
Champs les plus faibles
- Noms99,3 %
- Adresses e-mail99,3 %
- Numéros de téléphone99,3 %
- Adresses99,3 %
Types d'erreurs (nombre de champs)
Taxe linguistique
Combien de tokens en plus ce modèle consomme pour le même texte qu'en anglais.
- Tchèque 1,66×
- Allemand 1,28×
- Français 1,37×
- Espagnol 1,32×
- Polonais 1,59×
Taxe linguistique de tous les modèles →
Conformité
- Dans l'UE non
- Sans conservation (ZDR) non
- DPA oui
- Poids ouverts non
Only provider on OpenRouter: Alibaba (no EU or ZDR endpoint). DPA: general Alibaba Cloud International DPA.
Comment nous vérifions la conformité →
À utiliser tout de suite
La requête exacte du benchmark (même prompt, schéma JSON, température 0), prête pour appeler Qwen3.8 Flash via OpenRouter.
Clauses contractuelles · Français
import json
import os
import httpx
PROMPT = "Extrayez les conditions essentielles du contrat ci-dessous et renvoyez uniquement du JSON avec ces clés :\n\nprovider_name la partie qui fournit la prestation (Prestataire, Vendeur, Bailleur, Concédant),\n exactement comme indiqué, y compris la forme juridique\nprovider_id numéro d'immatriculation de cette partie (p. ex. SIREN, SIRET ou RCS), s'il est indiqué\nclient_name la partie qui paie (Client, Acheteur, Preneur, Licencié)\nclient_id numéro d'immatriculation de cette partie, s'il est indiqué\ncontract_type l'une des valeurs : services, supply, lease, license, maintenance\nprice prix convenu hors TVA (nombre)\ncurrency code de devise selon ISO 4217 (EUR, CHF, USD, …)\nprice_period l'une des valeurs : one_time, monthly, yearly\neffective_date date d'entrée en vigueur du contrat (YYYY-MM-DD)\nend_date fin d'une durée déterminée (YYYY-MM-DD) ; null si le contrat est conclu pour une\n durée indéterminée\nnotice_period_months délai de préavis de résiliation en mois (nombre) ; null s'il n'y en a pas\npenalty_pct_per_day pénalité de retard de paiement en pourcentage du montant impayé par jour\n (p. ex. 0.05 pour 0,05 %) ; null s'il n'y en a pas\ngoverning_law code pays du droit applicable selon ISO 3166 (p. ex. FR) ; États américains\n sous la forme US-XX\n\nRègles :\n- Convertissez les dates relatives (« à la date de sa signature », « le premier jour du mois suivant ») par\n rapport à la date de signature.\n- La date de signature n'est pas la date d'entrée en vigueur, sauf si le contrat le prévoit expressément.\n- L'acompte, le dépôt de garantie et les pénalités forfaitaires pour d'autres manquements ne sont ni le prix ni\n la pénalité de retard de paiement.\n- Si une valeur ne figure pas dans le contrat, renvoyez null. Ne devinez pas.\n- Montants sous forme de nombres avec un point décimal, sans séparateur de milliers et sans symbole de devise.\n"
SCHEMA = json.loads("{\"type\":\"object\",\"properties\":{\"provider_name\":{\"type\":[\"string\",\"null\"]},\"provider_id\":{\"type\":[\"string\",\"null\"]},\"client_name\":{\"type\":[\"string\",\"null\"]},\"client_id\":{\"type\":[\"string\",\"null\"]},\"contract_type\":{\"type\":[\"string\",\"null\"],\"enum\":[\"services\",\"supply\",\"lease\",\"license\",\"maintenance\",null]},\"price\":{\"type\":[\"number\",\"null\"]},\"currency\":{\"type\":[\"string\",\"null\"]},\"price_period\":{\"type\":[\"string\",\"null\"],\"enum\":[\"one_time\",\"monthly\",\"yearly\",null]},\"effective_date\":{\"type\":[\"string\",\"null\"],\"description\":\"YYYY-MM-DD\"},\"end_date\":{\"type\":[\"string\",\"null\"],\"description\":\"YYYY-MM-DD\"},\"notice_period_months\":{\"type\":[\"integer\",\"null\"]},\"penalty_pct_per_day\":{\"type\":[\"number\",\"null\"]},\"governing_law\":{\"type\":[\"string\",\"null\"]}},\"required\":[\"provider_name\",\"provider_id\",\"client_name\",\"client_id\",\"contract_type\",\"price\",\"currency\",\"price_period\",\"effective_date\",\"end_date\",\"notice_period_months\",\"penalty_pct_per_day\",\"governing_law\"],\"additionalProperties\":false}")
def run(document_text: str) -> dict:
"""Text of the document in, the extracted fields as a dict out."""
response = httpx.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
json={
"model": "qwen/qwen3.8-flash",
"temperature": 0,
"messages": [{"role": "user", "content": f"{PROMPT}\n\n---\n{document_text}"}],
# For a scan or photo, send [{"type": "text", "text": PROMPT},
# {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}] instead.
"response_format": {
"type": "json_schema",
"json_schema": {"name": "contracts", "strict": False, "schema": SCHEMA},
},
},
timeout=120,
)
response.raise_for_status()
return json.loads(response.json()["choices"][0]["message"]["content"])
Tri des e-mails · Français
import json
import os
import httpx
PROMPT = "Vous triez les e-mails du support client. Lisez l'e-mail ci-dessous et renvoyez uniquement du JSON avec ces clés :\n\ncategory l'une des valeurs : billing (factures, paiements, facturation), delivery (où est la commande,\n expédition, changement d'adresse), complaint (marchandise endommagée, erronée ou défectueuse, réclamation),\n technical (connexion, erreur dans une application ou un système, interfaces), cancellation (annulation\n d'une commande, résiliation d'un contrat ou d'un abonnement), sales (demande, prix, intérêt avant l'achat)\npriority l'une des valeurs : urgent, high, normal, low (règles ci-dessous)\nsentiment l'une des valeurs : positive, neutral, negative (ton du client)\ncustomer_name nom complet du client qui a écrit la demande\norder_number numéro de commande du client, s'il est indiqué\ninvoice_number numéro de facture, s'il est indiqué\namount montant dont il est question dans la demande (nombre)\ncurrency code de devise de ce montant selon ISO 4217 (EUR, CZK, USD, …)\ndeadline date à laquelle le client souhaite une solution ou une réponse (YYYY-MM-DD)\n\nRègles de priorité :\n- urgent : le client ne peut pas travailler en ce moment, ou l'échéance tombe au plus 1 jour après la date de l'e-mail\n- high : l'échéance tombe au plus 7 jours après la date de l'e-mail, ou le client menace de mettre fin\n à la collaboration ou d'une escalade (avocat)\n- low : le client écrit expressément que ce n'est pas urgent\n- normal : tout le reste\n\nRègles :\n- Fil de discussion : évaluez le message le plus récent ; les numéros de commande et de facture ainsi que les\n montants peuvent provenir de messages plus anciens cités. E-mail transféré : le client est l'expéditeur d'origine,\n pas le collègue qui l'a transféré.\n- Convertissez les échéances relatives (« d'ici vendredi », « d'ici demain », « d'ici la fin du mois ») à partir de la\n date du message dans lequel elles figurent.\n- Les numéros de ticket du support, les numéros SIREN, SIRET ou RCS, les numéros de TVA et les numéros de téléphone\n ne sont pas des numéros de commande ou de facture.\n- Si une valeur ne figure pas dans l'e-mail, renvoyez null. Ne devinez pas.\n- Montants sous forme de nombres avec un point décimal, sans séparateur de milliers et sans symbole de devise.\n"
SCHEMA = json.loads("{\"type\":\"object\",\"properties\":{\"category\":{\"type\":[\"string\",\"null\"],\"enum\":[\"billing\",\"delivery\",\"complaint\",\"technical\",\"cancellation\",\"sales\",null]},\"priority\":{\"type\":[\"string\",\"null\"],\"enum\":[\"urgent\",\"high\",\"normal\",\"low\",null]},\"sentiment\":{\"type\":[\"string\",\"null\"],\"enum\":[\"positive\",\"neutral\",\"negative\",null]},\"customer_name\":{\"type\":[\"string\",\"null\"]},\"order_number\":{\"type\":[\"string\",\"null\"]},\"invoice_number\":{\"type\":[\"string\",\"null\"]},\"amount\":{\"type\":[\"number\",\"null\"]},\"currency\":{\"type\":[\"string\",\"null\"]},\"deadline\":{\"type\":[\"string\",\"null\"],\"description\":\"YYYY-MM-DD\"}},\"required\":[\"category\",\"priority\",\"sentiment\",\"customer_name\",\"order_number\",\"invoice_number\",\"amount\",\"currency\",\"deadline\"],\"additionalProperties\":false}")
def run(document_text: str) -> dict:
"""Text of the document in, the extracted fields as a dict out."""
response = httpx.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
json={
"model": "qwen/qwen3.8-flash",
"temperature": 0,
"messages": [{"role": "user", "content": f"{PROMPT}\n\n---\n{document_text}"}],
# For a scan or photo, send [{"type": "text", "text": PROMPT},
# {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}] instead.
"response_format": {
"type": "json_schema",
"json_schema": {"name": "emails", "strict": False, "schema": SCHEMA},
},
},
timeout=120,
)
response.raise_for_status()
return json.loads(response.json()["choices"][0]["message"]["content"])
Extraction de factures · Français
import json
import os
import httpx
PROMPT = "Extrayez du document joint les informations suivantes et renvoyez uniquement du JSON avec ces clés :\n\nsupplier_name Nom de l'émetteur de la facture (exactement comme sur le document, accents et forme juridique compris)\nsupplier_id Numéro SIRET de l'émetteur (14 chiffres ; ni le numéro de TVA intracommunautaire ni le seul numéro RCS)\nvat_id Numéro de TVA intracommunautaire de l'émetteur\ninvoice_number Numéro du document\npayment_reference Référence à rappeler lors du paiement\nissue_date Date d'émission (YYYY-MM-DD)\ntax_point_date Date de la livraison ou de la prestation de services (YYYY-MM-DD)\ndue_date Date d'échéance / « à payer avant le » (YYYY-MM-DD)\nnet_by_rate Montant HT par taux de TVA, p. ex. {\"20\": 18450.00, \"5.5\": 1200.00}\nvat_by_rate Montant de la TVA par taux, p. ex. {\"20\": 3690.00}\ntotal Montant total TTC / net à payer (nombre, négatif pour un avoir)\ncurrency Devise selon ISO 4217 (EUR, GBP, …)\nbank_account IBAN de l'émetteur\n\nRègles :\n- Ne renvoyez aucune information concernant le client, uniquement celles de l'émetteur.\n- Si une information ne figure pas sur le document, renvoyez null. N'inventez rien.\n- Si le document ne comporte pas de ventilation de la TVA (micro-entreprise, demande d'acompte), renvoyez net_by_rate et vat_by_rate à null.\n- Montants sous forme de nombres avec un point décimal, sans séparateur de milliers et sans devise.\n"
SCHEMA = json.loads("{\"type\":\"object\",\"properties\":{\"supplier_name\":{\"type\":[\"string\",\"null\"]},\"supplier_id\":{\"type\":[\"string\",\"null\"]},\"vat_id\":{\"type\":[\"string\",\"null\"]},\"invoice_number\":{\"type\":[\"string\",\"null\"]},\"payment_reference\":{\"type\":[\"string\",\"null\"]},\"issue_date\":{\"type\":[\"string\",\"null\"],\"description\":\"YYYY-MM-DD\"},\"tax_point_date\":{\"type\":[\"string\",\"null\"],\"description\":\"YYYY-MM-DD\"},\"due_date\":{\"type\":[\"string\",\"null\"],\"description\":\"YYYY-MM-DD\"},\"net_by_rate\":{\"type\":[\"object\",\"null\"],\"additionalProperties\":{\"type\":\"number\"}},\"vat_by_rate\":{\"type\":[\"object\",\"null\"],\"additionalProperties\":{\"type\":\"number\"}},\"total\":{\"type\":[\"number\",\"null\"]},\"currency\":{\"type\":[\"string\",\"null\"]},\"bank_account\":{\"type\":[\"string\",\"null\"]}},\"required\":[\"supplier_name\",\"supplier_id\",\"vat_id\",\"invoice_number\",\"payment_reference\",\"issue_date\",\"tax_point_date\",\"due_date\",\"net_by_rate\",\"vat_by_rate\",\"total\",\"currency\",\"bank_account\"],\"additionalProperties\":false}")
def run(document_text: str) -> dict:
"""Text of the document in, the extracted fields as a dict out."""
response = httpx.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
json={
"model": "qwen/qwen3.8-flash",
"temperature": 0,
"messages": [{"role": "user", "content": f"{PROMPT}\n\n---\n{document_text}"}],
# For a scan or photo, send [{"type": "text", "text": PROMPT},
# {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}] instead.
"response_format": {
"type": "json_schema",
"json_schema": {"name": "invoices", "strict": False, "schema": SCHEMA},
},
},
timeout=120,
)
response.raise_for_status()
return json.loads(response.json()["choices"][0]["message"]["content"])
Détection des données personnelles · Français
import json
import os
import httpx
PROMPT = "Trouvez dans le texte ci-dessous toutes les données personnelles de personnes physiques (en vue de l'anonymisation) et renvoyez uniquement du JSON\navec ces clés, chacune sous forme de liste de chaînes (une liste vide s'il n'y en a pas) :\n\nperson_names noms complets des personnes, chaque personne une seule fois, tels qu'écrits dans le texte\nemail_addresses adresses e-mail des personnes\nphone_numbers numéros de téléphone des personnes, tels qu'écrits dans le texte\npostal_addresses adresses personnelles ou de livraison des personnes, telles qu'écrites dans le texte (rue, ville, code postal)\nbirth_dates dates de naissance (YYYY-MM-DD)\nnational_ids numéros d'identification nationaux (p. ex. numéro de sécurité sociale)\nbank_accounts numéros de compte bancaire (IBAN) des personnes, tels qu'écrits dans le texte\n\nRègles :\n- Uniquement les données de personnes physiques. Les noms de sociétés, les numéros RCS, SIREN et SIRET, les numéros de TVA\n et autres numéros de sociétés, les adresses génériques de sociétés comme info@ ou support@, les numéros de commande et de\n ticket ne sont pas des données personnelles : omettez-les.\n- Les dates qui ne sont pas des dates de naissance (réunions, livraisons, embauche) ne sont pas des données personnelles.\n- N'inventez et ne complétez aucune valeur ; reprenez-les du texte.\n"
SCHEMA = json.loads("{\"type\":\"object\",\"properties\":{\"person_names\":{\"type\":[\"array\",\"null\"],\"items\":{\"type\":\"string\"}},\"email_addresses\":{\"type\":[\"array\",\"null\"],\"items\":{\"type\":\"string\"}},\"phone_numbers\":{\"type\":[\"array\",\"null\"],\"items\":{\"type\":\"string\"}},\"postal_addresses\":{\"type\":[\"array\",\"null\"],\"items\":{\"type\":\"string\"}},\"birth_dates\":{\"type\":[\"array\",\"null\"],\"items\":{\"type\":\"string\"}},\"national_ids\":{\"type\":[\"array\",\"null\"],\"items\":{\"type\":\"string\"}},\"bank_accounts\":{\"type\":[\"array\",\"null\"],\"items\":{\"type\":\"string\"}}},\"required\":[\"person_names\",\"email_addresses\",\"phone_numbers\",\"postal_addresses\",\"birth_dates\",\"national_ids\",\"bank_accounts\"],\"additionalProperties\":false}")
def run(document_text: str) -> dict:
"""Text of the document in, the extracted fields as a dict out."""
response = httpx.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
json={
"model": "qwen/qwen3.8-flash",
"temperature": 0,
"messages": [{"role": "user", "content": f"{PROMPT}\n\n---\n{document_text}"}],
# For a scan or photo, send [{"type": "text", "text": PROMPT},
# {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}] instead.
"response_format": {
"type": "json_schema",
"json_schema": {"name": "pii", "strict": False, "schema": SCHEMA},
},
},
timeout=120,
)
response.raise_for_status()
return json.loads(response.json()["choices"][0]["message"]["content"])
Badge
Intégrez le résultat actuel sur votre site ; le badge se met à jour à chaque exécution.
<a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/contracts-en.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/contracts-cs.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/contracts-de.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/emails-en.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/emails-cs.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/emails-de.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/invoices-fr.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/invoices-en.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/invoices-cs.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/invoices-de.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/invoices-es.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/pii-en.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/pii-cs.svg" alt="Qwen3.8 Flash on ModelVerdict"></a><a href="https://modelverdict.ai/fr/models/qwen3-8-flash/"><img src="https://modelverdict.ai/badge/qwen3-8-flash/pii-de.svg" alt="Qwen3.8 Flash on ModelVerdict"></a>