DeepSeek R1 vs OpenAI o3-mini : lequel est fait pour vous ?
Le choc de civilisation. D'un côté un modèle propriétaire américain entraîné avec d'énormes ressources de calcul, de l'autre un modèle open source chinois formé au rabais (2 048 GPU H800 tout de même). 03-mini et R1, les deux modèles de raisonnement d'OpenAI et de DeepSeek, affichent des performances similaires dans les benchmarks mais se distinguent par l'usage. Comparaison de ces deux champions de l'IA de raisonnement.
Une philosophie différente
Annoncé par DeepSeek le 20 janvier, R1 a provoqué un électrochoc dans le monde de l'IA. Un modèle de raisonnement open source frugal, à l'entraînement, aussi performant que les références propriétaires chez OpenAI. Basé sur le principe de la chain of thought, le modèle tire parti de la distillation. Les chercheurs ont pris un modèle instructeur pour former un modèle élève. Les capacités de raisonnement du modèle maitre sont alors transférées progressivement au modèle élève. Dans le cas de R1, de nombreux chercheurs soupçonnent DeepSeek d'avoir utilisé o1 d'OpenAI comme modèle instructeur. Ce qui pourrait expliquer en partie les gains de compute réalisés à l'entraînement pour l'entreprise chinoise.
De son côté, o3-mini d'OpenAI a été annoncé en décembre 2024. Egalement basé sur le principe de la chain of thought, le modèle est disponible dans trois versions différentes : low, medium et high, qui correspondent à sa capacité de raisonnement. En mode high, le modèle effectue plusieurs itérations avant de donner la réponse finale. o3-mini high est ainsi le modèle le plus adapté pour les questions complexes, c'est aussi le meilleur modèle de raisonnement d'OpenAI publiquement accessible, la sortie d'o3 version "classique" étant définitivement abandonnée. C'est ce modèle que nous comparons aujourd'hui à R1.
O3-mini et R1 à égalité dans les benchmarks
Dans les benchmarks, o3-mini surpasse R1 en mathématiques de haut niveau avec 87,3% sur AIME 2024 contre 79,8% pour R1, en programmation avec 2130 points sur Codeforces Rating contre 2029 pour R1 et également en résolution de bugs et génie logiciel avec 49,3% sur SWE-bench Verified contre 49,2% pour R1. De son côté, le modèle chinois se défend bien en connaissances générales multidisciplinaires (médecine, droit, histoire…) avec un score de 90,8% contre 86,9% pour O3-mini sur MMLU ainsi qu'en question réponse sur des connaissances purement factuelles avec 30,1% sur SimpleQA contre seulement 13,8% pour o3-mini.
Benchmark |
o3-mini high |
DeepSeek R1 |
MMLU (Test de connaissances générales) |
86,9% |
90,8% |
AIME 2024 (Compétition de mathématiques de haut niveau) |
87,3% |
79,8% |
SimpleQA (Questions-réponses simples sur des connaissances) |
13,8% |
30,1% |
Codeforces Rating (programmation compétitive) |
2130 |
2029 |
SWE-bench Verified (génie logiciel et résolution de bugs) |
49,3% |
49,2% |
Dans la théorie, o3 serait donc plus pertinent pour les questions nécessitant un raisonnement mathématique ou plus généralement pour la génération de code et la résolution de bugs logiciels. R1 serait plus adapté pour des questions de raisonnement généraliste ou des questions factuelles sur un domaine donné (hors mathématiques et code).
Dans la pratique, o3-mini et R1 se valent
Nous avons comparé les performances de o3-mini sur trois cas d'usage précis : la génération de code, la découverte d'une vulnérabilité logicielle et enfin la recherche web avancée.
Génération de code
Pour ce premier test, nous demandons à l'IA de créer le code d'un générateur aléatoire de mot de passe sécurisé. Les deux versions proposées répondent parfaitement à la demande initiale mais le code proposé par R1 est davantage pertinent. Le code est plus sécurisé, plus maintenable sur la durée, et plus structuré de façon générale. La version proposée par o3-mini a toutefois le mérite d'être plus concise.
Prompt : Crée un générateur avancé de mots de passe sécurisés en Python. Le programme doit permettre à l'utilisateur de choisir la longueur du mot de passe (entre 6 et 64 caractères) et d'inclure ou d'exclure majuscules, minuscules, chiffres et caractères spéciaux. Le mot de passe généré doit toujours contenir au moins un caractère de chaque catégorie sélectionnée. Ajoute une option pour exclure les caractères ambigus (O, 0, I, l, 1). Permets également de générer plusieurs mots de passe en une seule exécution (nombre défini par l'utilisateur). Implémente une vérification de la force du mot de passe en fonction de sa longueur et de sa complexité, et affiche une évaluation (faible, moyen, fort). Assure-toi que le programme est robuste, optimisé et facile à lire, avec une gestion correcte des entrées utilisateur et des erreurs. Ajoute une fonctionnalité optionnelle pour enregistrer les mots de passe générés dans un fichier sécurisé (avec hachage). Fournis un code bien structuré, clair et commenté.
Les résultats du prompt sont à consulter ici.
Découverte de vulnérabilité
Pour ce test nous faisons analyser à l'IA un extrait de code Python utilisant une API. Le problème ? Une injection SQL s'est glissée dans le code. R1 comme o3-mini détectent correctement la faille de sécurité (basique) et proposent tous deux un impact des risques et un patch de correction. Egalité !
Prompt : "Voici un extrait de code Python issu d'une API Flask qui interroge une base de données SQLite en fonction de certains filtres passés par l'utilisateur. Analyse ce code et identifie toute vulnérabilité potentielle. Explique le risque, comment un attaquant pourrait l'exploiter, et propose une solution sécurisée from flask import Flask, request, jsonify import sqlite3 app = Flask(__name__) def get_db_connection(): conn = sqlite3.connect("app.db") conn.row_factory = sqlite3.Row return conn @app.route("/search", methods=["POST"]) def search_users(): data = request.get_json() filters = data.get("filters", {}) base_query = "SELECT * FROM users WHERE 1=1" query_params = [] if "username" in filters: base_query += f" AND username = '{filters['username']}'" if "age" in filters: base_query += f" AND age > {filters['age']}" conn = get_db_connection() result = conn.execute(base_query, query_params).fetchall() conn.close() return jsonify([dict(row) for row in result])."
Les résultats du prompt sont à consulter ici.
Recherche web avancée
Pour ce dernier test, nous demandons à l'IA de mener une recherche web avancée (nativement et sans système agentique dédié comme Deep Research d'OpenAI). Cela permet directement de juger la pertinence des sources utilisées et la synthèse des informations glanées. Nous demandons ainsi à l'IA de produire une veille d'actualité complète.
o3-mini propose une veille davantage pertinente. L'actualité récente de la semaine y est reportée et les sources utilisées apparaissent fiables. De son côté R1 propose une version plus généraliste et moins actualisée. O3-mini semble ainsi plus apte à formuler des requêtes web avancée.
Prompt : "Effectue une recherche approfondie sur les dernières actualités de l'IA en France. Ne te limite pas aux résultats les plus évidents, mais croise plusieurs sources pour identifier des tendances sous-jacentes, des points de controverse et des perspectives nouvelles. Analyse les divergences entre les différentes sources et synthétise une réponse argumentée. Justifie pourquoi certaines sources sont plus crédibles que d'autres, en évaluant leur méthodologie, biais potentiels et leur contexte."
Les résultats du prompt sont à consulter ici.
Une stratégie de pricing différente
OpenAI facture son modèle o3-mini à 1,10 dollar par million de tokens en entrée et 4,40 dollars en sortie, contre 0,55 dollar en entrée et 2,19 dollars en sortie pour le R1 de DeepSeek. Les deux entreprises proposent un système de cache permettant de réduire de moitié le coût des tokens en entrée, faisant respectivement chuter les prix à 0,55 dollar pour o3-mini et 0,14 dollar pour R1. DeepSeek se positionne ainsi comme l'alternative économique, avec des tarifs environ deux fois moins élevés que son concurrent américain. Pour les entreprises souhaitant héberger R1 en local (impossible pour o3, le modèle étant propriétaire), l'infrastructure nécessaire reste conséquente : le modèle requiert une configuration multi-GPU avec au moins 16 NVIDIA A100 80GB, un investissement considérable de l'ordre de 200 000 à 300 000 dollars.
Modèle |
Prix en input (pour 1M tokens) |
Prix en output (pour 1M tokens) |
Prix en input avec le cache (pour 1M tokens) |
OpenAI o3-mini |
1,10 $ |
4,40 $ |
0,55 $ |
DeepSeek R1 |
0,55 $ |
2,19 $ |
0,14 $ |
Si o3-mini conserve une légère avance dans les domaines mathématiques et la programmation, R1 se distingue par ses performances en connaissances générales et sa tarification plus accessible. Les tests pratiques démontrent que les deux modèles sont globalement à égalité en termes de performances, chacun ayant ses points forts spécifiques. Le choix entre les deux dépendra donc principalement des besoins précis des utilisateurs : o3-mini pour les tâches techniques avancées, R1 pour les applications généralistes et les entreprises sensibles aux coûts. Il convient néanmoins de considérer avec prudence l'utilisation de R1 en mode hébergé, la gouvernance des données par les entreprises chinoises manquant encore de transparence.