Article original : How to Build a ChatGPT Plugin – Case Study using PodcastAPI.com and Serverless Cloudflare Pages
Par Wenbin Fang
ChatGPT est un outil d'auto-complétion très intelligent. Il prend des instructions ou des questions en langage naturel et fournit des sorties textuelles suffisamment bonnes.
Mais il y a un piège – les connaissances de ChatGPT ne vont que jusqu'en septembre 2021. Ainsi, au moment de la rédaction de cet article de blog (juin 2023), le modèle lui-même n'est pas au courant des événements ou des données après septembre 2021.

C'est là que les plugins ChatGPT viennent à la rescousse. Ces plugins permettent à ChatGPT d'interagir avec des API externes pour accéder à des informations à jour. Ils peuvent également aider ChatGPT à effectuer certaines actions comme déclencher une tâche Zapier ou envoyer un email.
Du point de vue d'un fournisseur d'API (comme Listen Notes fournissant PodcastAPI.com), créer un plugin ChatGPT est similaire à fournir une interface conviviale, alimentée par l'IA, pour votre API. Pour les utilisateurs enthousiastes de ChatGPT, la création de plugins personnalisés peut étendre ses cas d'utilisation de manière significative.
Dans ce tutoriel, nous allons exploiter un exemple concret du plugin ChatGPT Listen Notes (déjà disponible sur le Plugin store) comme étude de cas pour éclairer le processus de création d'un plugin ChatGPT.
Le processus est plus simple que vous ne le pensez. À la fin de cet article, vous devriez avoir la compréhension nécessaire pour utiliser n'importe quelle API et créer votre propre plugin ChatGPT.
N'hésitez pas à essayer le plugin ChatGPT Listen Notes et à explorer le code source sur GitHub.
Comment fonctionnent les plugins ChatGPT ?
Pour un utilisateur final, le processus d'utilisation d'un plugin ChatGPT est assez simple. Vous devez simplement activer le plugin sur l'interface utilisateur de ChatGPT, puis taper les invites.
Exemple d'un plugin ChatGPT en action
Pour les développeurs, le processus nécessite un peu plus de travail. Vous devrez fournir un fichier ai-plugin.json hébergé en utilisant votre propre nom de domaine. Ce fichier inclut des métadonnées sur le plugin et une spécification OpenAPI détaillant les points de terminaison API disponibles avec lesquels ChatGPT peut interagir.
Essentiellement, un plugin ChatGPT est un appelant d'API intelligent. L'utilisateur utilise le langage naturel pour appeler ces API externes au lieu d'écrire du code. Tous les points de terminaison API, ainsi que les fichiers ai-plugin.json et openapi.json, doivent être hébergés sous le même nom de domaine.
Étude de cas : Comment créer un plugin ChatGPT de découverte de podcasts utilisant PodcastAPI.com et Cloudflare Pages
Exigences
Notre plugin doit être capable de rechercher des podcasts ou des épisodes en fonction de mots-clés, de langues, de pays et de la durée audio, entre autres facteurs.
Nous utiliserons PodcastAPI.com et Cloudflare Pages pour créer ce plugin ChatGPT.
PodcastAPI.com est une API Podcast largement utilisée dans le monde, et elle alimente des milliers d'applications/sites web de podcasts. C'est une API RESTful typique.
Par exemple, pour trouver des podcasts liés à « startup » en anglais, vous envoyez une requête API comme GET /search?q=startup&type=podcast&language=English. Vous pouvez facilement essayer tous les points de terminaison de l'API Podcast avec le serveur mock et voir à quoi ressemblent les données JSON de réponse sur la page de documentation de l'API.
Cloudflare Pages est une plateforme sans serveur avec un quota gratuit généreux. Elle vous permet de créer une application web dynamique en JavaScript et d'envoyer des requêtes à des API externes de manière sécurisée sans exposer les identifiants de l'API. Et comme elle est sans serveur, vous n'avez pas à vous soucier de la provision de serveurs, de la scalabilité ou des problèmes opérationnels.
Nous avons acquis une certaine expérience en utilisant Cloudflare Pages en construisant microfeed — une alternative légère sans serveur à WordPress, que vous pouvez utiliser pour héberger des podcasts et des fichiers multimédias gratuitement.
Comment fonctionne exactement le plugin ?
Vous pouvez trouver le code source du plugin ChatGPT Listen Notes sur GitHub : github.com/ListenNotes/listennotes-chatgpt-plugin.
Le plugin, construit avec JavaScript, est déployé en tant qu'application web sur la plateforme sans serveur Cloudflare Pages. Ce déploiement sert trois ressources vitales sous le nom de domaine personnalisé ai.listennotes.com :
- Le fichier ai-plugin.json : Celui-ci peut toujours être trouvé à https://ai.listennotes.com/.well-known/ai-plugin.json. Le chemin de ce fichier est statique et ne doit pas être changé. Voici le code source pour référence.
- Le fichier openapi.json : Cet emplacement est déterminé par le fichier ai-plugin.json. Dans notre cas, il est hébergé à https://ai.listennotes.com/chatgpt-plugin/openapi.json. Vous pouvez consulter le code source ici.
- Points de terminaison de l'API proxy : Par exemple, https://ai.listennotes.com/api/v2/search_episodes. Ce sont essentiellement des enveloppes minces des points de terminaison réels de PodcastAPI.com. Le code source de ces points de terminaison peut être trouvé ici.
Alors, comment ces pièces fonctionnent-elles ensemble ? Approfondissons :
Tout d'abord, ChatGPT identifie le fichier ai-plugin.json à partir de son chemin fixe /.well-known/ai-plugin.json. Ce fichier contient des métadonnées essentielles sur le plugin et informe ChatGPT de l'emplacement du fichier openapi.json. Voici à quoi cela ressemble :

Deuxièmement, ChatGPT utilise le fichier openapi.json pour comprendre les points de terminaison API disponibles et leurs paramètres. Ce fichier aide essentiellement ChatGPT à comprendre comment interagir avec l'API.

Enfin, en utilisant la description et d'autres métadonnées spécifiées dans le fichier openapi.json, ChatGPT peut traduire les invites en langage naturel en requêtes API spécifiques.
Par exemple, une invite de l'utilisateur comme « rechercher des podcasts sur les startups en anglais » est traduite par ChatGPT en une requête GET à GET /search_podcasts?q=startup&language=English.
Sécuriser les clés du royaume
Lors de l'utilisation d'API externes, comme PodcastAPI.com dans notre cas, une préoccupation importante est de maintenir la confidentialité des clés API. Vous pouvez le faire par des couches d'indirection – « Tous les problèmes en informatique peuvent être résolus par un autre niveau d'indirection. » :)
Tout d'abord, la vraie clé API (LISTEN_API_KEY dans notre cas) est fournie comme variable d'environnement sur Cloudflare Pages. Cela garantit que la clé API n'est jamais exposée dans le code source.
Ensuite, nous utilisons un secret (CHATGPT_SECRET dans notre cas) pour que ChatGPT appelle nos points de terminaison API proxy. Lors de la soumission du plugin à ChatGPT, vous serez invité à fournir ce secret.
Après avoir fourni le secret, ChatGPT émettra un jeton de vérification (CHATGPT_VERIFICATION_TOKEN dans notre cas), qui est placé dans le fichier ai-plugin.json. Il est parfaitement acceptable que ce jeton de vérification soit public.
Dans notre cas, LISTEN_API_KEY, CHATGPT_SECRET et CHATGPT_VERIFICATION_TOKEN sont tous stockés comme variables d'environnement chiffrées sur Cloudflare Pages, effectivement tenus à l'écart du public :

Comment naviguer dans le processus de révision
Avant que votre plugin soit listé dans le magasin de plugins ChatGPT, vous pouvez le tester via votre domaine personnalisé (dans notre cas, ai.listennotes.com).
Lorsque vous êtes prêt à soumettre votre plugin pour révision, vous le ferez via un ticket Intercom. Vous devrez répondre à plusieurs questions et fournir des exemples d'invites. D'après notre expérience, il a fallu environ 2 jours à un membre de l'équipe ChatGPT pour examiner notre ticket.
Initialement, notre soumission a été rejetée parce que notre description ne se terminait pas par une ponctuation. Nous avons rapidement ajouté une période à la description de notre ai-plugin.json, resoumis et avons été approuvés dans les 2 heures. Ainsi, de la soumission à l'approbation, cela a été un processus d'environ 2 jours.
Comment adapter le processus pour d'autres API
Si vous souhaitez adapter le dépôt listennotes-chatgpt-plugin pour qu'il fonctionne avec d'autres API, il y a trois domaines principaux que vous devrez modifier :
- Mettre à jour ai-plugin.json (code source) : Vous trouverez plus de détails à ce sujet sur openai.com.
- Mettre à jour openapi.json (code source) : Cela est crucial car ChatGPT s'appuie sur cette spécification OpenAPI pour identifier les points de terminaison proxy disponibles. Pour plus d'informations, consultez openai.com.
- Mettre à jour les points de terminaison de l'API proxy (code source) pour les aligner avec d'autres API : Les points de terminaison proxy qui s'exécutent sur Cloudflare Pages doivent être mis à jour pour envoyer des requêtes API à vos API choisies. Vous pourriez vouloir vous familiariser avec le fonctionnement des fonctions Cloudflare Pages.
Après avoir apporté ces mises à jour, vous pouvez déployer sur Cloudflare Pages puis soumettre votre plugin à ChatGPT pour révision.
Conclusion
Bien que cet aperçu vise à fournir des informations utiles, gardez à l'esprit que le plugin ChatGPT est encore en version bêta et sujet à des changements.
Nous espérons maintenir cet article à jour au fur et à mesure des changements. Le monde de l'IA évolue rapidement, mais avec une solide compréhension de ces principes, vous serez bien équipé pour le naviguer.
Vous pouvez trouver cet article et bien d'autres sur listennotes.com.