ModelVerdict

Mistral

Mistral Medium 3.5

Comment Mistral Medium 3.5 de Mistral traite de vrais documents d'entreprise : précision, coût réel, vitesse et où il se trompe.

Prix catalogue : 1,38 € par million de tokens d'entrée, 6,90 € par million de tokens de sortie · mistralai/mistral-medium-3-5

Résultats

Tâche · documentsRangChamps correctsDocuments sans erreurPour 1 000 documentsÀ corriger / 1 000Vitesse (médiane)Seuil
Clauses contractuelles · Anglais (US)8/1098,1 %87 %2,16 €1271,1 satteint le seuil
Clauses contractuelles · Tchèque4/10100,0 %100 %2,81 €01,2 satteint le seuil
Clauses contractuelles · Allemand8/1097,1 %75 %2,54 €2471,2 satteint le seuil
Tri des e-mails · Anglais (US)9/1094,9 %57 %1,36 €4270,8 ssous le seuil
Tri des e-mails · Tchèque9/1094,5 %55 %1,79 €4470,8 ssous le seuil
Tri des e-mails · Allemand9/1092,7 %48 %1,63 €5200,8 ssous le seuil
Extraction de factures · Français7/1098,2 %81 %4,42 €1902,6 satteint le seuil
Extraction de factures · Anglais (US)7/1097,8 %79 %4,02 €2072,3 satteint le seuil
Extraction de factures · Tchèque9/1093,5 %63 %4,31 €3672,6 ssous le seuil
Extraction de factures · Allemand6/1097,4 %75 %4,34 €2532,5 satteint le seuil
Extraction de factures · Espagnol5/1097,0 %67 %4,37 €3302,5 satteint le seuil
Détection des données personnelles · Anglais (US)4/1099,7 %98 %1,06 €200,8 satteint le seuil
Détection des données personnelles · Tchèque2/1099,8 %99 %1,29 €130,8 satteint le seuil
Détection des données personnelles · Allemand1/10100,0 %100 %1,27 €00,9 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

  • Prestataire87,3 %
  • Client88,7 %
  • Identifiant du client99,3 %

Types d'erreurs (nombre de champs)

  • valeur erronée36
  • champ manquant1

Clauses contractuelles · Tchèque

Aucune erreur sur cette tâche.

Clauses contractuelles · Allemand

Champs les plus faibles

  • Identifiant du client80,7 %
  • Identifiant du prestataire82,0 %

Types d'erreurs (nombre de champs)

  • valeur inventée43
  • champ manquant9
  • valeur erronée4

Tri des e-mails · Anglais (US)

Champs les plus faibles

  • Priorité63,3 %
  • Tonalité90,7 %

Types d'erreurs (nombre de champs)

  • valeur erronée69

Tri des e-mails · Tchèque

Champs les plus faibles

  • Priorité63,3 %
  • Tonalité87,3 %

Types d'erreurs (nombre de champs)

  • valeur erronée74

Tri des e-mails · Allemand

Champs les plus faibles

  • Priorité56,7 %
  • Tonalité78,0 %

Types d'erreurs (nombre de champs)

  • valeur erronée98

Extraction de factures · Français

Champs les plus faibles

  • Référence de paiement94,0 %
  • HT par taux95,0 %
  • Devise96,0 %
  • N° de TVA98,0 %

Types d'erreurs (nombre de champs)

  • valeur erronée13
  • valeur inventée7
  • champ manquant4

Extraction de factures · Anglais (US)

Champs les plus faibles

  • HT par taux88,0 %
  • Référence de paiement94,7 %
  • Compte bancaire96,0 %
  • Date de facture98,7 %

Types d'erreurs (nombre de champs)

  • valeur erronée28
  • valeur inventée8
  • mauvais taux1

Extraction de factures · Tchèque

Champs les plus faibles

  • N° de TVA85,3 %
  • Date du fait générateur86,7 %
  • Identifiant du fournisseur (EIN, IČO…)87,3 %
  • Date de facture88,7 %

Types d'erreurs (nombre de champs)

  • valeur erronée99
  • valeur inventée18
  • champ manquant6
  • diacritiques perdus2
  • dates inversées2

Extraction de factures · Allemand

Champs les plus faibles

  • Date du fait générateur90,7 %
  • Référence de paiement92,7 %
  • N° de TVA96,0 %
  • Fournisseur97,3 %

Types d'erreurs (nombre de champs)

  • valeur inventée26
  • valeur erronée18
  • champ manquant5
  • dates inversées2

Extraction de factures · Espagnol

Champs les plus faibles

  • HT par taux85,0 %
  • Référence de paiement93,0 %
  • Date du fait générateur93,0 %
  • N° de TVA94,0 %

Types d'erreurs (nombre de champs)

  • valeur inventée20
  • champ manquant18
  • valeur erronée1

Détection des données personnelles · Anglais (US)

Champs les plus faibles

  • Adresses98,7 %
  • Noms99,3 %

Types d'erreurs (nombre de champs)

  • champ manquant2
  • valeur inventée1

Détection des données personnelles · Tchèque

Champs les plus faibles

  • Noms98,7 %

Types d'erreurs (nombre de champs)

  • valeur inventée2

Détection des données personnelles · Allemand

Aucune erreur sur cette tâche.

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é

EU and ZDR: Mistral. Mistral hosts data in the EU by default.

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 Mistral Medium 3.5 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": "mistralai/mistral-medium-3-5",
            "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": "mistralai/mistral-medium-3-5",
            "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": "mistralai/mistral-medium-3-5",
            "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": "mistralai/mistral-medium-3-5",
            "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/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/contracts-en.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/contracts-cs.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/contracts-de.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/emails-en.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/emails-cs.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/emails-de.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/invoices-fr.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/invoices-en.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/invoices-cs.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/invoices-de.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/invoices-es.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/pii-en.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/pii-cs.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>
<a href="https://modelverdict.ai/fr/models/mistral-medium-3-5/"><img src="https://modelverdict.ai/badge/mistral-medium-3-5/pii-de.svg" alt="Mistral Medium 3.5 on ModelVerdict"></a>

Comparer avec un autre modèle