Bien que le programme ATIR n’accepte plus les demandes pour les ressourcesennuage, vousaveztoujoursaccès aux Propulseurs et à leur documentation, qui serontpréservés et bénéficieront d’un soutienjusqu’au 17 janvier 2025.
Après le 17 janvier 2025:
Les saisies d’écran devraient rester fidèles, mais au lieu de vous connecter à votre compte ATIR dans AWS quand on vous le demande, vous devrez vous connecter à un compte AWS personnel.
Les liens vers les scripts CloudFormation d’AWS permettant le déploiement automatique de l’application type devraient rester les mêmes et être fonctionnels.
Les liens vers les dépôts GitHub permettant de télécharger le code source du Propulseur resteront valables puisque c’est le créateur du Propulseur (celui qui a élaboré les applications de source ouverte servant d’exemple) qui en est le propriétaire et en assure le maintien.
Détection des anomalies dans les données chronologique par l’IA
Voici ce que vous trouverez dans cet solution type :
La solution type que voici montre comment 1280 Labs a recouru aux grands modèles de langage (GML) les plus récents pour créer une application de départ pouvant servir à des projets alimentés par l’intelligence artificielle (IA).
Problématique
Depuis un an, le monde des jeunes pousses canadiennes spécialisées en IA connaît un essor incroyable grâce aux progrès notables enregistrés dans les domaines de l’intelligence artificielle (IA) et de l’apprentissage automatique (AA). Ces petites entreprises sont particulièrement prisées dans les rondes de financement et font la manchette des journaux, car elles s’attaquent à une gamme de problèmes spécifiques à l’industrie en proposant des produits qui misent sur l’IA.
Bien qu’elles mettent au point des solutions novatrices pour résoudre des problèmes précis, la majorité de ces entreprises s’appuient sur des technologies de base communes. Actuellement, les équipes qui s’efforcent de développer une application alimentée par l’IA se heurtent à la même difficulté : réunir un personnel compétent qui connaît assez les technologies frontales et dorsales pour concevoir une plateforme complète, sécurisée, et qui maîtrise suffisamment l’IA pour lui donner les fonctionnalités qui rendront le produit de l’entreprise unique.
Habituellement, l’entreprise est contrainte d’embaucher des développeurs spécialisés dans les technologies frontales et dorsales, de consacrer deux à six semaines pour établir les fonctionnalités de base de la plateforme web, puis d’y intégrer les fonctionnalités de l’IA. Notre Propulseur rationalise ce processus en remplaçant la phase de développement initiale par une plateforme entièrement fonctionnelle permettant l’inscription, l’authentification et la gestion des utilisateurs. Elle met donc fin à la nécessité d’engager des développeurs supplémentaires, les éléments frontaux et l’architecture de l’API étant établis d’avance. L’équipe peut alors se concentrer sur l’élaboration d’une plateforme web de premier plan pourvue d’une API dorsale sûre, dans un environnement préconfiguré.
Avant de passer au développement du produit, sachez que ce Propulseur vous permettra de réaliser des économies par le recours à un minimum de développeurs spécialisés en applications web. Grâce à cette approche, une équipe plus modeste mais adroite en accomplira davantage. Parce que le Propulseur peut être lancé avec ou sans fonctionnalités IA, l’équipe sera en mesure de bâtir n’importe quelle plateforme web et de développer son produit plus rapidement.
AI Starter App dans le nuage de l’ATIR – Solution type
Aperçu
Le diagramme que voici illustre comment la Solution type est structurée.
Composants
Le tableau ci-dessous présente de façon succincte les principaux éléments dont la Solution type est constituée.
Composant
Description
Environnement AWS
Série complète de services et de ressources en nuage configurée pour faciliter l’exploitation d’applications et de services sur Amazon Web Services (AWS). Grâce à l’ATIR, chaque utilisateur a accès à son propre environnement AWS.
Déploiement sur CloudFormation
Service d’AWS. CloudFormation est un service qui définit et gère l’infrastructure AWS comme un code, donc provisionne et actualise automatiquement les ressources. On s’en sert pour déployer AI Starter App sur l’environnement AWS.
Dépôt public Github
Github est un service d’hébergement de dépôts de code. Les dépôts frontaux et dorsaux du Propulseur sont hébergés dans un dépôt public Github.
Groupe de sécurité
Service d’AWS. Sert de pare-feu virtuel aux instances EC2 pour contrôler le trafic entrant et sortant selon des règles précises.
EC2
Service d’AWS. Capacité de calcul évolutive dans le nuage AWS permettant à l’utilisateur d’exploiter des serveurs virtuels et de gérer des ressources informatiques.
Conteneur Docker
Paquet autonome peu volumineux et exécutable regroupant tout ce qu’il faut pour qu’un logiciel fonctionne (code, instant d’exécution, outils système, bibliothèques, paramètres)
Nginx
Paquet autonome peu volumineux et exécutable regroupant tout ce qu’il faut pour qu’un logiciel fonctionne (code, instant d’exécution, outils système, bibliothèques, paramètres)
Gunicorn
Serveur http WSGI Python pour UNIX. Sert les applications web Python en gérant une foule de processus de travail pour répondre aux demandes
Appli React Web
Bibliothèque populaire de source ouverte en JavaScript employée pour créer des interfaces utilisateur à partir d’une architecture constituée de composants.
Serveur dorsal Django
Cadriciel web Python de haut niveau incorporant des fonctions pour la gestion de bases de données, l’authentification des utilisateurs et plus
PostgresSQL
Système de base de données relationnelles réputé pour sa robustesse, son extensibilité et son adhérence aux normes
GML
Les grands modèles de langage (GML) sont des systèmes d’IA avancés, entraînés avec de volumineuses données textuelles de façon à comprendre, à produire et à manipuler efficacement le langage naturel.
Simple Email Service (SES)
Service d’AWS. Service de messagerie électronique en nuage conçu pour envoyer massivement des courriels de façon fiable
Déploiement et configuration
Si vous êtes inscrit à l’ATIR, parcourez le catalogue jusqu’au Propulseur et suivez les instructions en vue de déployer une nouvelle instance de la Solution type.
Prérequis:
Créer un groupe de sécurité pour que le trafic HTTP (tous les clients 0.0.0.0/0) ait accès au serveur (par le port 80) qui sera mis en place par la suite. Vous pouvez aussi autoriser l’accès au serveur par SSH (port 22) à partir de notre adresse IP.
Une autre possibilité serait de créer une clé SSH privée pour accéder à l’instance EC2 que nous engendrerons plus loin:
Avant d’utiliser la fonction clavardage, vous devrez configurer les clés de l’API en fonction du GML désiré. Pour cela, saisissez un numéro de carte de crédit ou choisissez une autre méthode de paiement selon le compte détenu par l’organisation pour l’outil concerné. Ces détails pour Claude, Huggingface, Mistral et OpenAI peuvent être fournis ou omis.
Suivre les liens ci-dessous pour créer un compte sur la plateforme correspondante.
Pour voir les clés de l’API, exécutez la commande ci-dessous dans l’instance EC2. Elle affichera toutes les variables de l’environnement.
sudo docker exec <container-id> env
On peut aussi régler « “NoReplySenderAddress » si, par exemple, un utilisateur demande la modification de son mot de passe au moyen de l’application. Veuillez noter que vous devrez vérifier si cette adresse vous appartient avant que le service SES d’Amazon expédie le courriel aux utilisateurs. Il pourrait simplement s’agir d’un compte Gmail auquel vous avez accès.
L’application commencera à se déployer, ce qui peut prendre quelques minutes. Le déploiement terminé, vous pourrez parcourir l’application en utilisant l’adresse IP indiquée sous « AppAddress », sur l’onglet « Outputs ».
Pour accéder à l’instance EC2 qui vient d’être créée par SSH, utilisez la même adresse IP. Sur l’interpréteur ou le terminal utilisant SSH, exécutez la commande que voici :
ssh -i key_file.pem ec2-user@IP
La commande qui suit affichera les journaux de l’installation :
tail -f /var/log/cloud-init-output.log
Lorsque l’installation est complète, il est possible de consulter les journaux de l’application web dorsale avec la commande que voici :
Ensuite, ouvrez l’application avec l’adresse IP indiquée à « AppAddress ».
Démonstration de la technologie
Cette partie vous montre comment fonctionne l’AI Web Starter. Cette technologie s’avère particulièrement intéressante parce qu’elle sert de point de départ au développement d’applications web intégrant déjà les principales fonctionnalités. L’utilisateur peut donc consacrer plus de temps à y ajouter les fonctionnalités caractéristiques à son entreprise.
La démonstration illustra les fonctionnalités offertes dans AI Web Starter.
Connexion et inscription
L’utilisateur peut s’inscrire et se connecter à la plateforme. Il est également possible de modifier le mot de passe. Dans ce cas, l’utilisateur recevra un courriel qui l’amènera à la page « Forgot Password » (mot de passe oublié), sur laquelle il pourra en choisir un nouveau.
Tableau « clavardage et conversations »
L’utilisateur pourra communiquer avec divers GML de source ouverte ou privés par Huggingface et OpenAI. Le mode « requête simple » (Single Prompt) permet de comparer les différents modèles en posant une question et en obtenant une réponse. Le mode conversationnel compare les conversations échangées avec les différents modèles qui les conservent et avec ceux qui consultent les messages les plus récents (le nombre de messages conservés dans la mémoire du GML est déterminé dans le programme principal et l’augmenter coûtera plus cher, puisque chaque message supplémentaire enregistré sera traité chaque fois qu’on pose une question) pour formuler la réponse. L’usage de cette fonctionnalité exige la saisie des clés de l’API dans le fichier .env du programme dorsal.
Paramétrage
Cette page permet à l’utilisateur de modifier ses données personnelles et son mot de passe.
Bibliothèque de composants
Sur cette page figure une partie des éléments réutilisables dans le dépôt frontal. Elle s’avèrera particulièrement utile pour ceux qui clonent le Propulseur afin d’accélérer le développement de leur propre application et souhaiteraient se servir de leurs propres composants. Pour voir à quoi ressemble une solide bibliothèque rassemblant de nombreux de composants React très fonctionnels, visitez les bibliothèques d’éléments d’interface utilisateur comme Mantine ou Shadcn.
Conclusion
Puisque toutes les ressources ont été créées avec CloudFormation, les libérer est un jeu d’enfant. Vous n’aurez qu’à sélectionner Delete (supprimer) dans la pile CloudFormation. L’opération demandera quelques minutes.
Facteurs à prendre en considération
Autres possibilités de déploiement
Le code de l’application modèle est disponible dans le dépôt public Github accessible quand on clique le lien ci-dessous. Nous vous encourageons à cloner ce dépôt et à vous en servir comme point de départ pour vos projets, avec la méthode de déploiement que vous privilégiez. Après clonage, l’utilisateur pourra créer un ou plusieurs dépôts Github publics ou privés (selon l’architecture monorepo choisie) et y insérer le code de l’application.
L’utilisateur qui aimerait accélérer le développement d’une application web complète sans IA pourra également se servir d’AI Web Starter, mais sans la fonctionnalité du GML. Une fois l’application clonée, on suivra les étapes décrites dans la documentation de Django pour retrancher l’appli REST aiModule du cadriciel frontal Django.
Du côté frontal, il suffira de supprimer les composants du répertoire « components/LLMs » et de remplacer la page d’accueil actuelle par une autre. Dans le dossier « state » (état), retranchez modelsConfig.js et dans routes.js, supprimez les fonctions fetchConversations et sendChat.
Pour redéployer le dépôt qui vient d’être cloné avec CloudFormation, procédez comme suit :
remplacez les URL de Github dans le fichier install.sh file et le fichier cloudformation.json par l’URL du nouveau dépôt;
téléversez le nouveau fichier CloudFormation sur S3 pour appliquer le nouveau modèle CloudFormation.
Technologies de rechange
AI Web Starter a été conçu afin d’être facile à adapter. L’utilisateur pourra donc se servir du GML, du cadriciel frontal, du cadriciel dorsal, de la base de données ou du fournisseur d’hébergement de son choix en vue d’un projet précis.
Ce sont les contraintes du projet qui détermineront les cadriciels, les outils et les services qui conviendront le mieux.
Solutions de remplacement frontales
AI Web Starter a pour application frontale une application client. NextJS ou d’autres cadriciels pourront prendre en charge les activités du côté serveur. L’application frontale d’AI Web Starter est rédigée en JavaScript. Cependant, on pourra aussi recourir à Typescript, un surensemble de JavaScript, pour le projet.
Ceux qui aimeraient approfondir la différence entre le rendu serveur et le rendu client ou d’autres pratiques exemplaires relatives au développement d’applications web sont conviés à lire notre blogue « Getting Started with Web Technologies » (l’ABC des technologies web) ici : https://www.1280labs.ca/blog/how-to-build-a-tech-product.
Sinon, on pourra recourir à une autre application web frontale, voire à un cadriciel mobile pour communiquer avec l’API dorsale. Étant modulaires, les différents éléments du Propulseur se configurent aisément pour fonctionner avec d’autres technologies.
Solutions de remplacement dorsales
Le cadriciel REST Django se prête bien au prototypage, car il est accompagné d’un système sécurisé de gestion des utilisateurs et d’une console admin prête à l’emploi. Ses autres fonctionnalités qui, normalement, devraient s’ajouter au fil du développement de l’application web, conviendront à de nombreux projets. On encourage l’utilisateur à choisir le cadriciel dorsal avec lequel il se sent le plus à l’aise.
Usages recommandés du cadriciel REST Django
Élaboration rapide d’une API – Situation : vous devez créer des API RESTful vite et efficacement. – Raison : le cadriciel propose une puissante trousse à outils, assez souple pour engendrer des API avec le plus petit code passe-partout possible. Le développeur pourra donc se concentrer sur la définition des points terminaux et la logique des activités au lieu de perdre du temps sur les détails à la base.
Importante sérialisation et validation – Situation : votre API doit sérialiser et valider beaucoup de données. – Raison : Django comprend de puissants sérialiseurs et validateurs qui simplifieront la conversion des différents types de données (p. ex., modèles Django) en format JSON ou dans un autre format, ce qui en garantira l’intégrité et l’uniformité.
Authentification et autorisations – Situation : l’API doit comprendre des moyens d’authentification et d’autorisation. – Raison : le cadriciel supporte diverses méthodes d’authentification (p. ex., avec jetons, OAuth) et politiques d’autorisation granulaires, ce qui permet de sécuriser plus facilement les points terminaux.
API explorable – Situation : vous souhaitez créer une interface conviviale qui permettra au développeur d’explorer l’API et d’interagir avec elle. – Raison : Django comprend une fonctionnalité « API explorable » qui crée une interface HTML navigable en fonction des points terminaux. Le développeur pourra donc tester aisément l’API, la déboguer et en découvrir les capacités.
Envisagez un autre cadriciel dans les cas que voici.
Architecture de microservices – Situation : vous bâtissez un système réparti composé de microservices et avez besoin d’un cadriciel léger et extensible pour votre API. – Solution : songez à un cadriciel peu encombrant comme FastAPI ou Node.js avec Express.js. Ils vous donneront la souplesse et la performance qu’exige une architecture reposant sur des microservices.
API en temps réel – Situation : vous devez créer des API qui opèrent en temps réel avec des fonctionnalités comme WebSockets ou des événements engendrés par serveur. – Solution : songez à un cadriciel spécialement conçu pour les communications en temps réel comme Django Channels, Socket.IO (avec Node.js) ou FastAPI, pour le traitement asynchrone des requêtes.
API en GraphQL – Situation : vous préféreriez bâtir l’API avec GraphQL plutôt qu’avec des points terminaux RESTful. – Solution : recourez à un cadriciel adapté à GraphQL et à des bibliothèques comme celle des serveurs Apollo (Node.js), Graphene (Python) ou Ariadne (Python), qui proposent des outils permettant de définir et de consulter les API en GraphQL.
Performance et extensibilité – Situation : vous prévoyez un trafic important ou aimeriez appliquer des exigences de performance très rigoureuses à votre API. – Solution : préférez les cadriciels asynchrones comme FastAPI (Python), Tornado (Python) ou Node.js dotés de bibliothèques asynchrones offrant une meilleure performance et une plus grande extensibilité que le modèle demande-réponse asynchrones de Django.
Adaptation et contrôle – Situation : vous devez contrôler étroitement l’architecture et le fonctionnement de l’API. – Solution : envisagez un cadriciel minimaliste comme Flask (Python) ou une solution sur mesure, adaptée à vos exigences. Il vous donnera une plus grande marge de manœuvre et un meilleur contrôle, même si le développement vous demande plus de temps.
Bases de données de remplacement
AI Web Starter utilise une base de données PostgresSQL, soit celle recommandée avec le cadriciel REST Django. Néanmoins, l’utilisateur est encouragé à choisir la base de données la plus facile pour lui. Une base de données vectorielle comme Pinecone laissera le GML exploiter aisément les informations contenues dans l’identifiant des utilisateurs tout en traitant les requêtes. On recourt habituellement aux bases de données vectorielles avec une base de données ordinaire pour ne conserver que les données triées par le robot conversationnel.
On pourrait aussi envisager une base de données actionnée par SQL plutôt qu’une n’y recourant pas tel MongoDB.
Sécurité
Quand on déploie une application web, il est capital d’instaurer plusieurs couches de protection. Les recommandations qui suivent ne sont toutefois que des suggestions et pourraient ne pas convenir à votre projet.
Sur AWS, assurez-vous d’utiliser les rôles et les politiques de gestion des identités et des accès (IAM) afin de restreindre les permissions, de permettre l’authentification multifactorielle (MFA) et de changer régulièrement les clés d’accès. Servez-vous des groupes de sécurité et des listes de contrôle d’accès du réseau pour réguler le trafic entrant et sortant, ainsi que du bouclier AWS et du pare-feu des applications web (WAF) pour bloquer les attaques DDoS et l’exploitation des applications web. Chiffrez les données inactives avec le service de gestion des clés (KMS) d’AWS et celles en transit avec SSL/TLS.
Pour en savoir plus sur la configuration d’un pare-feu WAF sur AWS, on lira ce qui suit :
En ce qui concerne le cadriciel dorsal Django, priorisez les paramètres de sécurité comme l’application de variables environnementales aux informations sensibles, le paramétrage DEBUG=False pendant la production et une configuration adéquate des journaux. Recourez aux fonctions de sécurité intégrées à Django comme les mesures de protection contre la falsification des requêtes intersites (CSRF), l’injection de code indirecte (XSS) et l’injection de code SQL quand vous ajoutez du code au cadriciel dorsal. Pour la partie frontale React, sécurisez les demandes de l’API avec des jetons d’authentification, utilisez HTTPS pour toutes les communications et épurez les entrées de l’utilisateur pour prévenir les attaques XSS. Mettez régulièrement à jour les dépendances des tiers et auscultez-les afin de repérer les vulnérabilités.
Lisez la documentation d’AWS sur la sécurité, les guides Django et OWASP Top Ten pour connaître les principaux risques liés à une application web.
La partie frontale d’AI Web Starter ne permet pas l’application de paquets cosmétiques, car elle est rédigée en vanilla JS/React. L’idée était de la simplifier au maximum afin que l’utilisateur puisse y intégrer l’IU d’autres parties ou d’autres bibliothèques frontales comme Tailwind, Bootstrap ou Material UI en vue d’accélérer le développement.
On encourage aussi l’utilisateur à explorer la conversion éventuelle des fichiers JavaScript en Typescript.
API
Élargir l’API dorsale est un jeu d’enfant. Le projet REST Django consiste en applications qui gèrent leurs propres routes, modèles et sérialiseurs pour en créer de nouveaux ou modifier les applications existantes qui multiplieront les fonctionnalités dorsales. Pour en savoir plus sur le développement avec le cadriciel REST Django, on lira ce qui suit :
Le projet a été conçu pour être modulaire et l’utilisateur est invité à remplacer l’application dorsale par le cadriciel de son choix ou par les outils qui répondront le mieux aux exigences du projet.
Coût et extensibilité
Si on recourt à CloudFormation pour déployer la Solution type, le coût variera avec les ressources d’AWS employées. Pour connaître le prix le plus récent des services AWS, on prendra connaissance de ce qui suit.
La Solution type permet d’essayer AI Starter App ou un autre GML. Si vous la clonez pour qu’elle devienne la base de votre projet, chaque élément de son architecture pourra être déployé sur le service de votre choix. Chaque service, qu’il vienne d’AWS ou d’un fournisseur indépendant, présentera ses propres avantages et inconvénients dont il faudra tenir compte selon la nature de l’application en train d’être bâtie et la manière dont les ressources devront être réparties.
Chaque GML suppose aussi des coûts en fonction du nombre de jetons entrants et sortants utilisés. Les jetons entrants reposent sur la quantité de contenu injectée dans le GML avec la requête. Les jetons sortants reposent sur la quantité de contenu fournie dans la réponse. Pour connaître les prix les plus récents sur les GML employés dans AI Starter App, on consultera ce qui suit :
Ce projet et les paquets utilisés sont de source ouverte. N’importe qui peut s’en servir en vertu de la licence du MIT.
Codes de lancement
N’importe quelle organisation qui souhaiterait cloner AI Starter App pour développer une application en trouvera le code dans le dépôt Github indiqué ci-dessous.