Partager via


Prise en main de Serverless AI Chat avec RAG à l’aide de LangChain.js

La création d’applications IA peut être complexe. Avec les technologies LangChain.js, Azure Functions et Serverless, vous pouvez simplifier ce processus. Ces outils gèrent automatiquement l’infrastructure et la mise à l’échelle, ce qui vous permet de vous concentrer sur les fonctionnalités de chatbot. Le chatbot utilise des documents d’entreprise pour générer des réponses IA.

Le code inclut des exemples de données pour une société fictive, Contoso Real Estate. Les clients peuvent poser des questions de support sur les produits de l’entreprise. Les données incluent des documents sur les conditions d’utilisation de l’entreprise, la politique de confidentialité et le guide de support.

Capture d’écran de l’application de conversation dans le navigateur montrant plusieurs suggestions d’entrée de conversation et la zone de texte de conversation pour entrer une question.

Remarque

Cet article utilise un ou plusieurs modèles d’application IA comme base pour les exemples et les conseils qu’il contient. Les modèles d’application IA vous fournissent des implémentations de référence bien gérées et faciles à déployer, qui constituent un point de départ de qualité pour vos applications IA.

Vue d’ensemble de l’architecture

Application de conversation

L’utilisateur interagit avec l’application :

  • Avec l’interface de conversation dans l’application web cliente.
  • L’application web cliente envoie la requête de l’utilisateur à l’API serverless via des appels HTTP.
  • L’API serverless crée une chaîne pour coordonner les interactions entre Azure AI et Recherche Azure AI pour générer une réponse.
  • S’il est nécessaire de référencer les documents, Stockage Blob Azure est utilisé pour récupérer les documents PDF.
  • La réponse générée est ensuite renvoyée à l’application web et affichée à l’utilisateur.

Une architecture simple de l’application de conversation est illustrée dans le diagramme suivant :

Diagramme montrant l’architecture du client à l’application back-end.

LangChainjs simplifie la complexité entre les services

Le flux d’API est utile pour comprendre comment LangChainJS est utile dans ce scénario en extrayant les interactions. Point de terminaison de l’API serverless :

  • Reçoit la question de l’utilisateur.
  • Crée des objets clients :
    • Azure OpenAI pour les incorporations et les conversations
    • Recherche Azure AI pour le magasin de vecteurs
  • Crée une chaîne de documents avec le modèle LLM, le message de conversation (invite système et utilisateur) et la source du document.
  • Crée une chaîne de récupération à partir de la chaîne de documents et du magasin vectoriel.
  • Flux les réponses de la chaîne de récupération.

Le travail du développeur consiste à configurer correctement les services de dépendances, tels qu’Azure OpenAI et Azure AI Search, et à construire correctement les chaînes. La logique de chaîne sous-jacente sait comment résoudre la requête. Cela vous permet de construire des chaînes à partir de nombreux services et configurations différents tant qu’elles fonctionnent avec les exigences langChain.

Où se trouve Azure dans cette architecture ?

Cette application est effectuée à partir de plusieurs composants :

  • Une application web créée avec un seul composant web de conversation créé avec Lit et hébergé sur Azure Static Web Apps. Le code se trouve dans le packages/webapp dossier.

  • API serverless créée avec Azure Functions et utilisant LangChain.js pour ingérer les documents et générer des réponses aux requêtes de conversation utilisateur. Le code se trouve dans le packages/api dossier.

  • Un service Azure OpenAI pour créer des incorporations et générer une réponse.

  • Base de données permettant de stocker le texte extrait des documents et des vecteurs générés par LangChain.js, à l’aide d’Azure AI Search.

  • Stockage de fichiers pour stocker les documents sources à l’aide de Stockage Blob Azure.

Prérequis

Un environnement de conteneur de développement est disponible avec toutes les dépendances requises pour terminer cet article. Vous pouvez exécuter le conteneur de développement dans GitHub Codespaces (dans un navigateur) ou localement à l’aide de Visual Studio Code.

Pour utiliser cet article, vous avez besoin des prérequis suivants :

  • Un abonnement Azure - En créer un gratuitement
  • Autorisations de compte Azure : votre compte Azure doit disposer d’autorisations Microsoft.Authorization/roleAssignments/write, telles que Administrateur de l’accès utilisateur ou Propriétaire.
  • Accès accordé à Azure OpenAI dans l’abonnement Azure souhaité. L’accès à ce service n’est accordé qu’à l’application. Vous pouvez demander l’accès à Azure OpenAI en complétant le formulaire à l’adresse https://aka.ms/oai/access. Ouvrez un problème sur ce dépôt pour nous contacter si vous rencontrez un problème.
  • GitHub

Environnement de développement ouvert

Commencez maintenant par un environnement de développement sur lequel toutes les dépendances sont installées pour terminer cet article.

GitHub Codespaces exécute un conteneur de développement géré par GitHub avec Visual Studio Code pour le web comme interface utilisateur. Pour un environnement de développement le plus simple, utilisez GitHub Codespaces pour disposer des outils de développement et des dépendances appropriés préinstallés pour terminer cet article.

Important

Tous les comptes GitHub peuvent utiliser codespaces pendant jusqu’à 60 heures gratuites chaque mois avec 2 instances principales. Pour plus d’informations, consultez Le stockage mensuel inclus et les heures de cœur GitHub Codespaces.

  1. Ouvrez dans Codespace.

    Ouvrir dans un GitHub Codespaces

  2. Attendez que le codespace démarre. Ce processus de démarrage peut prendre quelques minutes.

  3. Dans le terminal en bas de l’écran, connectez-vous à Azure avec Azure Developer CLI.

    azd auth login
    

    Terminez le processus d’authentification.

  4. Les tâches restantes de cet article s’effectuent dans ce conteneur de développement.

Déployer et exécuter

L’exemple de référentiel contient tous les fichiers de code et de configuration dont vous avez besoin pour déployer l’application de conversation serverless sur Azure. Les étapes suivantes vous guident tout au long du processus de déploiement de l’exemple sur Azure.

Déployer une application de conversation sur Azure

Important

Les ressources Azure créées dans cette section entraînent des coûts immédiats, principalement de la ressource Recherche Azure AI. Ces ressources peuvent entraîner des coûts même si vous interrompez la commande avant la fin de exécution.

  1. Exécutez la commande Azure Developer CLI suivante pour provisionner les ressources Azure et déployer le code source :

    azd up
    
  2. Utilisez le tableau suivant pour répondre aux invites :

    Demander Réponse
    Nom de l’environnement Gardez-le court et en minuscules. Ajoutez votre nom ou alias. Par exemple : john-chat. Il est utilisé dans le cadre du nom du groupe de ressources.
    Abonnement Sélectionnez l’abonnement dans lequel créer les ressources.
    Emplacement (pour l’hébergement) Sélectionnez un emplacement près de vous dans la liste.
    Emplacement du modèle OpenAI Sélectionnez un emplacement près de vous dans la liste. Si le premier emplacement choisi est également disponible, sélectionnez-le.
  3. Attendez que l’application soit déployée. La fin du déploiement peut prendre 5 à 10 minutes.

  4. Une fois l’application déployée, deux URL s’affichent dans le terminal.

  5. Sélectionnez cette URL étiquetée Deploying service webapp pour ouvrir l’application de conversation dans un navigateur.

Utiliser l’application de conversation pour obtenir des réponses à partir de fichiers PDF

L’application de conversation est préchargée avec des informations de location à partir d’un catalogue de fichiers PDF. Vous pouvez utiliser l’application de conversation pour poser des questions sur le processus de location. Les étapes suivantes vous guident tout au long du processus d’utilisation de l’application de conversation.

  1. Dans le navigateur, sélectionnez ou entrez La stratégie de remboursement.

    Capture d’écran de la première question et réponse de l’application de conversation.

  2. Sélectionnez une question de suivi.

    Capture d’écran de l’invite de suivi suggérée de l’application de conversation et réponse

  3. Dans la réponse, sélectionnez la citation pour afficher le document utilisé pour générer la réponse. Cela remet le document de Stockage Azure au client. Lorsque vous avez terminé avec le nouvel onglet du navigateur, fermez-le pour revenir à l’application de conversation serverless.

    Capture d’écran du document d’origine contenant la citation.

Nettoyer les ressources

Nettoyage des ressources Azure

Les ressources Azure créées dans cet article sont facturées dans votre abonnement Azure. Si vous pensez ne plus avoir besoin de ces ressources, supprimez-les pour éviter des frais supplémentaires.

Exécutez la commande Azure Developer CLI suivante pour supprimer les ressources Azure et le code source :

azd down --purge

Nettoyer GitHub Codespaces

La suppression de l’environnement GitHub Codespaces vous permet d’optimiser le nombre d’heures gratuites par cœur que vous obtenez pour votre compte.

Important

Pour plus d’informations sur les droits de votre compte GitHub, consultez GitHub Codespaces mensuel inclus stockage et heures principales.

  1. Connectez-vous au tableau de bord GitHub Codespaces (https://github.com/codespaces).

  2. Localisez vos codespaces en cours d’exécution provenant du référentiel GitHub Azure-Samples/serverless-chat-langchainjs.

    Capture d’écran de tous les Codespaces en cours d’exécution, avec leur état et leurs modèles.

  3. Ouvrez le menu contextuel, ...pour l’espace de code, puis sélectionnez Supprimer.

Obtenir de l’aide

Cet exemple de référentiel propose des informations de résolution des problèmes.

Si votre problème n’est pas résolu, consignez votre problème dans les Problèmes du référentiel.