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 · documents | Rang | Champs corrects | Documents sans erreur | Pour 1 000 documents | À corriger / 1 000 | Vitesse (médiane) | Seuil |
|---|---|---|---|---|---|---|---|
| Clauses contractuelles · Anglais (US) | 8/10 | 98,1 % | 87 % | 2,16 € | 127 | 1,1 s | atteint le seuil |
| Clauses contractuelles · Tchèque | 4/10 | 100,0 % | 100 % | 2,81 € | 0 | 1,2 s | atteint le seuil |
| Clauses contractuelles · Allemand | 8/10 | 97,1 % | 75 % | 2,54 € | 247 | 1,2 s | atteint le seuil |
| Tri des e-mails · Français | 9/10 | 94,1 % | 54 % | 1,64 € | 460 | 0,9 s | sous le seuil |
| Tri des e-mails · Anglais (US) | 9/10 | 94,9 % | 57 % | 1,36 € | 427 | 0,8 s | sous le seuil |
| Tri des e-mails · Tchèque | 9/10 | 94,5 % | 55 % | 1,79 € | 447 | 0,8 s | sous le seuil |
| Tri des e-mails · Allemand | 9/10 | 92,7 % | 48 % | 1,63 € | 520 | 0,8 s | sous le seuil |
| Tri des e-mails · Espagnol | 9/10 | 94,3 % | 56 % | 1,64 € | 440 | 0,9 s | sous le seuil |
| Extraction de factures · Français | 7/10 | 98,2 % | 81 % | 4,42 € | 190 | 2,6 s | atteint le seuil |
| Extraction de factures · Anglais (US) | 7/10 | 97,8 % | 79 % | 4,02 € | 207 | 2,3 s | atteint le seuil |
| Extraction de factures · Tchèque | 9/10 | 93,5 % | 63 % | 4,31 € | 367 | 2,6 s | sous le seuil |
| Extraction de factures · Allemand | 6/10 | 97,4 % | 75 % | 4,34 € | 253 | 2,5 s | atteint le seuil |
| Extraction de factures · Espagnol | 5/10 | 97,0 % | 67 % | 4,37 € | 330 | 2,5 s | atteint le seuil |
| Détection des données personnelles · Anglais (US) | 4/10 | 99,7 % | 98 % | 1,06 € | 20 | 0,8 s | atteint le seuil |
| Détection des données personnelles · Tchèque | 2/10 | 99,8 % | 99 % | 1,29 € | 13 | 0,8 s | atteint le seuil |
| Détection des données personnelles · Allemand | 1/10 | 100,0 % | 100 % | 1,27 € | 0 | 0,9 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
- Prestataire87,3 %
- Client88,7 %
- Identifiant du client99,3 %
Types d'erreurs (nombre de champs)
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)
Tri des e-mails · Français
Champs les plus faibles
- Priorité66,0 %
- Tonalité83,0 %
- Catégorie99,0 %
- Échéance99,0 %
Types d'erreurs (nombre de champs)
Tri des e-mails · Anglais (US)
Champs les plus faibles
- Priorité63,3 %
- Tonalité90,7 %
Types d'erreurs (nombre de champs)
Tri des e-mails · Tchèque
Champs les plus faibles
- Priorité63,3 %
- Tonalité87,3 %
Types d'erreurs (nombre de champs)
Tri des e-mails · Allemand
Champs les plus faibles
- Priorité56,7 %
- Tonalité78,0 %
Types d'erreurs (nombre de champs)
Tri des e-mails · Espagnol
Champs les plus faibles
- Priorité60,0 %
- Tonalité90,0 %
- Échéance99,0 %
Types d'erreurs (nombre de champs)
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)
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)
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)
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)
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)
Détection des données personnelles · Anglais (US)
Champs les plus faibles
- Adresses98,7 %
- Noms99,3 %
Types d'erreurs (nombre de champs)
Détection des données personnelles · Tchèque
Champs les plus faibles
- Noms98,7 %
Types d'erreurs (nombre de champs)
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.
- Tchèque 1,73×
- Allemand 1,39×
- Français 1,36×
- Espagnol 1,38×
- Polonais 1,77×
Taxe linguistique de tous les modèles →
Conformité
- Dans l'UE oui
- Sans conservation (ZDR) oui
- DPA oui
- Poids ouverts non
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
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
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
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
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-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/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/emails-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/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
- Mistral Medium 3.5 vs Claude Sonnet 5
- Mistral Medium 3.5 vs DeepSeek V4.1 Flash
- Mistral Medium 3.5 vs Gemini 3.5 Flash Lite
- Mistral Medium 3.5 vs Gemini 3.8 Flash
- Mistral Medium 3.5 vs Gemma 4 31B
- Mistral Medium 3.5 vs GPT-6 Luna
- Mistral Medium 3.5 vs GPT-6 Sol
- Mistral Medium 3.5 vs Mistral Small 4
- Mistral Medium 3.5 vs Qwen3.8 Flash