Partager via


Prise en main : Discuter à l’aide de vos propres données (exemple Python)

Cet article explique comment déployer et exécuter la conversation avec votre propre exemple de donnéesà l’aide d’exemples de code pour Python. Cet exemple d’application de conversation est créé avec Python, Azure OpenAI Service et Génération augmentée de récupération (RAG) via Recherche Azure AI.

L’application fournit des réponses aux questions des utilisateurs sur les avantages des employés dans une entreprise fictive. Il utilise Retrieval-Augmented Generation (RAG) pour référencer du contenu à partir de fichiers PDF fournis, notamment :

  • Manuel des employés
  • Un document de vue d’ensemble des avantages
  • Liste des rôles et attentes de l’entreprise

En analysant ces documents, l’application peut répondre aux requêtes en langage naturel avec des réponses précises et contextuellement pertinentes. Cette approche montre comment vous pouvez utiliser vos propres données pour alimenter des expériences de conversation intelligentes et spécifiques au domaine avec Azure OpenAI et Azure AI Search.

Vous allez également apprendre à configurer les paramètres de l’application pour modifier son comportement de réponse.

Après avoir effectué les étapes décrites dans cet article, vous pouvez commencer à personnaliser le projet avec votre propre code. Cet article fait partie d’une série qui vous guide tout au long de la création d’une application de conversation avec Azure OpenAI Service et Azure AI Search. Voici d’autres articles de cette série :

Remarque

Cet article est basé sur un ou plusieurs modèles d’application IA, qui servent d’implémentations de référence bien gérées. Ces modèles sont conçus pour être faciles à déployer et fournir un point de départ fiable et de haute qualité pour la création de vos propres applications IA.

Exemple d’architecture d’application

Le diagramme suivant montre une architecture simple de l’application de conversation.

Diagramme montrant l’architecture de l’exemple du client vers l’application de conversation principale avec des sources de données.

Les principaux composants de l’architecture sont les suivants :

  • Application web qui héberge l’interface de conversation interactive (généralement créée avec Python Flask ou JavaScript/React) et envoie des questions utilisateur au serveur principal pour le traitement.
  • Ressource Recherche d’IA Azure qui effectue une recherche intelligente sur des documents indexés (PDF, fichiers Word, etc.) et retourne des extraits de documents pertinents (segments) à utiliser dans les réponses.
  • Instance de service Azure OpenAI qui :
    • Convertit les documents et les questions utilisateur en représentations vectorielles pour la recherche de similarité sémantique.
    • Extrait les mots-clés importants pour affiner les requêtes de recherche Azure AI.
    • Synthétise les réponses finales à l’aide des données récupérées et de la requête utilisateur.

Le flux classique de l’application de conversation est le suivant :

  • L’utilisateur envoie une question : un utilisateur entre une question de langage naturel via l’interface de l’application web.
  • Azure OpenAI traite la question : le back-end utilise Azure OpenAI pour :
    • Générez une incorporation de la question à l’aide du modèle text-embedding-ada-002.
    • Si vous le souhaitez, extrayez des mots clés pour affiner la pertinence de la recherche
  • Azure AI Search récupère les données pertinentes : l’incorporation ou les mots clés sont utilisés pour effectuer une recherche sémantique sur du contenu indexé (par exemple, des fichiers PDF) dans Recherche IA Azure.
  • Combiner les résultats avec la question : les extraits de document les plus pertinents (segments) sont combinés avec la question d’origine de l’utilisateur.
  • Azure OpenAI génère une réponse : l’entrée combinée est transmise à un modèle GPT (par exemple, gpt-35-turbo ou gpt-4), qui génère une réponse prenant en compte le contexte.
  • La réponse est retournée à l’utilisateur : la réponse générée s’affiche dans l’interface de conversation.

Prérequis

Un environnement de conteneur de développement est disponible avec toutes les dépendances requises pour compléter 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 suivre les instructions de cet article, vous devez disposer des éléments suivants :

  • GitHub Codespaces (recommandé)
  • Visual Studio Code
  • Un abonnement Azure. Créez un compte gratuit avant de commencer.

  • Autorisations de compte Azure. Votre compte Azure doit disposer d’autorisations Microsoft.Authorization/roleAssignments/write. Les rôles tels que l’administrateur de l’accès utilisateur ou le propriétaire répondent à cette exigence.

  • Accès accordé à Azure OpenAI dans votre abonnement Azure. Dans la plupart des cas, vous pouvez créer des filtres de contenu personnalisés et gérer des niveaux de gravité avec un accès général aux modèles Azure OpenAI. L’inscription pour l’accès basé sur l’approbation n’est pas requise pour l’accès général. Pour plus d’informations, consultez fonctionnalités d’accès limité pour les services Azure AI.

  • Filtre de contenu ou modifications abusives (facultatif). Pour créer des filtres de contenu personnalisés, modifier les niveaux de gravité ou prendre en charge la surveillance des abus, vous avez besoin d’une approbation d’accès formelle. Vous pouvez demander l’accès en remplissant les formulaires d’inscription nécessaires. Pour plus d’informations, consultez Inscription pour les filtres de contenu modifiés et/ou la surveillance des abus.

  • Prise en charge et résolution des problèmes d’accès. Pour accéder à la résolution des problèmes, ouvrez un problème de support sur le dépôt GitHub.

  • Un compte GitHub. Requis pour dupliquer le référentiel et utiliser GitHub Codespaces ou le cloner localement.

Coût d’utilisation pour les exemples de ressources

La plupart des ressources utilisées dans cette architecture se trouvent sous des niveaux tarifaires de base ou basés sur la consommation. Cela signifie que vous payez uniquement pour ce que vous utilisez et que les frais sont généralement minimes pendant le développement ou les tests.

Pour effectuer cet exemple, il peut y avoir un petit coût lié à l’utilisation de services tels qu’Azure OpenAI, AI Search et le stockage. Une fois que vous avez terminé l’évaluation ou le déploiement de l’application, vous pouvez supprimer toutes les ressources approvisionnées pour éviter les frais en cours.

Pour obtenir une répartition détaillée des coûts attendus, consultez l’estimation des coûts dans le référentiel GitHub pour l’exemple.

Environnement de développement ouvert

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

  • GitHub Codespaces (recommandé)
  • Visual Studio Code

Ouvrir un environnement de développement

Utilisez les instructions suivantes pour déployer un environnement de développement préconfiguré contenant toutes les dépendances requises pour terminer cet article.

  • GitHub Codespaces (recommandé)
  • Visual Studio Code

Pour la configuration la plus simple et la plus rationalisée, utilisez GitHub Codespaces. GitHub Codespaces exécute un conteneur de développement géré par GitHub et fournit Visual Studio Code pour le web en tant qu’interface utilisateur. Cet environnement inclut tous les outils, kits SDK, extensions et dépendances requis préinstallés. Vous pouvez donc commencer à développer immédiatement sans configuration manuelle.

L’utilisation de Codespaces garantit :

  • Les outils et versions de développement corrects sont déjà installés.
  • Il n’est pas nécessaire d’installer Docker, VS Code ou des extensions localement.
  • Intégration rapide et configuration d’environnement reproductible.

Importante

Tous les comptes GitHub peuvent utiliser GitHub Codespaces pour jusqu’à 60 heures gratuites chaque mois avec 2 instances principales. Si vous dépassez le quota gratuit ou utilisez des options de calcul plus volumineuses, les tarifs de facturation GitHub Codespaces standard s’appliquent. Pour plus d’informations, consultez GitHub Codespaces - Heures de stockage et de cœur incluses mensuellement.

  1. Pour commencer à utiliser le projet d'exemple, créez un Codespace GitHub sur la branche main du dépôt GitHub Azure-Samples/azure-search-openai-demo.

    Cliquez avec le bouton droit sur GitHub Codespaces - Ouvrez l’option en haut de la page du référentiel, puis sélectionnez Ouvrir le lien dans la nouvelle fenêtre. Cela garantit que le conteneur de développement est lancé dans un onglet de navigateur dédié en plein écran, ce qui vous donne accès au code source et à la documentation intégrée.

    Image de l’option « Ouvrir dans GitHub Codespaces ».

  2. Dans la page Créer un espace de code , passez en revue les paramètres de configuration de l’espace de code, puis sélectionnez Créer un espace de code :

    Capture d’écran de confirmation de la création d’un espace de code GitHub pour l’exemple.

    Attendez que l’espace de code GitHub démarre. Le processus de démarrage peut prendre quelques minutes.

  3. Une fois l’espace de code GitHub ouvert, connectez-vous à Azure avec Azure Developer CLI en entrant la commande suivante dans le volet Terminal de l’espace de code :

    azd auth login
    

    GitHub affiche un code de sécurité dans le volet Terminal.

    1. Copiez le code de sécurité dans le volet Terminal, puis sélectionnez Entrée. Une fenêtre de navigateur s'ouvre.

    2. À l’invite, collez le code de sécurité dans le champ du navigateur.

    3. Suivez les instructions pour vous authentifier avec votre compte Azure.

Vous effectuez les tâches GitHub Codespaces restantes dans cet article dans le contexte de ce conteneur de développement.

Déployer une application de conversation sur Azure

L’exemple de référentiel inclut tout ce dont vous avez besoin pour déployer une conversation avec votre propre application de données sur Azure, notamment :

  • Code source de l’application (Python)
  • Fichiers infrastructure en tant que code (Bicep)
  • Configuration pour l’intégration de GitHub et CI/CD (facultatif)

Procédez comme suit pour déployer l’application avec Azure Developer CLI (azd).

Importante

Les ressources Azure créées dans cette section, en particulier Azure AI Search, peuvent commencer à accumuler des frais immédiatement lors de l’approvisionnement, même si le déploiement est interrompu avant la fin. Pour éviter les frais inattendus, surveillez votre utilisation d’Azure et supprimez les ressources inutilisées rapidement après le test.

  1. Dans le volet Terminal Visual Studio Code, créez les ressources Azure et déployez le code source en exécutant la commande suivante azd :

    azd up
    
  2. Le processus vous invite à entrer un ou plusieurs des paramètres suivants en fonction de votre configuration :

    • Nom de l’environnement : cette valeur est utilisée dans le cadre du nom du groupe de ressources. Entrez un nom court avec des lettres minuscules et des tirets (-, tels que myenv). Les lettres majuscules, les chiffres et les caractères spéciaux ne sont pas pris en charge.

    • Abonnement : sélectionnez un abonnement pour créer les ressources. Si vous ne voyez pas votre abonnement souhaité, utilisez les touches de direction pour faire défiler la liste complète des abonnements disponibles.

    • Emplacement : cet emplacement de région est utilisé pour la plupart des ressources, y compris l’hébergement. Sélectionnez un emplacement de région près de vous géographiquement.

    • Emplacement du modèle OpenAI ou de la ressource Document Intelligence : sélectionnez l’emplacement le plus proche géographiquement. Si la région sélectionnée pour votre emplacement est disponible pour ce paramètre, sélectionnez la même région.

    Le déploiement de l’application peut prendre un certain temps. Attendez que le déploiement se termine avant de continuer.

  3. Une fois l’application déployée, le volet Terminal affiche une URL de point de terminaison :

    Capture d’écran montrant l’URL du point de terminaison de l’application déployée comme indiqué après l’achèvement du processus « azd up ».

  4. Sélectionnez l’URL du point de terminaison pour ouvrir l’application de conversation dans un navigateur :

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

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 sur les avantages sociaux des employés provenant de fichiers PDF. Vous pouvez utiliser l’application de conversation pour poser des questions sur les avantages sociaux. Les étapes suivantes vous guident tout au long du processus d’utilisation de l’application de conversation. Vos réponses peuvent varier à mesure que les modèles sous-jacents sont mis à jour.

  1. Dans l’application de conversation, sélectionnez l’option Que se passe-t-il dans une révision des performances ? ou entrez le même texte dans la zone de texte de conversation. L’application retourne la réponse initiale :

    Capture d’écran de la réponse initiale de l’application de conversation pour la question, Que se passe-t-il dans une révision des performances ?

  2. Dans la zone de réponse, sélectionnez une citation :

    Capture d’écran montrant une citation mise en surbrillance dans la zone de réponse de l’application de conversation.

  3. GitHub Codespaces ouvre le volet Citation de droite avec trois régions à onglets et le focus se trouve sous l’onglet Citation :

    Capture d’écran du volet droit ouvert dans GitHub Codespaces avec des informations visibles pour l’onglet Citation.

    GitHub Codespaces fournit trois onglets d’informations pour vous aider à comprendre comment l’application de conversation a généré la réponse :

    Tab Descriptif
    Processus de réflexion Affiche un script des interactions question/réponse dans la conversation. Vous pouvez afficher le contenu fourni par l’application systemde conversation, les questions entrées par le usersystème et les clarifications effectuées par le système assistant.
    Contenu de support Répertorie les informations utilisées pour répondre à votre question et au matériel source. Le nombre de citations de matériaux sources est spécifié par les paramètres du développeur. Le nombre par défaut de citations est 3.
    Citation Affiche la source d’origine contenant la citation sélectionnée.
  4. Lorsque vous avez terminé, sélectionnez l’onglet actuellement sélectionné dans le volet droit. Le volet droit se ferme.

Utiliser les paramètres pour modifier le comportement de la réponse

Le modèle OpenAI spécifique détermine l’intelligence de la conversation et les paramètres utilisés pour interagir avec le modèle. L’option Paramètres du développeur ouvre le volet Configurer la génération de réponses dans lequel vous pouvez modifier les paramètres de l’application de conversation :

Capture d’écran des paramètres du développeur disponibles dans le volet droit de l’application de conversation.

Réglage Descriptif
Remplacer le modèle d’invite Remplace l’invite utilisée pour générer la réponse en fonction de la question et des résultats de la recherche.
Température Définit la température de la requête sur le modèle de langage volumineux (LLM) qui génère la réponse. Des températures plus élevées entraînent des réponses plus créatives, mais elles peuvent être moins ancrées.
Graine Définit une valeur de départ pour améliorer la reproductibilité des réponses du modèle. La graine peut être n’importe quel entier.
Score minimal de recherche Définit un score minimal pour les résultats de recherche retournés par Recherche Azure AI. La plage de scores dépend de l’utilisation de vecteurs hybrides (par défaut), de vecteurs uniquement ou de texte uniquement pour le paramètre de mode de récupération .
Score de reclassement minimum Définit un score minimal pour les résultats de la recherche retournés par le reclasseur sémantique. Le score est toujours compris entre 0 et 4. Plus le score est élevé, plus le résultat est sémantiquement pertinent par rapport à la question.
Récupérer ces nombreux résultats de recherche Définit le nombre de résultats de recherche à récupérer à partir d’Azure AI Search. D’autres résultats peuvent augmenter la probabilité de trouver la réponse correcte, mais peuvent entraîner la perte du modèle au milieu. Vous pouvez voir les sources retournées dans les onglets Processus de réflexion et Contenu de prise en charge du volet Citation .
Inclure une catégorie Spécifie les catégories à inclure lors de la génération des résultats de la recherche. Utilisez la liste déroulante pour effectuer votre sélection. L’action par défaut consiste à inclure toutes les catégories.
Exclure la catégorie Spécifie toutes les catégories à exclure des résultats de la recherche. Aucune catégorie n’est utilisée dans le jeu de données par défaut.
Utiliser le ranker sémantique pour la recherche Active le ranker sémantique d'Azure AI Search, un modèle qui réorganise les résultats de recherche en fonction de la similarité sémantique avec la requête de l'utilisateur.
Utiliser des légendes sémantiques Envoie des légendes sémantiques au LLM au lieu du résultat de recherche complet. Une légende sémantique est extraite d’un résultat de recherche pendant le processus de classement sémantique.
Suggérer des questions de suivi Demande au LLM de suggérer des questions de suivi en fonction de la requête de l’utilisateur.
Mode de récupération Définit le mode de récupération pour la requête de la Recherche Azure AI. L’action par défaut est Vectors + Text (Hybride) qui utilise une combinaison de recherche vectorielle et de recherche en texte intégral. L’option Vectors utilise uniquement la recherche vectorielle. L’option Texte utilise uniquement la recherche en texte intégral. L’approche hybride est optimale.
Diffuser en continu les réponses de saisie semi-automatique du chat Diffuse en continu la réponse à l’interface utilisateur de conversation au fur et à mesure que le contenu est généré.

Les étapes suivantes vous guident tout au long du processus de modification des paramètres.

  1. Dans le navigateur, sélectionnez l’option Paramètres du développeur .

  2. Cochez la case Suggérer des questions de suivi pour activer l’option, puis sélectionnez Fermer pour appliquer la modification du paramètre.

  3. Dans l'application de chat, reposez la question, cette fois en entrant le texte dans la zone de question :

    What happens in a performance review?
    

    La réponse de l’application de conversation comprend désormais des questions de suivi suggérées :

    Capture d’écran montrant comment l’application de conversation fournit des questions de suivi suggérées après la réponse.

  4. Sélectionnez à nouveau l’option Paramètres du développeur , puis désélectionnez Utiliser le ranker sémantique pour l’option de récupération . Fermez les paramètres.

  5. Posez la même question et notez la différence dans la réponse de l’application de conversation.

    Avec le ranker sémantique : « Lors d’une révision des performances chez Contoso Electronics, votre superviseur discutera de vos performances au cours de la dernière année et fournira des commentaires sur les domaines d’amélioration. Vous aurez également la possibilité de discuter de vos objectifs et objectifs pour l’année à venir. L’examen est un dialogue bidirectionnel entre les gestionnaires et les employés, et il est encouragé pour que les employés soient honnêtes et ouverts pendant le processus (1). Les commentaires fournis lors de l’examen devraient être positifs et constructifs, visant à aider les employés à développer et à développer leurs rôles. Les employés recevront un résumé écrit de leur évaluation des performances, qui comprendra une évaluation de leurs performances, commentaires et objectifs pour l’année à venir (1).

    Sans le classement sémantique : « Lors d’une révision des performances chez Contoso Electronics, votre superviseur discutera de vos performances au cours de l’année passée et fournira des commentaires sur les domaines d’amélioration. C’est un dialogue bidirectionnel où vous êtes encouragé à être honnête et ouvert (1). Les commentaires fournis pendant l’examen devraient être positifs et constructifs, visant à vous aider à développer et à grandir dans votre rôle. Vous recevrez un résumé écrit de la révision, y compris une évaluation de vos performances, commentaires et objectifs pour l’année à venir (1).

Nettoyer les ressources

Une fois l’exercice terminé, il est recommandé de supprimer les ressources qui ne sont plus nécessaires.

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.

Supprimez les ressources Azure et supprimez le code source en exécutant la commande suivante azd :

azd down --purge --force

Les commutateurs de commande sont les suivants :

  • purge: les ressources supprimées sont immédiatement vidées. Cette option vous permet de réutiliser la métrique des jetons Azure OpenAI par minute (TPM).
  • force : la suppression se produit de manière silencieuse, sans exiger le consentement de l’utilisateur.

Nettoyer GitHub Codespaces

  • GitHub Codespaces
  • Visual Studio Code

La suppression de l'environnement GitHub Codespaces garantit que vous pouvez maximiser le nombre d'heures gratuites par cœur auxquelles vous avez droit pour votre compte.

Importante

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

  1. Connectez-vous au tableau de bord GitHub Codespaces .

  2. Dans le tableau de bord, recherchez vos espaces de code en cours d’exécution provenant du Azure-Samples/azure-search-openai-demo dépôt GitHub :

    Capture d’écran de tous les espaces de code GitHub en cours d’exécution, y compris leur état et leurs modèles.

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

    Capture d’écran du menu contextuel d’un espace de code unique avec l’option de suppression mise en surbrillance.

Obtenir de l’aide

Cet exemple de référentiel propose des informations pour résoudre les problèmes.

Si votre problème n’est pas traité, ajoutez-le à la page web des problèmes du référentiel.