Le WordPress d'aujourd'hui, décodé pour les développeurs

IA & MCP

Trois fournisseurs de LLM comparés pour dimensionner une file WordPress

Les politiques de rate limiting varient fortement d'un fournisseur de LLM à l'autre. Ce que cela change concrètement pour dimensionner une file d'attente d'appels côté WordPress.

Par Clément Hadrot • 27 mars 2025 • 4 min de lecture • Aucun commentaire
Trois fournisseurs de LLM comparés pour dimensionner une file WordPress

Un rate limit de soixante requêtes par minute chez un fournisseur ne se traduit pas de la même façon qu’un rate limit de soixante requêtes par minute chez un autre, dès lors que l’un compte aussi les tokens consommés dans la limite et que l’autre ne compte que le nombre brut d’appels. Cette nuance, souvent ignorée en phase de conception, détermine pourtant directement la taille de la file d’attente à prévoir côté WordPress.

Le cas étudié ici concerne un traitement par lot : plusieurs centaines de fiches produit à enrichir automatiquement par un LLM, exécutées via Action Scheduler pour étaler la charge dans le temps plutôt que de saturer l’API en un seul passage.

Ce que recouvre réellement un rate limit

Trois fournisseurs comparés ici présentent des politiques de limitation sensiblement différentes. Le premier limite uniquement le nombre de requêtes par minute, sans tenir compte de leur taille. Le second combine une limite de requêtes et une limite de tokens consommés sur la même fenêtre de temps, ce qui pénalise davantage les appels contenant un texte long en entrée. Le troisième applique une limite par organisation plutôt que par clé d’API, ce qui devient un facteur bloquant si plusieurs projets partagent le même compte.

Cette dernière distinction s’est révélée la plus surprenante lors du test : deux projets de la même agence, utilisant la même clé d’API chez ce troisième fournisseur, se sont mutuellement ralentis sans qu’aucun des deux ne dépasse individuellement un volume élevé.

Dimensionner la file d’attente en conséquence

L'essentiel à retenir : Un rate limit par minute ne se traduit pas de la même façon selon qu'il porte sur les requêtes ou sur les tokens ; Une file d'attente mal dimensionnée sature dès le premier pic, quel que soit le fournisseur choisi ; Un mécanisme de nouvelle tentative avec délai croissant reste indispensable, quel que soit le rate limit annoncé
FournisseurType de limiteAppels/minute observés
Fournisseur ARequêtes uniquementLe plus généreux, x5 par rapport au plus restrictif
Fournisseur BRequêtes et tokens combinésVariable selon la taille des textes
Fournisseur CPar organisation, partagée entre projetsLe plus restrictif en usage partagé

Sur Action Scheduler, ce constat se traduit directement dans le paramétrage de l’intervalle entre chaque traitement de lot. Un intervalle fixe, calculé pour le fournisseur le plus généreux, sature immédiatement l’API du fournisseur le plus restrictif si le code est réutilisé sans ajustement.

Exemple de planification adaptative

function planifier_lot_enrichissement( $fiches_restantes ) {
    $intervalle = get_option( 'llm_rate_limit_intervalle', 5 );

    if ( ! empty( $fiches_restantes ) ) {
        $fiche = array_shift( $fiches_restantes );
        as_schedule_single_action(
            time() + $intervalle,
            'enrichir_fiche_produit',
            array( 'fiche_id' => $fiche, 'restantes' => $fiches_restantes )
        );
    }
}

L’intervalle stocké en option plutôt qu’en constante permet d’ajuster le rythme sans redéploiement, un point utile si le fournisseur modifie sa politique de limitation en cours de route, ce qui arrive plus souvent qu’on ne le pense.

La nouvelle tentative avec délai croissant

Quel que soit le fournisseur choisi, un dépassement occasionnel du rate limit reste possible, en particulier lors d’un pic de trafic imprévu sur le site. Un mécanisme de nouvelle tentative avec délai croissant (« backoff exponentiel ») absorbe ces dépassements sans faire échouer le traitement : un premier échec entraîne une nouvelle tentative après quelques secondes, un second échec après un délai plus long, jusqu’à un nombre maximal de tentatives.

Sans ce mécanisme, un simple dépassement ponctuel du rate limit se traduit par un échec définitif de la tâche, ce qui oblige à un traitement manuel des fiches non enrichies — un coût opérationnel bien supérieur à celui d’un mécanisme de nouvelle tentative correctement implémenté.

Le rate limit affiché sur la page de tarification d’un fournisseur ne dit jamais tout : seul un test en conditions réelles, avec le volume et la taille de contenu réellement prévus, révèle la limite qui compte vraiment.

Notre verdict

Le rate limiting ne se compare pas sur un seul chiffre affiché : il dépend de ce qu’il mesure réellement (requêtes, tokens, organisation) et de la façon dont la file d’attente WordPress est dimensionnée en conséquence. La question du coût par token de chacun de ces fournisseurs reste un sujet distinct, non traité dans ce comparatif centré sur le débit d’appels soutenable.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi