Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Jetons et coût d’un appel

Après cette leçon: Je peux estimer ce que coûte un appel avant de le faire.

Leçon de 60 min3 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Les API de modèles facturent au jeton

La plupart des API de modèles facturent au jeton, pas à l’appel. Une question courte et un long essai ne coûtent pas la même chose.

Estimer le coût avant d’appeler évite une mauvaise surprise sur la facture. Cette leçon vous montre comment.

À la fin de cette leçon

Remarque

Je peux estimer ce que coûte un appel avant de le faire.

Mots clés

MotCe que ça veut dire
Jetonun petit morceau de texte qui est compté et facturé
Jetons d’entréeles jetons que vous envoyez dans la consigne
Jetons de sortieles jetons que le modèle écrit en retour
Prix par millionce que coûte un million de jetons
Budgetle maximum que vous décidez de dépenser

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

On facture l’entrée et la sortie

Vous payez les jetons d’entrée que vous envoyez et les jetons de sortie que le modèle écrit. La sortie coûte en général plus cher par jeton.

Un prix est donné par million de jetons. Les prix de cette leçon sont inventés. Les vrais prix changent : lisez la page du fournisseur.

Exemple travaillé : un appel

PartieJetonsPrix par million, en centimesCoût, en millionièmes de centime
Entrée1 000200200 000
Sortie500800400 000
Total1 500Sans objet600 000, soit 0,6 centime

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Estimer des jetons d’après les caractères

Commande
docker exec -w /home/node/project agent node -e "const texte='Expliquez ce qu’est une clé API en une phrase.';console.log('Caractères : '+texte.length);console.log('Jetons estimés : '+Math.ceil(texte.length/4))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

On peut estimer les jetons avant d’appeler

Pour du texte, un jeton fait à peu près quatre caractères. Un texte de 400 caractères fait donc environ 100 jetons. C’est une estimation grossière, et les langues à accents ou à caractères non latins demandent souvent plus de jetons pour le même sens.

Après un appel, la réponse annonce en général les vrais nombres.

Appeler un modèle et lire les jetons

Commande
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const montrer=(a,b)=>{console.log('Jetons en entrée : '+a+', jetons en sortie : '+b);console.log('Coût aux prix de la leçon : '+(a*200+b*800)+' millionièmes de centime')};(async()=>{try{const r=await fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:'Expliquez ce qu’est une clé API en une phrase.'}],max_tokens:60})});const j=await r.json();if(r.ok===false)throw new Error(r.status+' '+j.error.message);console.log('Réponse : '+j.choices[0].message.content);if(j.usage)montrer(j.usage.prompt_tokens,j.usage.completion_tokens);else console.log('Aucun nombre de jetons annoncé.')}catch(e){console.log('Aucune réponse ('+e.message+'). Exemple enregistré :');console.log('Réponse : Une clé API est un secret qui prouve qu’une requête est la vôtre.');montrer(14,16)}})()"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une limite garde la sortie courte

Vous contrôlez l’entrée en écrivant des consignes courtes. Vous contrôlez la sortie avec max_tokens, qui coupe la réponse à ce nombre de jetons.

Dans une discussion, chaque nouveau tour renvoie les messages précédents. Une longue discussion coûte donc plus cher à chaque tour.

S’arrêter quand le budget est épuisé

Commande
docker exec -w /home/node/project agent node -e "const appels=[[1000,500],[2000,800],[1500,1200],[3000,2000],[500,100]];let depense=0;const limite=4000000;for(let i=0;i<appels.length;i++){const c=appels[i][0]*200+appels[i][1]*800;if(depense+c>limite){console.log('L’appel '+(i+1)+' coûterait '+c+', donc on s’arrête. Dépensé '+depense);break}depense+=c;console.log('Appel '+(i+1)+' : coût '+c+', dépensé '+depense)}"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup de gens pensent que tous les appels coûtent pareil. Le coût grandit avec les jetons d’entrée et de sortie, et une longue discussion renvoie son historique. Comptez les jetons, fixez une limite et décidez du budget avant qu’une boucle ne démarre.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.