Tutoriel
Utiliser l’API de ChatGPT en NodeJS
Dans ce tutoriel, vous allez découvrir que dialoguer avec ChatGPT directement depuis son API est simple comme bonjour !
Et ce grâce notamment au fait qu’OpenAI fournisse leur propre SDK pour NodeJS.
Commençons par la première étape la moins fun mais indispensable pour la suite du tutoriel, la configuration du projet.
Configurer le projet
Récupérer sa clé d’API
Avant toute chose, il faut savoir que chaque appel à l’API de ChatGPT est payant.
Mais ne vous inquiétez pas, les prix sont très bas.
Chaque appel consomme quelques “tokens”, et avec quelques euros, vous pouvez utilisez plusieurs millions de tokens !
Pour commencer à utiliser vos tokens, il faut récupérer votre clé d’API. Pour se faire, rendez-vous sur : https://platform.openai.com/apps
Choisissez
API
, ensuite connectez-vous en cliquant surlogin
, puis dans le panneau de gauche cliquez surAPI keys
Vous pourrez alors cliquer sur le bouton “Create new secret key”, et copier la clé qui vous aura été générée.
Stocker sa clé
Pensez bien à stocker votre clé dans un fichier de configuration appelé .env
, à l’intérieur de votre dossier projet, comme ceci :
CHATGPT_API_KEY=XX-XXXX-XXXXXXXXXXXX
Ne partagez jamais cette clé, et ne l’ajoutez jamais dans un dépôt Git (ajoutez .env à votre .gitignore)
Vérifiez votre solde de crédit
Dans le panneau de gauche sur OpenAI, naviguez vers Billing
pour vérifier que vous possédez quelques crédits dans la section “Free Trial”.
Si ce n’est pas le cas, il faudra ajouter une méthode de paiement, et acheter quelques crédits.
Attention, votre solde pourra mettre quelques minutes à s’actualiser chez OpenAI, il se peut que vos premiers appels API reviennent avec l’erreur “Crédits insuffisants”.
Créer les bases du script
Maintenant que nous avons notre clé d’API dans le fichier .env
de notre projet, nous allons pouvoir installer les dépendances.
Exécutez la commande
npm install --save dotenv openai
dans votre terminal.
Ensuite, il faudra créer un fichier index.js
et y coller le code suivant :
const dotenv = require('dotenv');
const OpenAI = require("openai");
dotenv.config();
const openai = new OpenAI({
apiKey: process.env.CHATGPT_API_KEY,
language: "fr",
});
Vous l’aurez compris, ce script permet simplement de récupérer la clé d’API OpenAI et d’initialiser le SDK avec cette dernière !
Tout le reste du tutoriel se passera dans ce fichier index.js
.
Utiliser le SDK
Pour notre tutoriel nous allons utiliser l’api chat.completion
du SDK, qui est la nomenclature choisie pour dialoguer avec ChatGPT :
// Fonction principale (pour utiliser async/await)
async function main() {
// Envoi des messages à ChatGPT
const completion = await openai.chat.completions.create({
messages: [
{ role: "system", content: "Tu es un assistant poète, ton style est moderne et ton langage soutenu." },
{ role: "user", content: `Rédige un poème de 4 vers, avec des rhymes sous la forme ABBA, sur le thème ${theme}` },
],
model: "gpt-3.5-turbo",
});
// Affichage de la réponse
console.log(completion.choices[0].message);
}
// Appel de la fonction principale pour déclencher le script
main();
À savoir que :
- le role
system
permet d’envoyer des indications de configuration à l’IA - le role user permet de dialoguer directement et de demander une réponse
Voyons maintenant ce qu’il se passe lorsqu’on exécute ce code.
Résultat
Pour lancer notre script, il suffit d’ouvrir un terminal à la racine du projet, et d’exécuter la commande : node index.js
Et voici ce qui sera affiché par notre console.log :
{
role: "assistant",
content:
"En lignes de chiffres, il se dessine (A)\n" +
"L'art mystérieux du code informatique (B)\n" +
"Un langage complexe, une danse magique (B)\n" +
"Où se mêlent génie et machine divine (A)"
}
À savoir évidemment que vous aurez un résultat différent à chaque fois que vous exécuterez votre script.
Comprendre la réponse
Vous aurez remarqué que pour afficher la réponse de l’IA, nous avons été chercher l’objet completion.choices[0].message
mais quelles informations intéressantes contient la réponse de l’API ?
Si vous voulez avoir le détails des propriétés de l’objet réponse, vous pouvez consulter la documentation officielle
Il y a deux informations importantes supplémentaires dans la réponse de l’API :
usage
qui va vous indiquer le nombre de tokens utilisés pour traiter la requête et générer une réponsesystem_fingerprint
qui va nous permettre d’identifier de manière unique la réponse de l’API
Pour l’instant,
system_fingerprint
possède une valeurnull
, nous allons voir pourquoi.
Réponse reproductible
Si vous êtes familier avec l’utilisation de ChatGPT, vous savez que chaque réponse, pour une même requête, est différente.
Heureusement, en utilisant l’API, il est possible de passer au travers de cette contrainte.
Pour générer une réponse identique à chaque requête, il faut utiliser la propriété seed
, comme ceci :
const completion = await openai.chat.completions.create({
messages: [
{ role: "system", content: "Tu es un assistant poète, ton style est moderne et ton langage soutenu." },
{ role: "user", content: `Rédige un poème de 4 vers, avec des rhymes sous la forme ABBA, sur le thème ${theme}` },
],
model: "gpt-3.5-turbo",
seed: 1234
});
Mais attention, l’API fera de son mieux pour donner une réponse en cohérence avec la seed fournie, mais ce n’est pas toujours le cas.
Pour être sûr de recevoir la même réponse, il faudra alors comparer les propriétés system_fingerprint
des réponses !
Générer plusieurs variations de la réponses
Par défaut, chaque requête à l’API ne vous retourne qu’une seule réponse dans la liste choices
, mais il est possible de demander à ChatGPT de générer plusieurs variations de la réponses, grâce au paramètre n
de la requête.
À noter que plus vous demanderez de variations, plus vos tokens seront utilisés rapidement !
Code complet
Voici le code complet du fichier index.js utilisé lors de ce tutoriel :
const dotenv = require('dotenv');
const OpenAI = require("openai");
dotenv.config();
const openai = new OpenAI({
apiKey: process.env.CHATGPT_API_KEY,
language: "fr",
});
const theme = "Le code informatique";
async function main() {
const completion = await openai.chat.completions.create({
messages: [
{ role: "system", content: "Tu es un assistant poète, ton style est moderne et ton langage soutenu." },
{ role: "user", content: `Redige un poème de 4 vers, avec des rhymes sous la forme ABBA, sur le thème ${theme}` },
],
model: "gpt-3.5-turbo",
});
console.log(completion.choices[0].message);
}
main();
Et voilà, vous savez désormais utiliser l’API de ChatGPT en NodeJS !
Pour lire la suite de ce tutoriel, vous devez posséder un compte gratuit