TIPS 28 · LIMITE

Trois cents euros en une nuit

Le prompt pour que Claude ajoute une limite de requêtes à votre app, et comment régler le plafond et l'alerte de dépenses dans le service d'IA. Plus le test pour voir si ça marche.

Ce que c'est et pourquoi ça compte

Si votre app appelle un service d'intelligence artificielle, chaque requête, c'est vous qui la payez. Pas l'utilisateur qui appuie sur le bouton : vous, avec la clé que vous avez mise sur le serveur.

Presque toujours, pourtant, personne n'a écrit de limite. Il suffit d'un bot, d'un script laissé en marche, de quelqu'un qui clique cent fois ou qui a trouvé votre clé : les requêtes partent l'une après l'autre, même la nuit, et vous ne vous en rendez compte que quand la facture arrive.

Claude Code vous écrit en un instant la fonction qui appelle l'IA. La limite, souvent, non : il ne l'ajoute pas parce que personne ne la lui a demandée. Quelques lignes de code et un réglage suffisent, mais c'est à vous de les demander.

Il faut deux protections différentes, et l'une ne remplace pas l'autre :

  • La limite de requêtes se trouve dans votre code. Elle dit : cette personne peut faire au maximum tant de requêtes par minute. C'est Claude qui l'écrit.
  • Le plafond de dépenses se trouve dans le tableau de bord du service d'IA. Il dit : ce mois-ci, on ne dépasse pas ce montant. C'est vous qui le réglez, à la main.

La limite arrête les abus de tous les jours. Le plafond, c'est le filet en dessous : il vous sauve quand la limite a une faille, ou quand la clé tombe entre de mauvaises mains et que quelqu'un l'utilise sans passer par votre app.

1. La limite dans le code

Ouvrez Claude Code dans le dossier de votre app (depuis le terminal : entrez dans le dossier et tapez claude) et collez ceci :

Le prompt
Mon app appelle un service d'intelligence artificielle. Trouve tous les endroits du code d'où part une requête vers l'IA. Ensuite :
1. mets une limite de requêtes par personne et par minute sur ces endpoints (par utilisateur s'il est connecté, par adresse IP sinon), avec un message clair du genre 'Trop de requêtes, réessaie dans une minute' ;
   si l'app tourne en serverless ou sur plusieurs instances, le compteur doit être dans un stockage partagé (par exemple Redis), pas dans la mémoire du serveur ;
2. vérifie que la clé de l'IA est uniquement sur le serveur et jamais dans le code qui arrive au navigateur ou au téléphone ;
3. à la fin, explique-moi avec des mots simples ce que tu as changé et comment le tester.

Ce que ça veut dire, en mots simples

  • Endpoint : c'est l'adresse de votre serveur que l'app appelle quand l'utilisateur appuie sur le bouton. Le contrôle se fait là, pas dans l'app : un contrôle dans l'app ou dans le navigateur se contourne en un instant.
  • Par utilisateur ou par IP : si la personne est connectée, vous la reconnaissez à son compte. Sinon, vous n'avez que son adresse IP. Ce n'est pas parfait, parce que plusieurs personnes peuvent avoir la même IP et que celui qui veut abuser peut la changer, mais ça arrête la plupart des cas.
  • Stockage partagé : sur un hébergement serverless, et en général quand l'app tourne sur plusieurs copies du serveur, chaque requête peut tomber sur une copie différente. Un compteur dans la mémoire d'une copie ne voit que ses propres requêtes et se remet à zéro quand cette copie s'arrête. C'est pour ça qu'il doit être à un endroit que toutes voient : Redis ou votre base de données.
  • Clé uniquement sur le serveur : tout ce qui arrive au navigateur ou au téléphone peut être lu. Une clé dans l'app est, en pratique, publique. Attention aux variables que certains frameworks envoient exprès au navigateur, comme celles qui commencent par NEXT_PUBLIC_ dans Next.js, VITE_ dans Vite ou EXPO_PUBLIC_ dans Expo : la clé de l'IA ne doit jamais s'y trouver.

Quel chiffre choisir

Le prompt ne dit pas combien de requêtes par minute. Si Claude vous le demande, pensez au nombre de fois qu'une vraie personne utilise cette fonction en une minute et gardez un peu de marge. Mieux vaut commencer bas : l'augmenter ensuite est facile.

La limite par minute ne suffit pas à elle seule. Quelques requêtes par minute, répétées toute la nuit, font quand même des milliers de requêtes. Si la fonction coûte cher, ajoutez une limite par jour :

Le prompt
Ajoute aussi une limite quotidienne par utilisateur sur les mêmes requêtes vers l'IA, en utilisant le même stockage partagé que pour la limite par minute. Quand elle est dépassée, affiche un message clair du genre 'Tu as atteint la limite d'aujourd'hui, réessaie demain'.

2. Le plafond de dépenses

Ça, c'est vous qui le faites, pas Claude. Il faut deux minutes.

  1. Allez dans le tableau de bord du service d'IA que vous utilisez et cherchez la partie facturation ou limites d'utilisation.
  2. Réglez un plafond mensuel. Choisissez un chiffre que vous pouvez vous permettre de perdre lors d'une mauvaise nuit.
  3. Lisez ce qui se passe quand le plafond est atteint. C'est l'étape que presque tout le monde saute.

Attention : tous les services n'arrêtent pas vraiment les requêtes au plafond, certains vous envoient seulement une alerte. Alors ne vous fiez pas au nom du réglage : vérifiez dans la documentation de votre service ce que fait réellement cette limite. La différence est entre « bloque les requêtes » et « vous envoie une notification ».

Si votre tableau de bord ne propose que l'alerte, utilisez des crédits prépayés avec la recharge automatique désactivée : une fois les crédits épuisés, les requêtes s'arrêtent. Là aussi, vérifiez que votre service fonctionne bien ainsi avant de compter dessus.

Si l'app utilise d'autres services payants, comme l'envoi de SMS ou les cartes, refaites la même vérification pour chacun.

3. L'alerte

Dans le même tableau de bord, si l'option existe, activez un e-mail d'alerte quand vous arrivez à la moitié du plafond. Envoyez-le à une adresse que vous lisez vraiment.

La raison est simple : un plafond qui bloque les requêtes arrête aussi vos vrais utilisateurs. L'alerte à mi-chemin vous laisse le temps de comprendre ce qui se passe, si ce sont de vraies personnes qui utilisent l'app ou un abus, avant que l'app cesse de répondre.

4. Le test

Une limite que vous n'avez pas testée, c'est une limite dont vous ne savez pas si elle existe. Demandez à Claude :

Le prompt
Écris un petit script qui appelle mon endpoint d'IA 30 fois en une minute avec le même utilisateur de test et dis-moi combien de requêtes passent et combien sont bloquées.

Si elles passent toutes, la limite ne fonctionne pas : faites-la corriger avant de publier.

  • Faites le test sur la version locale ou de test de l'app, pas sur celle qu'utilisent vos utilisateurs. Les requêtes qui passent arrivent vraiment à l'IA.
  • Si la limite que vous avez choisie est supérieure à 30 par minute, augmentez aussi le nombre dans le test, sinon elles passent toutes même avec une limite qui marche.
  • Si l'app tourne en serverless, refaites le test aussi sur la version de test en ligne. En local, il n'y a qu'un seul serveur, et un compteur gardé en mémoire semble marcher même quand il ne marcherait pas en ligne.

Les erreurs les plus courantes

  • Mettre la limite seulement dans l'app ou dans le navigateur. Ça se contourne facilement : le contrôle se fait sur le serveur, dans l'endpoint.
  • Garder le compteur dans la mémoire du serveur en serverless. Chaque copie compte de son côté : utilisez Redis ou la base de données.
  • Régler le budget dans le tableau de bord et se croire protégé. Parfois, ce n'est qu'une alerte : vérifiez ce qu'il fait réellement et, si besoin, utilisez des crédits prépayés sans recharge automatique.
  • Laisser la clé de l'IA dans le code de l'app ou dans une variable publique. Déplacez-la sur le serveur et, si elle s'est déjà retrouvée dans une app publiée, supprimez-la depuis le tableau de bord et créez-en une nouvelle.
  • Protéger un endpoint et en oublier un autre. Demandez à Claude de lister tous les endroits d'où part une requête vers l'IA et vérifiez que la limite est sur chacun.
  • Ne pas tester la limite. Lancez le script de test avant de publier, chaque fois que vous modifiez ces parties.

Check-list

  • Limite de requêtes sur chaque endpoint qui appelle l'IA
  • Compteur dans un stockage partagé (Redis ou base de données)
  • Clé de l'IA uniquement sur le serveur
  • Plafond mensuel réglé dans le tableau de bord du service
  • Vérifié si le plafond bloque les requêtes ou envoie seulement une alerte
  • E-mail d'alerte à la moitié du plafond
  • Test de 30 requêtes fait, avec une partie bloquée

Questions fréquentes

J'ai peu d'utilisateurs, est-ce que j'en ai vraiment besoin ?

Oui. Le problème, ce ne sont pas les vrais utilisateurs, ce sont les bots et les scripts, qui se moquent du nombre d'utilisateurs que vous avez. Un endpoint ouvert sur internet peut être trouvé même si personne ne connaît l'app.

C'est quoi, Redis ? Est-ce que je dois installer quelque chose ?

C'est un stockage très rapide, souvent utilisé justement pour les compteurs. Beaucoup d'hébergeurs le proposent comme service prêt à l'emploi. Si vous ne voulez rien ajouter, la base de données que vous utilisez déjà convient aussi : dites-le à Claude et il l'utilisera pour le compteur.

Est-ce que la limite ralentit l'app ?

Pas pour ceux qui l'utilisent normalement : c'est un contrôle très rapide avant la requête, et personne ne le remarque. Seul celui qui dépasse la limite s'en aperçoit, et il voit le message.

Si le plafond bloque tout, est-ce que mon app cesse de fonctionner ?

La partie qui utilise l'IA, oui, jusqu'à ce que vous releviez le plafond ou rechargiez les crédits. C'est pour ça qu'il faut l'alerte à mi-chemin : elle vous laisse le temps de savoir si c'est une vraie croissance ou un abus, avant que ça arrive.

← Tous les guides