Comment intégrer ChatGPT dans un bot Discord pour avoir son propre ChatBot
Dans ce tutoriel, nous vous montrerons comment créer un bot Discord en intégrant ChatGPT d'OpenAI via leur API. Ce chatbot pourra comprendre et répondre aux requêtes des utilisateurs de manière pertinente. Que ce soit pour du support client, animer un serveur Discord ou explorer les avancées en intelligence artificielle, ce guide vous sera utile. Préparez-vous à découvrir comment utiliser ChatGPT pour améliorer votre expérience utilisateur avec les bots Discord.
Les pré-requis
Notez que vous aurez besoin d'une clé API de OpenAI, et de quelques crédits dans votre compte. Le coût d'une requête est de 0,2 cent pour ~4000 caractères de texte. Vous pouvez obtenir des crédits d'une valeur de 18 $ lorsque vous vous inscrivez et ceux-ci devraient durer un certain temps, mais il n'y a actuellement pas de version entièrement gratuite de l'API.
Allez sur OpenAI et cliquez sur 'Créer une nouvelle clé secrète' pour en avoir une. Attention la clé ne pourra pas être affichée une deuxième fois.
Créer un compte sur Replit
Replit est une plateforme de développement en ligne qui permet de créer, exécuter et partager des projets de programmation dans différents langages, directement depuis votre navigateur web. Nous ne voulons pas perdre du temps à configurer un serveur en local, nous allons utiliser Replit qui va nous permettre d'héberger notre bot et d'éditer notre code. Rendez-vous sur leur site et créer un compte.
Importer un environnement de dev sur Replit
Cliquez sur le bouton ci-dessous et clonez (fork) le code pour pouvoir le modifier de votre côté. C'est un Bot Discord en JavaScript, permettant d'interagir avec l'API d'OpenAI.
Créer le bot sur Discord
Pendant que Replit charge votre environnement de travail, vous allez pouvoir vous rendre sur le site Discord Developer portal et créer votre bot.
Connectez-vous avec votre compte et cliquez en haut à droite sur New Application
. Trouvez un nom pour votre application, ne suivez pas mon exemple, un bot ne peut pas avoir Discord
dans son nom.
Récupérer le Bot Token
Nous allons dire à Discord que notre application est un Bot, pour cela allez dans l'onglet Bot
et cliquez sur le bouton pour valider. Ici vous allez pouvoir configurer l'aspect visuel de votre bot, sa photo de profil, son nom, sa bio.
Vous devriez voir un bouton View Token
, il s'agit d'un clé secrète qui va permettre de prendre le contrôle de votre bot, ne la donnez à personne. Copiez ce Token, nous allons en avoir besoin pour la suite.
Paramétrer le bot
Dans l'onglet Bot
nous allons pouvoir définir les permissions de notre bot. Vous pouvez demander à ChatGPT, ou regarder dans la documentation à quoi correspond chaque élément de la liste. Pour des raisons de simplicité je vais lui donner les privilèges Administrator
, mais je vous conseille fortement de ne lui donner que les permissions qui vous seront utiles.
Créer un lien d'invitation pour le Bot
Rendez-vous dans Oauth2
, ici nous allons créer un lien pour ajouter notre bot à notre serveur. N'oubliez pas de créer un serveur sur votre application Discord si vous n'en avez pas encore. Cochez bot
et applications.commands
. Ce dernier indique que nous voulons pouvoir utiliser les slash commands avec notre bot.
Vous pouvez ajouter d'autres fonctionnalités en fonction de vos besoins.
Allez ensuite en bas de la page et copier le lien généré. Collez le dans votre navigateur et sélectionnez le serveur sur lequel ajouter votre bot puis validez.
Votre bot fera son apparition sur votre serveur, mais sera hors-ligne.
Paramétrer l'environnement de dev sur Replit
Maintenant retournons sur Replit, notre environnement devrait être prêt. Nous allons devoir ajouter notre Token dans notre environnement. Pour cela cliquez en bas à gauche sur Secrets
, un onglet va s'ouvrir à droite de l'écran. Ajoutez un secret portant le nom de TOKEN
(dans key
), collez votre token dans value
.
Nous avons aussi besoin d'ajouter notre clé API venant d'OpenAI, toujours dans Secrets
, ajoutez API_KEY
et collez votre clé dans value
.
Il faudra aussi préciser dans quel canal notre bot devra lire les messages. Notre bot va répondre à la totalité des messages se trouvant dans le canal (sauf ceux commençant par "!"), il est préférable d'en créer un uniquement pour lui. Ouvrez les options de Discord et allez dans Avancés
, cochez le Mode développeur
afin de pouvoir trouver l'ID d'un canal. Pour obtenir l'ID, faites un clic-droit sur le canal voulu, et tout en bas cliquez sur Copier l'identifiant
. Maintenant sur Replit, toujours dans Secrets
, créer CHANNEL_ID
et collez l'ID dans value
.
Vous devez avoir ces 3 éléments dans secrets :
- TOKEN
- API_KEY
- CHANNEL_ID
Choisir le modèle
Notre bot, en plus des fonctionnalités de ChatGPT, intègre aussi les fonctionnalités de DALL-E, si vous souhaitez désactiver DALL-E, vers la ligne 13, remplacez true
par false
et DALL-E sera désactivé.
Pour plus d'infos sur le bot DALL-E :
Si vous avez accès à l'API de GPT-4, vous aurez la possibilité d'utiliser la commande /gpt4
dans le canal discord de votre bot. Si ce n'est pas le cas, ou si vous ne savez pas, vous allez devoir utiliser gpt-3.5-turbo
. C'est la configuration de base du chatBot, mais vous pouvez aussi la forcer avec la commande /gpt3
.
Personnaliser le ChatBot
Vers la ligne 110 du code, vous devriez voir :
let conversationLog = [{ role: 'system', content: 'You are DecryptGPT, my personnal assistant. You will answer all my questions and help me on my tasks, by providing me code or whatever.' }];
Ce texte va indiquer à ChatGPT comment se comporter. Modifiez ce qui se trouve dans content: ''
comme vous le souhaitez.
Ajouter une limite
Si vous souhaitez brider votre bot afin de ne pas trop dépenser de token sur l'API, vous pouvez lui mettre une limite de token par requête. Si il dépasse cette limite il ne vous répondra pas. Allez vers la ligne 130 :
const result = await openai
.createChatCompletion({
model: 'gpt-4',
messages: conversationLog,
// max_tokens: 256, // limit token usage
})
.catch((error) => {
console.log(`OPENAI ERR: ${error}`);
});
Retirez les "//" avant max_tokens, et modifiez la valeur par celle de votre choix. 256 étant assez faible, vous pouvez essayer 512.
const result = await openai
.createChatCompletion({
model: 'gpt-4',
messages: conversationLog,
max_tokens: 512, // limit token usage
})
.catch((error) => {
console.log(`OPENAI ERR: ${error}`);
});
Installer les dépendances
En bas à gaucher cliquez sur shell
et écrivez npm install
dans la fenêtre, puis attendez la fin du chargement.
Comment utiliser le bot
Lancer le bot sur Replit
Cliquez sur play
en haut de Replit. Vous devriez voir une fenêtre avec Bot is alive!
s'ouvrir, ainsi que The bot is online!
dans la console. Si vous avez une erreur, copiez la, et collez là à ChatGPT en lui fournissant aussi la totalité de votre code, il vous aidera à résoudre le problème.
Parler avec le bot sur Discord
Votre bot est désormais en ligne, vous pouvez parler avec lui dans le canal présent dans Secrets
.
Ignorer des messages
Le bot peut ignorer des messages, si ils commencent par "!". ChatGPT ne répondra pas à ces messages et ne consommera pas de token.
Si ChatGPT ne répond plus
- Vérifiez que le bot est toujours en ligne, si vous avez la version gratuite de Replit, le bot finira par se mettre en veille. Il faudra alors le relancer.
- Vérifiez la console de replit, si il y a une erreur, elle sera affichée ici. Collez là dans ChatGPT avec votre code.
- Vérifiez les droits de votre bot, il doit avoir le droit d'écrire et de lire les messages.
- Vérifiez votre quota API sur le site d'OpenAI, vous avez peut-être utilisé la totalité de vos tokens.
Conclusion
Ce tutoriel vous a guidé à travers les étapes nécessaires pour créer et intégrer un bot Discord avec ChatGPT d'OpenAI. Grâce à ces connaissances, vous êtes désormais en mesure d'améliorer l'interaction et l'expérience utilisateur sur votre serveur Discord. N'hésitez pas à expérimenter et à personnaliser davantage votre bot pour répondre au mieux aux besoins spécifiques de votre communauté. Bonne continuation et amusez-vous avec votre nouveau chatbot intelligent !