ModelVerdict

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 · documentsRangChamps correctsDocuments sans erreurPour 1 000 documentsÀ corriger / 1 000Vitesse (médiane)Seuil
Clauses contractuelles · Anglais (US)9/1095,1 %69 %0,57 €30714,1 satteint le seuil
Clauses contractuelles · Tchèque8/1099,9 %99 %0,58 €1313,6 satteint le seuil
Clauses contractuelles · Allemand6/1098,0 %87 %0,72 €12719,7 satteint le seuil
Tri des e-mails · Anglais (US)6/1097,5 %79 %0,28 €2138,9 satteint le seuil
Tri des e-mails · Tchèque3/1098,5 %87 %0,41 €13313,0 satteint le seuil
Tri des e-mails · Allemand4/1097,9 %81 %0,36 €18712,1 satteint le seuil
Extraction de factures · Français10/1090,6 %82 %1,13 €18019,8 ssous le seuil
Extraction de factures · Anglais (US)10/1082,4 %57 %1,06 €42717,4 ssous le seuil
Extraction de factures · Tchèque10/1091,8 %77 %0,94 €23317,0 ssous le seuil
Extraction de factures · Allemand10/1093,5 %87 %1,03 €12719,0 ssous le seuil
Extraction de factures · Espagnol10/1087,9 %74 %1,28 €26022,3 ssous le seuil
Détection des données personnelles · Anglais (US)10/1099,2 %99 %0,26 €137,5 satteint le seuil
Détection des données personnelles · Tchèque10/1097,0 %89 %0,37 €1139,6 satteint le seuil
Détection des données personnelles · Allemand9/1099,6 %99 %0,33 €712,2 satteint 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)

  • valeur erronée92
  • champ manquant3

Clauses contractuelles · Tchèque

Champs les plus faibles

  • Type de contrat98,7 %

Types d'erreurs (nombre de champs)

  • valeur erronée2

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)

  • valeur inventée14
  • JSON invalide13
  • champ manquant12

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)

  • valeur erronée33
  • valeur inventée1

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)

  • valeur erronée20

Tri des e-mails · Allemand

Champs les plus faibles

  • Tonalité84,7 %
  • Priorité96,0 %

Types d'erreurs (nombre de champs)

  • valeur erronée29

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)

  • JSON invalide65
  • champ manquant49
  • valeur inventée5
  • valeur erronée3

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)

  • JSON invalide154
  • champ manquant83
  • mauvais taux23
  • valeur erronée18
  • valeur inventée13

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)

  • JSON invalide65
  • champ manquant41
  • valeur erronée36
  • mauvais taux16
  • valeur inventée1
  • HT au lieu du TTC1

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)

  • JSON invalide117
  • valeur inventée8
  • valeur erronée2

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)

  • JSON invalide130
  • champ manquant14
  • valeur inventée10
  • valeur erronée2
  • diacritiques perdus1

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)

  • valeur inventée5
  • valeur erronée2
  • champ manquant1

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)

  • valeur erronée13
  • JSON invalide7
  • valeur inventée6
  • champ manquant6

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)

  • champ manquant4

Taxe linguistique

Combien de tokens en plus ce modèle consomme pour le même texte qu'en anglais.

Taxe linguistique de tous les modèles →

Conformité

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

Python · httpx · OpenRouter
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

Python · httpx · OpenRouter
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

Python · httpx · OpenRouter
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

Python · httpx · OpenRouter
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>

Comparer avec un autre modèle