# Maîtriser le coût des appels IA dans une extension WordPress

> Un bouton « générer » mal protégé peut transformer une fonctionnalité IA en gouffre financier. Cache, quotas, limitation de débit : les leviers concrets pour garder le contrôle.

- Auteur : Clément Hadrot
- Publié le : 2023-07-11
- Mis à jour le : 2023-07-11
- Catégorie : IA &amp; MCP
- URL : https://wpmoderne.dev.wordpress-developpement.fr/ia-mcp/maitriser-cout-appels-ia-wordpress/

## L’essentiel

- Chaque appel LLM a un coût direct, contrairement à la plupart des appels WordPress classiques
- Le cache évite de payer deux fois pour le même résultat
- Un quota par utilisateur protège contre les abus autant que contre les erreurs

La plupart des appels effectués depuis une extension WordPress — une requête vers une API météo, un service de cartes, un webhook — ont un coût marginal négligeable ou nul. Les appels vers une API de modèle de langage rompent avec cette habitude : chaque génération de texte consomme des jetons (tokens), facturés au volume, aussi bien en entrée qu'en sortie. Une fonctionnalité IA mal conçue peut ainsi transformer un usage anodin en facture surprise, en particulier si le point de terminaison est accessible sans limite à des utilisateurs connectés, voire à des robots.

Cet article détaille les leviers concrets pour garder le contrôle des coûts d'une intégration IA sur WordPress, sans sacrifier l'expérience utilisateur.

## Comprendre ce qui coûte réellement

La facturation des API de modèles de langage repose presque toujours sur le nombre de tokens échangés, un token correspondant approximativement à un mot ou une portion de mot selon la langue. Un appel de génération comporte deux composantes facturées séparément : le texte envoyé en entrée (le prompt, souvent enrichi de contexte) et le texte reçu en sortie. Sur une extension qui envoie systématiquement tout le contenu d'un article pour générer une simple méta-description, le coût du prompt peut dépasser largement celui de la réponse elle-même — un gaspillage fréquent et facile à corriger en ne transmettant que les données réellement nécessaires.

Paramétrer une limite haute de tokens en sortie, via le paramètre généralement nommé `max_tokens` selon les fournisseurs, évite également qu'une réponse démesurément longue ne fasse grimper la facture sans bénéfice pour l'utilisateur.

## Le cache, premier levier d'économie

Sur de nombreux usages WordPress, la même demande revient régulièrement : générer un texte alternatif pour une image déjà traitée, reformuler un extrait déjà soumis. Mettre en cache la réponse évite de payer deux fois pour un résultat identique.

> L'essentiel à retenir : Chaque appel LLM a un coût direct, contrairement à la plupart des appels WordPress classiques ; Le cache évite de payer deux fois pour le même résultat ; Un quota par utilisateur protège contre les abus autant que contre les erreurs

```
function mon_extension_generer_avec_cache( $prompt ) {
    $cle_cache = 'llm_' . md5( $prompt );
    $resultat  = get_transient( $cle_cache );

    if ( false !== $resultat ) {
        return $resultat;
    }

    $resultat = mon_extension_appel_llm( $prompt );

    if ( ! is_wp_error( $resultat ) ) {
        set_transient( $cle_cache, $resultat, DAY_IN_SECONDS );
    }

    return $resultat;
}
```

L'API des transients de WordPress convient bien à ce cas d'usage : elle gère nativement l'expiration et s'appuie sur un cache d'objets externe si le site en dispose (Redis ou Memcached), ce qui évite de solliciter la base de données à chaque lecture. Sur nos projets, ce simple mécanisme a divisé par dix le volume d'appels facturés sur des fonctionnalités où les mêmes contenus revenaient régulièrement en génération.

## Quotas et limitation de débit

Le cache ne protège pas contre un usage volontairement excessif ou un bug qui déclenche des appels en boucle. Un quota par utilisateur, stocké dans les métadonnées utilisateur ou dans un transient dédié, referme cette porte :

- Compter les appels effectués par utilisateur sur une fenêtre glissante (par jour ou par heure)
- Refuser la requête au-delà du seuil, avec un message explicite plutôt qu'une erreur silencieuse
- Prévoir un quota différent selon le rôle, par exemple plus large pour les administrateurs que pour les contributeurs
- Journaliser les dépassements pour repérer un usage anormal ou une tentative d'abus

Sur les extensions destinées à un usage multi-auteurs, ce garde-fou est aussi important pour la maîtrise budgétaire que pour la sécurité : un compte compromis qui déclenche des centaines d'appels en quelques minutes doit être bloqué automatiquement avant que la facture ne s'envole.

## Choisir le bon modèle pour la bonne tâche

Les fournisseurs proposent généralement plusieurs modèles à des tarifs très différents, les modèles les plus capables coûtant nettement plus cher au token que les modèles plus légers. Pour une tâche simple — reformulation courte, génération d'un texte alternatif, classification d'un commentaire — un modèle économique suffit largement et réduit le coût unitaire de façon significative. Réserver le modèle le plus performant aux tâches qui en ont réellement besoin, comme la rédaction d'un article complet, est un arbitrage à faire dès la conception de l'extension plutôt qu'à découvrir après la première facture.

> Le cache le moins cher est celui qui évite un appel qui n'avait pas besoin d'avoir lieu.

## En résumé

Une intégration IA mal maîtrisée sur WordPress n'est pas seulement un risque de sécurité, c'est aussi un risque budgétaire direct. Cache systématique sur les résultats répétables, quotas par utilisateur, limite explicite sur la taille des réponses et choix du modèle adapté à chaque tâche : ces quatre leviers, combinés, gardent le coût d'une fonctionnalité IA proportionné à sa valeur réelle pour les utilisateurs du site.
