J'ai passé tout un samedi après-midi à brancher les deux modèles stars du moment sur la même interface, avec un roman de 600 000 caractères, pour voir lequel encaisse vraiment 100 000 tokens sans perdre le fil. Ce que je raconte ici, ce sont les chiffres exacts que j'ai lus sur mon écran, pas ceux des brochures marketing.

Pourquoi j'ai voulu tester Grok 4.1 face à GPT-5.5 sur du long texte

Quand on doit résumer un contrat de 200 pages, retrouver une clause perdue dans un PDF juridique, ou suivre un personnage sur 800 pages de roman, le modèle que vous choisissez change tout au Résultat. Entre Grok 4.1 (la nouvelle fenêtre longue de xAI) et GPT-5.5 (la dernière itération d'OpenAI), les promesses commerciales sont belles, mais les chiffres du terrain racontent souvent une autre histoire. Comme je suis totalement débutant en API, j'ai tout documenté étape par étape pour que vous puissiez reproduire ce benchmark sans rien connaître au code. Pas de jargon, pas de raccourci obscur, vous copiez-collez et vous obtenez vos propres mesures.

Prérequis : ce qu'il vous faut avant de commencer

Étape 1 : préparer l'environnement en 5 minutes

Ouvrez un terminal (Mac : Applications > Terminal ; Windows : tapez « PowerShell » dans le menu Démarrer ; Linux : votre terminal habituel). Tapez ensuite les commandes ci-dessous, une par une, en appuyant sur Entrée après chacune.

python -m venv mon_test_llm
source mon_test_llm/bin/activate          # Sur Windows : mon_test_llm\Scripts\activate
pip install --upgrade openai pandas

Capture à garder : la fenêtre du terminal affichant la dernière ligne « Successfully installed openai-X.X.X pandas-X.X.X ».

Étape 2 : récupérer un long texte de référence

Pour comparer honnêtement, j'ai pris Les Misérables de Victor Hugo en version française (téléchargement gratuit sur le site du Projet Gutenberg, format .txt). Le fichier pèse environ 600 000 caractères, soit environ 160 000 tokens. Placez-le dans le même dossier que votre futur script Python, et renommez-le miserables.txt.

Capture à garder : votre explorateur de fichiers ouvert sur le dossier, montrant miserables.txt et sa taille (clic droit > Propriétés > Taille, par exemple 1,2 Mo).

Étape 3 : le code complet du benchmark (copiez-collez tel quel)

Dans le même dossier, créez un fichier benchmark.py (clic droit > Nouveau > Document texte, renommez-le en benchmark.py). Ouvrez-le avec le Bloc-notes, VS Code, ou n'importe quel éditeur, et collez ce contenu :

import os
import time
import json
from openai import OpenAI

1) Configuration : on se branche sur HolySheep AI

client = OpenAI( api_key=os.getenv("HOLYSHEEP_KEY", "YOUR_HOLYSHEEP_API_KEY"), base_url="https://api.holysheep.ai/v1" # OBLIGATOIRE : ne jamais laisser la valeur par défaut )

2) Chargement du long texte

with open("miserables.txt", "r", encoding="utf-8") as f: texte = f.read()[:100000] # on garde 100 000 caractères (≈ 25 000 tokens) question = """Liste les 10 personnages principaux du roman. Pour chacun, donne : nom, rôle social, et UNE phrase de description (15 mots max)."""

3) Fonction de test, réutilisable pour les deux modèles

def tester(modele, label): print(f"\n========== {label} ==========") debut = time.perf_counter() try: response = client.chat.completions.create( model=modele, messages=[ {"role": "system", "content": "Tu es un assistant expert en littérature française du XIXe siècle."}, {"role": "user", "content": f"Texte :\n\n{texte}\n\n{question}"} ], temperature=0.0, # zéro créativité pour comparer honnêtement max_tokens=600 ) latence_ms = round((time.perf_counter() - debut) * 1000) contenu = response.choices[0].message.content usage = response.usage print(f"Latence mesurée : {latence_ms} ms") print(f"Tokens envoyés : {usage.prompt_tokens}") print(f"Tokens recus : {usage.completion_tokens}") print("Aperçu réponse :") print(contenu[:400]) return {"modele": label, "latence_ms": latence_ms, "tokens_in": usage.prompt_tokens, "tokens_out": usage.completion_tokens, "reponse": contenu} except Exception as e: print(f"ERREUR : {type(e).__name__} -> {e}") return None

4) Lancement du test comparatif

resultats = [] for m in [("grok-4.1", "Grok 4.1"), ("gpt-5.5", "GPT-5.5")]: r = tester(*m) if r: resultats.append(r)

5) Sauvegarde au format JSON

with open("resultats.json", "w", encoding="utf-8") as f: json.dump(result