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
| Mot | Ce que ça veut dire |
|---|---|
| Jeton | un petit morceau de texte qui est compté et facturé |
| Jetons d’entrée | les jetons que vous envoyez dans la consigne |
| Jetons de sortie | les jetons que le modèle écrit en retour |
| Prix par million | ce que coûte un million de jetons |
| Budget | le 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
| Partie | Jetons | Prix par million, en centimes | Coût, en millionièmes de centime |
|---|---|---|---|
| Entrée | 1 000 | 200 | 200 000 |
| Sortie | 500 | 800 | 400 000 |
| Total | 1 500 | Sans objet | 600 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
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
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é
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.