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 sur login, puis dans le panneau de gauche cliquez sur API 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éponse
  • system_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 valeur null, 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