Introduction à la création de solutions d’IA génératives pour les développeurs
L’IA générative, activée par les modèles de langage volumineux (LLMs), ouvre de nouvelles possibilités intéressantes pour les développeurs de logiciels et les organisations. Les services comme Azure OpenAI démocratisent le développement d’IA en offrant des API faciles à utiliser, ce qui permet aux développeurs d’un niveau de compétence d’intégrer des fonctionnalités d’IA avancées dans leurs applications sans avoir besoin de connaissances spécialisées ou d’exiger des organisations d’investir dans du matériel.
En tant que développeur d’applications, vous pouvez avoir du mal à comprendre quel rôle vous pouvez jouer et où vous vous inscrivez. Par exemple, vous vous demandez peut-être à quel niveau dans la « pile IA » devez-vous concentrer votre apprentissage ? Ou vous vous demandez peut-être ce que vous êtes capable de construire en fonction des technologies existantes ?
Pour répondre à ces questions, il est important que vous développiez d’abord un modèle mental qui mappe la façon dont toutes les nouvelles terminologies et technologies s’intègrent à ce que vous comprenez déjà. Le développement d’un modèle mental vous aide à concevoir et à créer des fonctionnalités d’IA génératives dans vos applications. À cette fin, l’objectif de cette série d’articles est de vous montrer comment votre expérience de développement logiciel actuelle s’applique à l’IA générative. Les articles fournissent également un ensemble de niveaux sur les mots clés et les concepts au fur et à mesure que vous commencez à développer vos premières solutions d’IA génératives.
Que les entreprises espèrent-elles réaliser avec l’IA générative ?
Pour comprendre comment votre expérience de développement logiciel actuelle s’applique à l’IA générative, il est important de commencer par comprendre comment les entreprises ont l’intention de tirer parti de celui-ci.
Les entreprises considèrent l’IA générative comme un moyen d’améliorer l’engagement client, d’accroître l’efficacité opérationnelle et d’améliorer la résolution des problèmes et la créativité. L’intégration de l’IA générative dans des systèmes existants ouvre des opportunités pour les entreprises d’améliorer leurs écosystèmes logiciels. Il peut compléter les fonctionnalités logicielles traditionnelles avec des fonctionnalités d’IA avancées, telles que des recommandations personnalisées pour les utilisateurs ou un agent intelligent qui peut répondre à des questions spécifiques à l’organisation ou au produit.
Voici quelques scénarios courants où l’IA générative peut aider les entreprises :
- Génération de contenu
- Générez du texte, du code, des images et du son. Cela peut être utile pour le marketing, les ventes, l’informatique, les communications internes, etc.
- Traitement du langage naturel
- Composez ou améliorez les communications professionnelles via des suggestions ou une génération complète de messages.
- « Discuter avec vos données », ou en d’autres termes, permettre à un utilisateur de poser des questions dans une expérience de conversation à l’aide de données stockées dans des bases de données ou dans des documents comme base de réponses.
- Résumé, organisation et simplification des grands corps de contenu pour rendre le contenu plus accessible.
- « Recherche sémantique », ou plutôt, permettant aux utilisateurs de rechercher sur des documents et des données sans utiliser de correspondances exactes de mots clés.
- Traduction de langue pour augmenter la portée et l’accessibilité du contenu.
- Analyse de données
- Analysez les marchés et identifiez les tendances dans les données.
- Modélisez les scénarios « what if » pour aider les entreprises à planifier des changements ou des défis possibles dans chaque secteur de l’entreprise.
- Analysez le code pour suggérer des améliorations, corriger des bogues et générer de la documentation.
Comme vous pouvez le constater, les développeurs de logiciels ont la possibilité d’augmenter considérablement leur impact en intégrant des applications et des fonctionnalités d’IA génératives dans les logiciels sur lesquels reposent leurs organisations.
Comment créer ces types d’applications ?
Bien que le modèle de langage large (LLM) effectue le gros travail, vous créez des systèmes qui intègrent, orchestrent et surveillent les résultats. Bien qu’il y ait beaucoup à apprendre, vous pouvez appliquer les compétences que vous connaissez déjà :
- Appels aux API à l’aide de KITS de développement logiciel (SDK) REST, JSON ou propres au langage
- Orchestration des appels aux API et exécution d’une logique métier
- Stockage vers et récupération à partir de magasins de données
- Intégration d’entrées et de résultats dans l’expérience utilisateur
- Création d’API qui peuvent être appelées à partir de machines virtuelles LL
De cette façon, le développement de solutions d’IA génératives s’appuie sur vos compétences existantes.
Quels sont les outils et services disponibles ?
Microsoft investit dans le développement d’outils, de services, d’API, d’exemples et de ressources d’apprentissage pour vous aider à commencer votre parcours de développement d’IA générative. Chacun met en évidence une préoccupation ou une responsabilité majeure qui sont nécessaires pour construire une solution d’IA générative. Pour utiliser efficacement un service, une API ou une ressource donné, le défi est de vous assurer que vous :
- Comprendre les fonctions, rôles et responsabilités classiques dans un type donné de fonctionnalité d’IA générative ? Par exemple, comme nous abordons en détail dans les articles conceptuels décrivant les systèmes de conversation basés sur la récupération augmentée (RAG), il existe de nombreuses responsabilités architecturales dans le système. Il est important de comprendre le domaine du problème et les contraintes intimement avant de concevoir un système qui résout le problème.
- Comprendre les API, les services et les outils existent pour une fonction, un rôle ou une responsabilité donnés ? Maintenant que vous comprenez le domaine et les contraintes problématiques, vous pouvez choisir de créer cet aspect du système vous-même avec du code personnalisé ou d’utiliser des outils à faible code / sans code existants, ou appeler des API pour les services existants.
- Comprenez les options, notamment les solutions centrées sur le code et sans code/ sans code. Vous pourriez tout construire vous-même, mais c’est une utilisation efficace de votre temps et de votre compétence ? Selon vos besoins, vous pouvez généralement combiner une combinaison de technologies et d’approches (code, sans code, faible code, outils).
Le point ici est qu’il n’existe aucun moyen unique de créer des fonctionnalités d’IA génératives dans vos applications. De nombreux outils et approches existent. Il est important d’évaluer les compromis.
Commencer par un focus sur la couche Application
Vous n’avez pas besoin de comprendre tout ce qui concerne l’IA générative fonctionne pour commencer et être productif. Comme indiqué précédemment, vous connaissez probablement déjà suffisamment, car vous pouvez utiliser des API et appliquer des compétences existantes.
Par exemple, vous n’avez pas besoin d’entraîner votre propre LLM à partir de zéro. La formation d’un LLM nécessiterait du temps et des ressources que la plupart des entreprises ne veulent pas engager. Au lieu de cela, vous créez des modèles fondamentaux préentraînés existants comme GPT-4 en effectuant des appels d’API dans des services hébergés existants comme l’API Azure OpenAI. De cette façon, l’ajout de fonctionnalités d’IA génératives dans une application existante n’est pas différent de l’ajout d’autres fonctionnalités basées sur un appel d’API.
En recherchant comment les modules LLM sont formés ou comment ils fonctionnent peuvent satisfaire votre curiosité intellectuelle, mais comprendre réellement comment fonctionnent les M LLM nécessite une compréhension approfondie de la science des données et de l’arrière-plan mathématique pour le prendre en charge. Cela peut inclure des cours de niveau supérieur sur les statistiques, les probabilités et la théorie de l’information.
Si vous venez d’un contexte informatique, vous pouvez apprécier que la plupart des développements d’applications se produisent à une « couche supérieure dans la pile » de la recherche et des technologies. Vous avez peut-être une certaine compréhension de chaque couche, mais vous êtes probablement spécialisé dans la couche de développement d’applications, avec un focus sur un langage de programmation et une plateforme spécifiques (API disponibles, outils, modèles, etc.).
Il en va de même pour le domaine de l’IA. Vous pouvez comprendre et apprécier la théorie qui s’appuie sur les machines virtuelles dynamiques, mais vous allez probablement concentrer votre attention sur la couche application ou aider à implémenter des modèles ou des processus pour permettre un effort d’IA générative dans votre entreprise.
Voici une représentation sur-simplifiée des couches de connaissances requises pour implémenter des fonctionnalités d’IA génératives dans une application nouvelle ou existante :
Au niveau le plus bas, vous avez des scientifiques des données qui effectuent des recherches en science des données pour résoudre ou améliorer l’IA en fonction d’une compréhension mathématique approfondie des statistiques, de la théorie de probabilité et ainsi de suite. Une couche vers le haut, basée sur la couche de base la plus basse, vous disposez de scientifiques des données qui implémentent des concepts théoriques dans les machines virtuelles, en créant les réseaux neuronaux et en formant les pondérations et les biais pour fournir une partie pratique du logiciel qui peut accepter des entrées (invites) et générer des résultats (achèvements). Le processus de calcul de la composition des achèvements en fonction des invites est appelé inférence. Il y a ceux qui sont responsables de l’implémentation de la façon dont les neurones du réseau neuronal prédisent le mot ou le pixel suivant à générer.
Compte tenu de la puissance de traitement requise pour entraîner des modèles et générer des résultats en fonction d’une entrée. Les modèles sont souvent formés et hébergés dans de grands centres de données. Il est possible d’entraîner ou d’héberger un modèle sur un ordinateur local, mais les résultats sont souvent lents (sans cartes vidéo GPU dédiées pour gérer le calcul requis pour générer des résultats).
Lorsqu’ils sont hébergés dans des centres de données volumineux, l’accès programmatique à ces modèles est fourni par le biais d’API REST, et ceux-ci sont parfois « encapsulés » par des kits sdk et disponibles pour les développeurs d’applications pour faciliter l’utilisation. D’autres outils peuvent aider à améliorer l’expérience du développeur, en fournissant une observabilité ou d’autres utilitaires. Les développeurs d’applications peuvent effectuer des appels dans ces API pour implémenter des fonctionnalités métier.
Au-delà de l’invite des modèles par programmation, il existe des modèles et des processus émergent pour aider les entreprises à créer des fonctionnalités métier fiables basées sur l’IA générative. Par exemple, il existe des modèles qui aident les entreprises à garantir que le texte, le code, les images et le son générés sont conformes aux normes éthiques et de sécurité, ainsi qu’aux engagements en matière de confidentialité des données des clients.
Dans cette pile de préoccupations ou de couches, si vous êtes un développeur d’applications responsable de la création de fonctionnalités métier, il est possible de pousser au-delà de la couche d’application pour développer et former votre propre LLM. Mais ce niveau de compréhension nécessite un nouvel ensemble de compétences qui sont souvent uniquement disponibles académiquement. Si vous ne pouvez pas vous engager à développer des compétences en science des données académiquement pour vous aider à créer la « couche suivante dans la pile » (pour ainsi dire), concentrez-vous sur des sujets de couche d’application tels que :
- Présentation des API et sdk disponibles, de ce qui est disponible, de ce que les différents points de terminaison produisent, etc.
- Comprendre les outils et services associés pour vous aider à créer toutes les fonctionnalités requises pour une solution d’IA générative prête pour la production.
- Comprendre l’ingénierie rapide, comme la façon d’obtenir les meilleurs résultats en posant ou en réhrasant des questions.
- Comprendre où les goulots d’étranglement émergent et comment mettre à l’échelle une solution. Comprendre ce qui est impliqué dans la journalisation ou l’obtention de données de télémétrie sans violer les préoccupations de confidentialité des clients.
- Comprendre les caractéristiques des différentes machines virtuelles (leurs points forts, leurs cas d’usage, quels sont les benchmarks et ce qu’ils mesurent, les différences clés entre les fournisseurs et les modèles produits par chaque fournisseur, etc.) pour choisir le modèle approprié pour les besoins de votre entreprise.
- Découvrez les derniers modèles, flux de travail et processus utilisés pour créer des fonctionnalités d’IA générative efficaces et résilientes dans vos applications.
Services et outils disponibles de Microsoft
Il existe des outils et des services d’INTELLIGENCE artificielle non codés et sans code disponibles auprès de Microsoft pour vous aider à créer une partie ou votre solution entière. Différents services Azure peuvent jouer des rôles essentiels, chacun contribuant à l’efficacité, à l’extensibilité et à la robustesse de la solution :
API et kits SDK pour l’approche centrée sur le code
Au cœur de chaque solution d’IA générative est un modèle LLM et Azure OpenAI fournit un accès à toutes les fonctionnalités disponibles dans les modèles tels que GPT-4.
Produit | Description |
---|---|
Azure OpenAI | Service hébergé qui fournit l’accès à des modèles de langage puissants comme GPT-4. Il existe plusieurs API différentes qui vous permettent d’effectuer toutes les fonctions classiques d’un LLM, telles que la création d’incorporations, la création d’une expérience de conversation, etc. avec un accès complet aux paramètres et des ajustements pour personnaliser les résultats en fonction des besoins. |
Environnements d’exécution
Étant donné que vous créez une logique métier, une logique de présentation ou des API pour intégrer l’IA générative aux applications de votre organisation, vous devez héberger et exécuter cette logique quelque part.
Produit | Description |
---|---|
Azure App Service (ou l’un de plusieurs services cloud basés sur des conteneurs) | Cette plateforme peut héberger les interfaces web ou les API via lesquelles les utilisateurs interagissent avec le système RAG-chat. Il prend en charge le développement, le déploiement et la mise à l’échelle rapides des applications web, ce qui facilite la gestion des composants frontaux du système. |
Azure Functions | Utilisez le calcul serverless pour gérer les tâches pilotées par les événements dans le système RAG-chat. Par exemple, utilisez-le pour déclencher des processus de récupération de données, traiter des requêtes utilisateur ou gérer des tâches en arrière-plan telles que la synchronisation et le nettoyage des données. Il permet une approche plus modulaire et évolutive de la création du back-end du système. |
Low-code / No-code
Vous pouvez également créer une partie de la logique requise par la solution rapidement et être hébergée de manière fiable par des solutions à faible code ou sans code.
Produit | Description |
---|---|
Azure AI Studio | Azure AI Studio peut être utilisé pour l’apprentissage, le test et le déploiement de modèles Machine Learning personnalisés qui pourraient améliorer le système rag-chat. Par exemple, utilisez Azure AI Studio pour personnaliser la génération de réponses ou améliorer la pertinence des informations récupérées. |
Base de données vectorielles
Certaines solutions IA génératives peuvent nécessiter le stockage et la récupération des données utilisées pour augmenter la génération (par exemple, les systèmes de conversation basés sur RAG qui permettent aux utilisateurs de discuter avec les données de votre organisation). Dans ce cas d’usage, vous avez besoin d’un magasin de données vectorielles.
Produit | Description |
---|---|
Azure AI Search | Ce service peut être utilisé pour rechercher efficacement des jeux de données volumineux afin de trouver des informations pertinentes qui peuvent être utilisées pour informer les réponses générées par les modèles de langage. Il est utile pour le composant de récupération d’un système RAG, ce qui garantit que les réponses générées sont aussi informatives et contextuellement pertinentes que possible. |
Cosmos DB | Ce service de base de données multimodèle distribué à l’échelle mondiale peut stocker les grandes quantités de données structurées et non structurées auxquelles le système RAG-chat doit accéder. Ses fonctionnalités de lecture et d’écriture rapides le rendent idéal pour servir des données en temps réel dans le modèle de langage et stocker des interactions utilisateur pour une analyse plus approfondie. |
Cache Azure pour Redis | Ce magasin de données en mémoire entièrement géré peut être utilisé pour mettre en cache des informations fréquemment consultées, réduire la latence et améliorer les performances du système rag-chat. Il est particulièrement utile pour stocker les données de session, les préférences utilisateur et les requêtes courantes. |
Azure Database pour PostgreSQL – Serveur flexible | Ce service de base de données managé peut stocker les données d’application, notamment les journaux, les profils utilisateur et les données de conversation historiques. Sa flexibilité et sa scalabilité prennent en charge les besoins dynamiques d’un système de conversation RAG, ce qui garantit que les données sont constamment disponibles et sécurisées. |
Chacun de ces services Azure contribue à la création d’une architecture complète, évolutive et efficace pour une solution d’IA générative, ce qui permet aux développeurs d’utiliser le meilleur des fonctionnalités cloud et des technologies IA d’Azure.
Développement d’IA générative centrée sur le code avec l’API Azure OpenAI
Dans cette section, nous nous concentrons sur l’API Azure OpenAI. Comme indiqué précédemment, vous accédez par programmation aux fonctionnalités LLM via une API web RESTful. Vous pouvez utiliser littéralement n’importe quel langage de programmation moderne pour appeler ces API. Dans de nombreux cas, les kits SDK spécifiques à la langue ou à la plateforme fonctionnent en tant que « wrappers » autour des appels d’API REST pour rendre l’expérience plus idiomatique.
- Bibliothèque de client Azure OpenAI pour .NET
- Bibliothèque de client Azure OpenAI pour Java
- Bibliothèque de client Azure OpenAI pour JavaScript
- Module client Azure OpenAI pour Go
- Python n’a pas de bibliothèque de client spécifique à Azure. Vous utilisez le package Python OpenAI et modifiez plusieurs options.
Si un sdk de langue ou de plateforme n’est pas disponible, le pire scénario est que vous devez effectuer des appels REST directement à l’API web. Toutefois, la plupart des développeurs connaissent bien comment appeler des API web.
Azure OpenAI offre une gamme d’API conçues pour faciliter différents types de tâches basées sur l’IA, ce qui permet aux développeurs d’intégrer des fonctionnalités d’IA avancées dans leurs applications. Voici une vue d’ensemble des API clés disponibles à partir d’OpenAI :
- API De saisie semi-automatique de conversation : cette API se concentre sur les scénarios de génération de texte, notamment les fonctionnalités conversationnelles, ce qui permet la création de chatbots et d’assistants virtuels qui peuvent participer à un dialogue naturel et humain. Il est optimisé pour les cas d’usage interactifs, notamment le support client, les assistants personnels et les environnements d’apprentissage interactifs. Toutefois, il est également utilisé pour tous les scénarios de génération de texte, notamment la synthèse, la saisie automatique, l’écriture de documents, l’analyse du texte, la traduction, et ainsi de suite. Il s’agit du point d’entrée pour les fonctionnalités de vision actuellement en préversion (autrement dit, charger une image et poser des questions sur celle-ci).
- API modération : cette API est conçue pour aider les développeurs à identifier et à filtrer le contenu potentiellement dangereux dans le texte, en fournissant un outil pour garantir des interactions utilisateur plus sûres en détectant automatiquement des éléments offensants, dangereux ou inappropriés.
- API Incorporations : l’API Embeddings génère des représentations vectorielles d’entrées de texte, la conversion de mots, de phrases ou de paragraphes en vecteurs à dimension élevée. Ces incorporations peuvent être utilisées pour la recherche sémantique, le clustering, l’analyse de similarité du contenu, etc. Il capture la signification sous-jacente et les relations sémantiques dans le texte.
- API de génération d’images : cette API vous permet de générer des images originales et de haute qualité à partir de descriptions textuelles. Elle est basée sur le DALL· d’OpenAI Modèle E, qui peut créer des images qui correspondent à un large éventail de styles et de sujets en fonction des invites qu’il reçoit.
- API audio : cette API permet d’accéder au modèle audio d’OpenAI, conçu pour la reconnaissance vocale automatique. Il peut transcrire la langue parlée en texte ou en synthèse vocale, prenant en charge différentes langues et dialectes. Il est utile pour les applications nécessitant des commandes vocales, une transcription de contenu audio, etc.
Bien que l’IA générative puisse être utilisée pour travailler avec de nombreuses modalités différentes de médias, nous passons le reste de cet article en se concentrant sur les solutions d’IA générative basées sur du texte. Cela couvre des scénarios tels que la conversation, la synthèse, et ainsi de suite.
Comment commencer à développer des applications avec l’IA générative
Les développeurs de logiciels nouveaux dans un langage, une API ou une technologie inconnus commencent généralement à l’apprendre en suivant des didacticiels ou des modules de formation pour créer de petites applications. Certains développeurs de logiciels préfèrent adopter une approche auto-guidée et créer de petites applications expérimentales. Les deux approches sont valides et utiles.
À mesure que vous commencez, il est préférable de commencer petit, de promettre peu, d’itérer et de développer votre compréhension et vos compétences depuis le développement avec l’IA générative présente des défis uniques. Par exemple, dans le développement logiciel traditionnel, vous pouvez vous appuyer sur une sortie déterministe : pour n’importe quel ensemble d’entrées, vous pouvez vous attendre à la même sortie exactement à chaque fois. Toutefois, Générateur n’est pas déterministe : vous n’obtiendrez jamais la même réponse deux fois pour une invite donnée, qui est à la racine de nombreux nouveaux défis. À mesure que vous commencez, tenez compte des conseils suivants avant de vous rendre trop loin :
Conseil n° 1 : découvrez clairement ce que vous essayez d’atteindre.
- Obtenez des informations spécifiques sur le problème que vous essayez de résoudre : l’IA générative peut résoudre un large éventail de problèmes, mais la réussite provient de définir clairement le problème spécifique que vous souhaitez résoudre. Essayez-vous de générer du texte, des images, du code ou autre chose ? Plus vous êtes spécifique, mieux vous pouvez adapter l’IA pour répondre à vos besoins.
- Comprendre votre public : la connaissance de votre audience permet de personnaliser la sortie de l’IA pour répondre à leurs attentes, qu’il s’agisse d’utilisateurs occasionnels ou d’experts dans un domaine particulier.
Conseil n°2 : Jouez aux forces des llMs.
- Comprendre les limitations et les préjugés des machines virtuelles locales : bien que les modules LLM soient puissants, ils ont des limitations et des préjugés inhérents. Connaître les limitations et les préjugés peuvent vous aider à concevoir autour d’eux ou à incorporer des atténuations.
- Comprenez où les modules LLMs excel : les machines virtuelles excel dans les tâches telles que la création de contenu, la synthèse, la traduction de langue, et ainsi de suite. Bien que leurs capacités de prise de décision et leurs fonctionnalités discriminatoires soient plus fortes avec chaque nouvelle version, il peut y avoir d’autres types d’IA plus appropriés pour votre scénario ou votre cas d’usage. Choisissez l’outil approprié pour le travail.
Conseil n° 3 : Les meilleurs résultats commencent par de bonnes invites.
- Découvrez les meilleures pratiques en matière d’ingénierie rapide : l’élaboration d’invites efficaces est un art. Expérimentez avec différentes invites pour voir comment elles affectent la sortie. Soyez concis mais descriptif.
- Valider l’affinement itératif : souvent, la première invite peut ne pas générer le résultat souhaité. Il s’agit d’un processus d’essai et d’erreur. Utilisez les sorties pour affiner vos invites plus loin.
Créer votre première solution d’IA générative
Si vous souhaitez commencer à expérimenter immédiatement la création d’une solution d’INTELLIGENCE artificielle générative, nous vous recommandons de vous familiariser avec la conversation à l’aide de votre propre exemple de données pour Python. Il existe également des versions du didacticiel disponibles dans .NET, Java et JavaScript.
Considérations finales susceptibles d’influencer vos décisions de conception d’application
Voici une courte liste des éléments à prendre en compte et d’autres points à prendre en compte dans cet article qui ont un impact sur vos décisions de conception d’application :
- Définissez clairement l’espace de problème et l’audience pour aligner les fonctionnalités de l’IA avec les attentes des utilisateurs, en optimisant l’efficacité de la solution pour le cas d’usage prévu.
- Utilisez des plateformes à faible code/sans code pour le prototypage et le développement rapides s’ils répondent aux exigences de votre projet, en évaluant le compromis entre la vitesse de développement et la personnalisation. Explorez les possibilités de solutions à faible code et sans code pour certaines parties de votre application afin d’accélérer le développement et de permettre aux membres d’équipe non techniques de contribuer au projet.