Comment construire une action GPT personnalisée pour communiquer avec votre matériel

Ari Mahpour
|  Créé: March 25, 2024  |  Mise à jour: April 1, 2024
Comment construire une action GPT personnalisée pour communiquer avec votre matériel

Au début de ChatGPT (qui, en réalité, ne date pas de très longtemps), OpenAI a évolué avec différentes manières d'accéder à Internet via l'utilisation de leur LLM. Avec Code Interpreter, on pouvait utiliser Curl pour accéder à un site web et en extraire le contenu. Des add-ons personnalisés permettaient également d'accéder à des sites externes, mais nécessitaient des permissions spéciales d'OpenAI. OpenAI a aussi ajouté des capacités de navigation avec Microsoft Bing qui pouvaient également accéder à Internet. Cependant, toutes ces options ne se sont pas avérées très durables pour la croissance et la demande que les utilisateurs et les développeurs exigeaient des systèmes d'OpenAI. OpenAI a donc récemment lancé une nouvelle plateforme appelée GPT Actions. GPT Actions vous permet de créer des "GPT" personnalisés qui peuvent se connecter à différents serveurs pour fournir des moteurs activés par IA sur un service web existant.

Alors, qu'est-ce que tout cela signifie pour un ingénieur en électronique qui prétend comprendre ce qu'est l'IA ? Que pensez-vous du matériel contrôlé par l'IA ? Cela sonne comme étant à la fois menaçant, potentiellement dangereux et incroyablement excitant ! Dans cet article, nous allons plonger dans la manière de configurer un serveur web qui se connectera à votre GPT Action. Nous examinerons même comment permettre à ChatGPT de contrôler les IOs sur votre Raspberry Pi, ouvrant la voie à de nombreux nouveaux projets passionnants pilotés par l'IA auxquels l'ingénieur moyen n'avait jamais eu accès... jusqu'à maintenant.

Comment ça marche

Avant de plonger dans le code, il est important de noter que c'est un domaine en évolution et qui change rapidement. C'est également une technologie dépendante d'OpenAI et nécessite un abonnement à la version payante de ChatGPT. Il est presque certain que les concurrents vont déployer leurs versions de "GPT Actions", mais, au moment de la rédaction de cet article, GPT Actions (à mon avis) était la manière la plus simple de connecter un Modèle de Langage Large (LLM) fonctionnel à votre service web.

Le concept derrière un service GPT Action est assez simple. Nous dirigeons notre GPT personnalisé vers un service web, lui indiquons quels sont les entrées et les sorties, et le laissons fonctionner. Cependant, la mise en œuvre s'est avérée beaucoup plus compliquée que je ne l'avais imaginé (ce qui a été l'impulsion pour écrire cet article). Voici un schéma de fonctionnement du service :

Figure 1 : Interactions Serveur

Figure 1 : Interactions Serveur

Comme vous pouvez le voir, nous fournissons à OpenAI un service web et un document d'interface (OpenAPI) qui nous indique comment interagir avec notre matériel. Nous commencerons par un exemple très trivial qui n'implique pas de matériel, puis passerons à un simple exemple de basculement de LED.

Configuration du Serveur Sécurisé

Pour les ingénieurs en matériel qui sont, au mieux, familiers avec le logiciel embarqué, cette section peut ne pas leur sembler aussi évidente qu'elle le serait pour quelqu'un travaillant dans l'IT ou l'infrastructure Cloud. En tant qu'ingénieur en électricité et en logiciel, configurer un serveur entièrement crypté SSL était un peu déroutant pour moi - principalement parce qu'il y a tant de manières de le faire. Malheureusement, c'est une condition préalable d'OpenAI donc nous allons devoir nous en occuper. Si vous avez déjà un moyen sécurisé d'héberger un serveur web (par exemple, terminaison TLS à votre équilibreur de charge) vous pouvez sauter cette section. Comme moi, la plupart des gens lisant cet article voudront expérimenter avec leur serveur domestique. Gardez à l'esprit que vous devez toujours ouvrir les ports 80 et 443 vers le monde extérieur à travers les paramètres de votre routeur. Les instructions sur comment configurer le pare-feu de votre routeur et la redirection de port ne sont pas couvertes par cet article mais il y a plein de ressources en ligne que vous pouvez trouver pour vous aider. Pour commencer, nous devons demander un certificat SSL. Cela peut être fait en utilisant des services payants (par exemple, Cloudfare), des services tiers gratuits (par exemple, ZeroSSL), ou un mécanisme direct en utilisant Let’s Encrypt. Dans ce tutoriel, nous allons utiliser Let’s Encrypt via certbot. Vous aurez également besoin d'un nom de domaine qui pointe vers l'adresse IP de votre serveur. Vous pouvez en acheter un ou obtenir un nom DNS dynamique en utilisant Cloudfare (payant) ou No-IP (gratuit). Gardez à l'esprit que rediriger votre nom DNS dynamique vers votre IP nécessite un enregistrement de type “A” et non une redirection d'URL. Pour demander un certificat SSL de 90 jours de Let’s Encrypt, nous devrons utiliser Certbot. Ils ont des exécutables qui peuvent être exécutés sur n'importe quel système d'exploitation. Nous allons exécuter la commande la plus simple pour acquérir les certificats. Voici la commande pour acquérir le certificat :

sudo certbot certonly --standalone --agree-tos -v --preferred-challenges http -d your_domain.com

Si vous êtes sur Windows, vous n'utiliserez pas la partie sudo. Assurez-vous de remplacer your_domain.com par le nom de domaine acheté ou celui que vous avez reçu du service DNS dynamique (par exemple, No-IP). Un dossier contenant une série de fichiers de certificat sera généré. À ce stade, il est temps de cloner le modèle de dépôt : https://gitlab.com/ai-examples/gpt-actions-webserver/. Déplacez le dossier généré par certbot dans le dépôt une fois que vous l'avez cloné. Afin de faire fonctionner correctement les redirections SSL (c'est-à-dire s'assurer que tout le trafic est crypté), nous voudrons configurer Nginx. Créez un dossier dans votre dépôt appelé nginx et un nouveau fichier appelé default.conf. En utilisant ce modèle, remplacez your_domain.com par le nom de domaine qui a été utilisé lorsque vous avez demandé votre certificat SSL en utilisant certbot :


serveur {
    écoute 80;
    nom_du_serveur votre_domaine.com;
    retour 301 https://$host$request_uri;
}

serveur {
    écoute 443 ssl;
    nom_du_serveur votre_domaine.com;
 
    certificat_ssl /etc/ssl/certs/fullchain.pem;
    clé_certificat_ssl /etc/ssl/private/privkey.pem;
 
    emplacement / {
        proxy_pass http://web:8000;
        en-tête_proxy Host $host;
        en-tête_proxy X-Real-IP $remote_addr;
        en-tête_proxy X-Forwarded-For $proxy_add_x_forwarded_for;
        en-tête_proxy X-Forwarded-Proto $scheme;
    }
}

Lancement de l'application

À ce stade, vous devriez avoir le chiffrement SSL correctement configuré et prêt à l'emploi. Nous allons maintenant nous concentrer sur l'application web de base qui peut communiquer avec notre GPT personnalisé. Vous pouvez trouver tout le code dans le dépôt donc nous allons juste souligner comment l'exécuter plutôt que les détails techniques de ce qui entre dans l'application.

Étant donné la nature d'un service web chiffré SSL, j'ai abstrait l'application web du chiffrement SSL réel. Pour cela, nous avons besoin de Nginx, qui redirige le trafic et sert les certificats que nous avons reçus de Let's Encrypt via Certbot. Pour encapsuler le tout dans un petit paquet soigné, je l'ai enveloppé dans un Docker Compose. Cela signifie que vous aurez besoin de Docker pour exécuter cet exemple. C'est un peu encombrant et fastidieux à configurer initialement mais c'est vers cela que le logiciel se dirige de nos jours, donc, un projet comme celui-ci est un excellent endroit pour se familiariser avec Docker. En passant, toutes les descriptions et instructions ont été placées dans le fichier README.md au sein du dépôt. Tant que vous avez suivi les étapes précédentes ci-dessus, vous devriez être capable d'exécuter docker compose up et tous les composants (c'est-à-dire Nginx et l'application web) devraient se construire et commencer à fonctionner. Rappelez-vous que cette application est juste un simple exemple de type "Hello World" et peut être exécuté de n'importe où.

Après avoir exécuté la commande docker compose up, vous devriez voir une sortie comme celle-ci :

Figure 2 : Sortie du Terminal

Figure 2 : Sortie du Terminal

Vous devriez tester votre application en naviguant vers http://localhost:8000. Vous verrez une sortie de test qui dit {"status":"OK"}. Vous devriez également voir le même résultat en naviguant vers http://votre_domaine.com où “votre_domaine.com” est le nom de domaine que vous avez configuré à l'étape précédente. Pour vraiment valider que vos paramètres de routeur et de domaine sont corrects, vous devriez tester cela en dehors de votre réseau (par exemple, sur votre téléphone portable avec le WiFi désactivé).

Configuration de l'action GPT

Maintenant que nous avons validé que notre serveur web de base fonctionne, nous devons le connecter à notre Action GPT personnalisée. OpenAI nécessite un document appelé OpenAPI qui indique à leurs serveurs comment interagir avec le vôtre. Il existe déjà un openapi.json que vous pouvez copier et coller directement dans les paramètres des Actions GPT. Pour accéder à vos paramètres, cliquez sur votre nom dans le coin inférieur gauche, puis cliquez sur "Mes GPTs" :

Figure 3 : Paramètres ChatGPT

Figure 3 : Paramètres ChatGPT

Cliquez sur Créer un GPT, puis Créer une nouvelle Action en bas :

Figure 4 : Paramètres de configuration de l'Action GPT

Figure 4 : Paramètres de configuration de l'Action GPT

Après cela, vous pouvez copier et coller le contenu de openapi.json dans la boîte Schéma :

Figure 5 : Paramètres du schéma de l'Action GPT

Figure 5 : Paramètres du schéma de l'Action GPT

Vous devrez remplacer "https://your_doman.com" par l'adresse de votre domaine réel. À ce moment-là, quelques boutons de test apparaîtront. En supposant que votre serveur web fonctionne, vous pouvez cliquer sur un bouton de test et voir si OpenAI peut communiquer avec votre serveur web. Si tout cela est vérifié, alors vous pouvez enregistrer/publier le GPT (en haut à droite) et commencer à l'utiliser. Assurez-vous de publier cela uniquement pour vous-même puisque cela se connecte à un réseau privé (probablement à la maison).

Exécuter le GPT

Si vous avez réussi à passer toutes les sections ci-dessus et à tester avec succès votre action GPT, félicitations ! Maintenant, il est temps de vraiment tout tester. J'ai commencé une nouvelle conversation ChatGPT mais cette fois en utilisant mon GPT personnalisé que j'appelle "Contrôleur d'Instrument". Pour simplifier, j'ai demandé le statut de mon serveur :

Figure 6 : Statut du serveur en utilisant les Actions GPT

Figure 6 : Statut du serveur en utilisant les Actions GPT

Et mes logs Nginx (depuis la ligne de commande où j'ai exécuté Docker Compose) confirment également le trafic :

```html


"GET / HTTP/1.1" 200 15 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot" "-"

Nous disposons également d'un générateur de nombres aléatoires :

Figure 7 : Obtention de nombres aléatoires depuis le serveur en utilisant les actions GPT

Figure 7 : Obtention de nombres aléatoires depuis le serveur en utilisant les actions GPT

Et le trafic provenant de Nginx confirme également que nous avons reçu 5 requêtes de notre serveur.

Basculer une LED avec Raspberry Pi

À ce stade, nous avons démontré comment effectuer des actions logicielles en utilisant GPT, mais qu'en est-il du contrôle du matériel ? Dans cet article, nous avons déjà abordé beaucoup de sujets, donc nous allons simplement examiner un exemple de base avec une LED clignotante.

Pour commencer, exécutez le même processus que ci-dessus sur un Raspberry Pi. Notez que vous pouvez utiliser le même certificat SSL et le même code de dépôt que vous avez utilisé sur votre ordinateur personnel (en supposant que tous les appareils sont dans le même réseau). Une fois que tout est prêt, exécutez la commande suivante :

BUILD_TYPE=rpi docker compose up --build

Cet exemple contient maintenant la capacité de basculer une LED embarquée sur la broche 26 (GPIO7). Vous pouvez modifier le numéro de la broche dans app/RPiDemoApp.py. Vous devrez également mettre à jour le schéma OpenAPI du GPT personnalisé avec le schéma opeanapi-rpi.json fourni dans le dépôt également (puisque nous avons ajouté une nouvelle fonction).

À ce stade, vous devriez être capable de basculer la LED en utilisant l'interface de chat avec ChatGPT :

Figure 8 : Basculer une LED sur le Raspberry Pi en utilisant les actions GPT

Figure 8 : Basculer une LED sur le Raspberry Pi en utilisant les actions GPT

Félicitations d'être arrivé jusqu'ici ! Ce tutoriel était complexe et vous aurez, sans aucun doute, des questions et/ou des défis. ChatGPT apporte des modifications à cette fonctionnalité quotidiennement et trouve des moyens plus simples pour guider les débutants à travers le processus. Surveillez la documentation mise à jour et même les bots assistants IA qui peuvent vous aider dans le processus.

Conclusion

Dans cet article, nous avons examiné les actions GPT personnalisées, comment les créer et construire tout le support nécessaire pour servir un service web crypté SSL depuis notre ordinateur personnel. En plus de construire un service web de base, nous avons pu étendre ce code pour contrôler une LED depuis le Raspberry Pi. Cela ouvre la possibilité de contrôler et de communiquer avec du matériel beaucoup plus complexe tout en utilisant "l'IA dans la boucle" (jeu de mots avec "le matériel dans la boucle"). Dans les articles futurs, nous explorerons de tels sujets et concepts, en utilisant cet exemple comme fondation.

A propos de l'auteur

A propos de l'auteur

Ari est un ingénieur doté d'une solide expérience dans la conception, la fabrication, les tests et l'intégration de systèmes électriques, mécaniques et logiciels. Il aime collaborer avec des ingénieurs chargés de la conception, la vérification et les tests afin de favoriser les synergies.

Ressources associées

Documentation technique liée

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.