ChatBot: Écrire un chatbot Discord avec GPT-3

ChatBot: Écrire un chatbot Discord avec GPT-3

Il y a plusieurs semaines, Replit s’est associé à 1729 pour organiser un défi d’écriture d’un bot Discord. J’ai remporté le grand prix en construisant un alimenté par l’IA.

Apprenez à créer un bot Discord avec Replit

Créez un avec quelques lignes de code. Gagnez 100 à 1000 $ en Bitcoin si votre bot est bon.

ChatBot: Écrire un chatbot Discord avec GPT-3
Le défi original du bot Discord en 1729.

Le bot gagnant a tiré parti de GPT-3 pour discuter intelligemment avec les gens et écrire du code React à la volée. Comment tout cela fonctionne-t-il ? Explorons comment cela s’est produit !

Pour le défi 1729, j’ai écrit un bot Discord nommé « Cloudy – The Hacker’s Assistant ». Le bot a fourni divers utilitaires pour les communautés en ligne, notamment :

  • Chat conversationnel intelligent (avec mémoire) 💬
  • Génération de code composant React 💻
  • Interrogation de la blockchain Ethereum 💱
  • Cartes à la demande pour Parmi nous 🕹️

Pour avoir un avant-goût de Cloudy en action, regardez la vidéo de démonstration ci-dessous.

La vidéo de démonstration de Cloudy. C’est une bonne introduction si vous voulez voir Cloudy en action et en savoir plus sur toutes ses fonctionnalités.

Lors de la conception de Cloudy, mon modèle mental a divisé le bot en quelques sections distinctes. Plus précisément, il y avait trois couches principales :

  1. L’infrastructure derrière les robots Discord. ️
  2. Interagir avec les API d’apprentissage automatique. ??
  3. Déploiement de votre bot. ??

Tous les robots Discord ont besoin d’un certain degré d’échafaudage avant de commencer. Cloudy s’appuie sur les API d’apprentissage automatique pour alimenter son chat conversationnel et sa génération de code. Il y a aussi une question d’expédition du bot afin qu’il puisse réellement aider les vrais utilisateurs.

Une fois que vous aurez compris les trois couches, vous devriez être en mesure de créer votre propre version de Cloudy. Si à tout moment vous êtes confus, n’hésitez pas à vous référer au code source de Cloudy.

MrPickles/Cloudy-the-Discord-Bot

Cloudy est un bot Discord convivial, conçu pour aider le pirate informatique. Il peut faire diverses choses, y compris un chat réaliste et la génération de code. – MrPickles/Cloudy-the-Discord-Bot

ChatBot: Écrire un chatbot Discord avec GPT-3
Le code source de Cloudy. Il sert de bonne référence lors de l’écriture de vos propres bots Discord.

Configurer un Bot Discord générique ️🏗️

Tous les robots Discord partagent des propriétés communes que chaque développeur doit comprendre. Ceux-ci sont également obligatoires pour commencer.

Création d’une application

Vous devrez d’abord configurer une application Discord. L’application vous accorde un accès API et un compte bot à utiliser. Il existe déjà des instructions pas à pas pour créer une application.

Le processus de configuration d’une application est plus complexe en ce qui concerne les autorisations. Si vous ne disposez pas des autorisations appropriées, votre bot peut ne pas fonctionner. Par conséquent, il est bon de savoir ce que vous voulez que votre bot fasse avant de l’inviter sur un serveur Discord.

ChatBot: Écrire un chatbot Discord avec GPT-3
Il est essentiel de définir les autorisations de bot appropriées, sinon votre bot pourrait ne pas fonctionner. Ce sont les autorisations que Cloudy utilise.

À tout le moins, un bot aura besoin du bot portée. Les bots capables de prendre des commandes auront également besoin du applications.commands portée. Les autorisations de bot nécessaires varient en fonction de la fonctionnalité spécifique du bot. Ceux-ci devraient être raisonnablement simples. Par exemple, Cloudy utilise trois autorisations :

  • Send Messages
  • Embed Links
  • Add Reactions

Bibliothèques clientes

Avant de plonger trop profondément dans les mauvaises herbes, il est bon de préciser ce qu’est un bot Discord est en fait.

Discord expose de nombreuses API pour récupérer les mises à jour au sein d’un serveur Discord. Beaucoup d’entre eux prennent la forme de webhooks, de sorte que les développeurs obtiennent des mises à jour en temps réel. L’API de Discord permet également aux développeurs de publier au nom des applications.

Ainsi, un bot Discord est un programme qui interroge les serveurs de Discord et publie des mises à jour si nécessaire. C’est assez simple si vous y réfléchissez.

ChatBot: Écrire un chatbot Discord avec GPT-3
Le cycle de vie d’un bot Discord. Votre code communique en permanence avec le serveur de Discord afin de récupérer et d’envoyer des mises à jour.

De nombreuses bibliothèques clientes éliminent assez bien les API Discord. Au lieu de traiter les appels d’API, les développeurs gèrent simplement la logique événementielle. Ils n’ont qu’à programmer ce qui se passe lorsqu’il y a une mise à jour pertinente de Discord. Cloudy a été écrit en utilisant l’une de ces bibliothèques. Choisissez votre langage de programmation préféré et vous trouverez probablement une bibliothèque cliente décente. Après cela, démarrer avec un bot en cours d’exécution devient simple.

Commandes de barre oblique

Les bibliothèques clientes devraient suffire pour la plupart des cas d’utilisation (comme les s). Cependant, la plupart ne prennent pas en charge l’envoi de commandes aux robots. Après des années de plaintes, Discord a finalement ajouté un support de première classe pour les vraies commandes de bot. Celles-ci sont appelées commandes slash.

Vidéo d’annonce officielle de Discord pour les commandes slash. C’est l’une des rares publicités que j’aime vraiment regarder.

Les commandes de barre oblique fonctionnent bien pour des actions spécifiques déclenchées par l’utilisateur, telles que la modification de paramètres. Par exemple, Cloudy expose des commandes pour changer son mode de discussion et récupérer des cartes Parmi nous. Pour presque tout le reste, il peut gérer les choses lorsqu’il reçoit des messages.

Notez que les commandes slash sont une fonctionnalité assez récente. Ainsi, la plupart des bibliothèques clientes ne prennent pas en charge cette fonctionnalité. Cloudy utilise une bibliothèque d’extensions pour prendre en charge les commandes slash. Cependant, vous devez noter que ces extensions peuvent ne pas exister pour toutes les langues.

Avec toutes les infrastructures en place, voici à peu près les étapes à suivre :

  1. Créez une application Discord.
  2. Définissez les autorisations appropriées pour votre bot.
  3. Choisissez une bibliothèque cliente et initialisez votre référentiel.
  4. Trouvez une bibliothèque d’extensions qui prend en charge les commandes slash.
  5. Développez la logique métier de votre bot.

À ce stade, vous devriez avoir l’échafaudage que tous les robots Discord contiennent. L’étape suivante consiste à élaborer la logique réelle du bot, qui divergera en fonction de ce que vous voulez. Dans la section suivante, nous verrons comment Cloudy exploite OpenAI pour des conversations intelligentes.

Travailler avec des API d’apprentissage automatique 🤖

La principale caractéristique de Cloudy offre un chat conversationnel réaliste. Les réponses elles-mêmes sont générées par GPT-3, un modèle d’apprentissage automatique basé sur du texte. Sous le capot, OpenAI gère une grande partie du travail des jambes. Mais vous devez mettre les choses en place correctement, sinon les résultats n’ont plus de sens. Les ordures dedans, les ordures dehors.

ChatBot: Écrire un chatbot Discord avec GPT-3
Avec GPT-3, vous pouvez générer des réponses de chat telles que les robots peuvent émuler une conversation normale.

Le cycle de vie de bout en bout d’une conversation avec Cloudy ressemble à ceci :

  1. L’utilisateur envoie un message sur Discord.
  2. Nuagez le message des serveurs de Discord.
  3. Cloudy génère une invite spéciale pour GPT-3 et l’envoie à OpenAI.
  4. OpenAI demande à GPT-3 de générer une prédiction et d’envoyer les résultats à Cloudy.
  5. Cloudy convertit la prédiction en une réponse de chat et l’envoie à Discord.

Cependant, une vue d’ensemble de haut niveau ne suffit pas pour répondre à quelques questions fondamentales :

  • Qu’est-ce que GPT-3 et comment y accéder ?
  • Comment transmettre les données pertinentes à GPT-3 ?

Ceux-ci ont des réponses plus nuancées qui méritent d’être couvertes en détail.

Configuration de l’API OpenAI

Pour générer des réponses de chat réalistes, Cloudy utilise un modèle d’apprentissage automatique appelé GPT-3. GPT-3 est le dernier d’une famille de modèles de prédiction de langage créés par OpenAI. Pour ces modèles de langage, les appelants peuvent transmettre du texte comme invite initiale. Le modèle génère ensuite du texte pour terminer l’invite.

OpenAI

OpenAI est une société de recherche et de déploiement d’IA. Notre mission est de faire en sorte que l’intelligence artificielle générale profite à toute l’humanité.

ChatBot: Écrire un chatbot Discord avec GPT-3
OpenAI est le groupe de recherche derrière GPT-3. Vous pouvez utiliser leurs modèles ML via leur API.

Par exemple, GPT-3 peut recevoir un extrait de texte en entrée, comme dans l’exemple ci-dessous.

Il était une fois…

Il générera alors un texte qui sera considéré comme la suite la plus probable de ce qu’il a reçu. (La longueur de continuation et d’autres conditions de terminaison peuvent être paramétrées.) La sortie de l’exemple peut ressembler à la phrase suivante.

Il était une fois un chat endormi. Son nom était Fluffy.

Malheureusement, GPT-3 n’est pas open source, contrairement à ses prédécesseurs. Elle n’est disponible qu’en tant qu’API fermée (et payante). Pour accéder à l’API, vous devrez vous inscrire sur leur liste d’attente. Malgré les obstacles à l’accès au modèle, GPT-3 est le meilleur qui soit en termes de complétion de texte. Une fois que vous avez accès à l’API OpenAI, l’invocation de GPT-3 est simple. Passez-lui une invite et le modèle génère du texte.

Utiliser GPT-3 dans une vraie application

C’est bien d’avoir un modèle d’apprentissage automatique puissant, mais cela n’a aucun sens tant que nous ne l’avons pas mis en œuvre. En pratique, cela signifie convertir les données de votre application en une invite que GPT-3 comprend. Cela implique également de transformer la sortie de GPT-3 en quelque chose d’utile pour votre application.

Pour la fonction de chat de Cloudy, nous créons une invite de démarrage à l’aide des données de chat précédentes. Du point de vue de GPT-3, il prédit ce que dirait Cloudy, étant donné un journal de discussion.

À la réception d’un message, Cloudy construit un « journal de discussion » à partir de tous les messages précédents dans un canal Discord. Les messages précédents servent à construire un historique qui sert de « mémoire ». Nous préparons ensuite un extrait de texte avec des contextes de base, tels que le nom et l’objectif de Cloudy. De cette façon, le moteur de complétion a des connaissances fondamentales sur le bot.

Le prétraitement de Cloudy génère une invite qui ressemble à la transcription (incomplète) d’une pièce :

The following is a conversation with an AI assistant. The assistant's name is Cloudy. The assistant is helpful, creative, clever, and very friendly.

Human: 
AI: 



Human: 
AI:
L' »invite de démarrage » GPT-3 pour le chat conversationnel ressemble à une transcription inachevée.

GPT-3 déduira alors ce qui appartient au dernier message après le AI: jeton. En supposant que les conversations précédentes aient été cohérentes, l’IA devrait être capable de générer une réponse convaincante.

Les mêmes concepts s’appliquent au-delà du chat conversationnel. Cloudy génère également du code React, étant donné une description en langage naturel. Cela peut sembler une fonctionnalité sans rapport, mais les choses changent une fois que vous enlevez l’abstraction. En réalité, il s’agit de faire correspondre le modèle GPT-3 à des exemples de génération de code.

ChatBot: Écrire un chatbot Discord avec GPT-3
La génération de code peut sembler être une fonctionnalité totalement unique, mais sous le capot, c’est assez similaire au chat conversationnel.

Pour générer du code, nous devons créer une invite qui ressemble à notre précédent journal de discussion. Cette fois, l’invite omet les messages de l’utilisateur et les réponses du bot. Au lieu de cela, il contient des exemples précédents de descriptions et d’extraits de code. L’avant-dernière ligne doit contenir la description de l’utilisateur du composant de réaction. L’invite se termine par un jeton indiquant qu’il doit y avoir du code.

description: a red button that says stop
code: 

description: a blue box that contains 3 yellow circles with red borders
code: 
description: (This is the placeholder for the user-provided input.) code:
L' »invite de démarrage » GPT-3 pour la génération de code contient plusieurs exemples antérieurs de génération de code. Dans un sens, il « entraîne » le modèle à produire du code.

Le modèle doit reconnaître le modèle et réaliser que le code React doit venir ensuite.

Avec toutes les interactions GPT-3 démystifiées, il reste deux choses à faire. Le bot doit post-traiter la sortie du modèle et renvoyer les résultats à Discord. Du point de vue de l’utilisateur, il semble que Cloudy lui parle ou écrive du code. Ce qu’ils ne voient pas, c’est que Cloudy est occupé à créer une invite et à deviner ce qui devrait suivre.

Déployer votre Bot 🚀

Nous avons l’échafaudage pour un bot Discord, et nous savons qu’il fonctionne avec OpenAI. Il est maintenant temps de l’expédier ! Après tout, le code n’a de sens que si les gens l’utilisent.

Exécution en production

Heureusement, il est assez simple de déployer un bot Discord. Tout ce dont vous avez besoin est une machine qui gardera votre bot en marche. Notez que les robots Discord ne reçoivent pas de demandes entrantes. Ainsi, nous évitons la plupart des complexités associées aux serveurs traditionnels.

Plusieurs options gratuites sont disponibles si vous souhaitez héberger un bot Discord. Pour Cloudy, j’ai personnellement utilisé Replit pour tout développer et tout héberger. Tout en travaillant sur le bot, je pouvais exécuter le code pour voir mes modifications en temps réel. Cela pourrait aussi garder le bot en vie lorsque j’étais absent. Depuis sa création, Cloudy a constamment fonctionné sur Replit.

ChatBot: Écrire un chatbot Discord avec GPT-3
Replit est l’une des nombreuses façons d’héberger votre bot Discord. Vous avez juste besoin de vous assurer que votre programme reste en cours d’exécution.

Inviter le bot

Il reste une dernière étape avant de pouvoir mettre le bot entre les mains de nos utilisateurs. Quelqu’un doit inviter le bot sur son serveur Discord. Si vous avez correctement configuré les autorisations, cela devrait être l’étape la plus simple. Saisissez le lien d’invitation sur votre page de candidature et partagez-le avec le monde !

Noter: Au moment où j’écris ceci, je n’ai plus de crédits d’API OpenAI. En conséquence, Cloudy ne peut pas converser ou générer de code pour le moment. (Toutes les autres fonctionnalités fonctionnent toujours correctement.) Bien que j’apprécie l’utilisation et le support écrasants, l’accès à l’API n’est pas bon marché ! ??

Nous avons couvert l’infrastructure derrière les robots Discord et comment commencer. Nous avons également appris à comprendre et à interagir avec les API d’apprentissage automatique. Pour conclure, nous avons déployé notre code en production. Il est maintenant temps de profiter des fruits de notre travail !

Voici le REPL pour Cloudy. Vous êtes libre de parcourir et d’exécuter le code à votre guise. Pour de meilleurs résultats, envisagez de bifurquer le projet et de rassembler vos propres clés API.

Bon codage !


Wow, vous avez lu jusqu’ici ? Bon travail! Personne n’a ce genre de durée d’attention ces jours-ci ! ??

Quoi qu’il en soit, si vous avez apprécié cet article de blog, pensez à me suivre sur Twitter. Je construirai d’autres projets à l’avenir et j’écrirai à leur sujet, afin que vous puissiez apprendre à faire de même.



ChatBot: Écrire un chatbot Discord avec GPT-3

#Écrire # #Discord #avec #GPT3