Partager via


IA : Azure OpenAI sur vos données

L’intégration d’Azure OpenAI Natural Language Processing (NLP) et des fonctionnalités d’achèvement offre un potentiel significatif pour améliorer la productivité des utilisateurs. En tirant parti des invites et des règles appropriées, un assistant IA peut générer efficacement différentes formes de communication, telles que les messages électroniques, les sms et bien plus encore. Cette fonctionnalité entraîne une amélioration de l’efficacité des utilisateurs et des flux de travail simplifiés.

Bien que cette fonctionnalité soit assez puissante par elle-même, il peut arriver que les utilisateurs doivent générer des achèvements en fonction des données personnalisées de votre entreprise. Par exemple, vous pouvez avoir une collection de manuels de produits qui peuvent être difficiles pour les utilisateurs à naviguer lorsqu’ils aident les clients à rencontrer des problèmes d’installation. Vous pouvez également gérer un ensemble complet de questions fréquentes (FAQ) liées aux avantages médicaux qui peuvent être difficiles pour les utilisateurs à lire et obtenir les réponses dont ils ont besoin. Dans ces cas et bien d’autres, Azure OpenAI Service vous permet de tirer parti de vos propres données pour générer des achèvements, ce qui garantit une réponse plus personnalisée et contextuellement précise aux questions des utilisateurs.

Voici une vue d’ensemble rapide de la façon dont la fonctionnalité « apporter vos propres données » fonctionne à partir de la documentation Azure OpenAI.

Remarque

L’une des principales fonctionnalités d’Azure OpenAI sur vos données est sa capacité à récupérer et à utiliser les données de manière à améliorer la sortie du modèle. Azure OpenAI sur vos données, en combinaison avec Recherche Azure AI, détermine les données à récupérer auprès de la source de données désignée en fonction de l’entrée utilisateur et de l’historique des conversations fourni. Ces données sont ensuite augmentées et soumises à nouveau en tant qu’invite au modèle OpenAI, les informations récupérées étant ajoutées à l’invite d’origine. Bien que les données récupérées soient ajoutées à l’invite, l’entrée résultante est toujours traitée par le modèle comme n’importe quelle autre invite. Une fois que les données ont été récupérées et que l’invite a été envoyée au modèle, le modèle utilise ces informations pour fournir une saisie semi-automatique.

Dans cet exercice, vous allez :

  • Créez une source de données personnalisée à l’aide du portail Azure AI Foundry.
  • Déployez un modèle d’incorporation à l’aide du portail Azure AI Foundry.
  • Chargez des documents personnalisés.
  • Démarrez une session de conversation dans le terrain de jeu de conversation pour expérimenter la génération d’achèvements en fonction de vos propres données.
  • Explorez le code qui utilise Azure AI Search et Azure OpenAI pour générer des achèvements basés sur vos propres données.

Commençons par déployer un modèle d’incorporation et ajouter une source de données personnalisée dans Azure AI Foundry.

Ajout d’une source de données personnalisée à Azure AI Foundry

  1. Accédez à Azure OpenAI Studio et connectez-vous avec les informations d’identification qui ont accès à votre ressource Azure OpenAI.

  2. Sélectionnez Déploiements dans le menu de navigation.

  3. Sélectionnez Sélectionner déployer un modèle -->Déployer un modèle de base dans la barre d’outils.

  4. Sélectionnez le modèle text-embedding-ada-002 dans la liste des modèles, puis sélectionnez Confirmer.

  5. Sélectionnez les options suivantes :

    • Nom du déploiement : text-embedding-ada-002
    • Version du modèle : valeur par défaut
    • Type de déploiement : Standard
    • Définir la valeur de la limite de débit des jetons par minute (milliers) sur 120 000 000
    • Filtre de contenu : DefaultV2
    • Activer le devis dynamique : activé
  6. Sélectionnez le bouton Déployer.

  7. Une fois le modèle créé, sélectionnez Accueil dans le menu de navigation pour accéder à l’écran d’accueil.

  8. Recherchez la vignette Apporter vos propres données sur l’écran d’accueil, puis sélectionnez Essayer maintenant.

    Azure OpenAI Studio Apportez vos propres données

  9. Sélectionnez Ajouter vos données suivie d’ajouter une source de données.

  10. Dans la liste déroulante Sélectionner une source de données , sélectionnez Charger des fichiers.

  11. Sous la liste déroulante Sélectionner une ressource stockage Blob Azure , sélectionnez Créer une ressource de stockage Blob Azure.

  12. Sélectionnez votre abonnement Azure dans la liste déroulante Abonnement .

  13. Sous la liste déroulante Sélectionner une ressource stockage Blob Azure , sélectionnez Créer une ressource de stockage Blob Azure.

  14. Vous accédez à l’Portail Azure où vous pouvez effectuer les tâches suivantes :

    • Entrez un nom unique pour le compte de stockage tel que byodstorage[Votre nom].
    • Sélectionnez une région proche de votre emplacement.
    • Sélectionnez Révision suivie de Créer.
  15. Une fois la ressource de stockage d’objets blob créée, revenez à la boîte de dialogue Azure AI Foundry et sélectionnez votre ressource de stockage d’objets blob nouvellement créée dans la liste déroulante Sélectionner une ressource stockage Blob Azure . Si vous ne la voyez pas répertoriée, sélectionnez l’icône d’actualisation en regard de la liste déroulante.

  16. Le partage de ressources inter-origines (CORS) doit être activé pour que votre compte de stockage soit accessible. Sélectionnez Activer CORS dans la boîte de dialogue Azure AI Foundry.

    Azure OpenAI Studio Apportez vos propres données activez CORS

  17. Sous la liste déroulante Sélectionner une ressource Recherche d’IA Azure , sélectionnez Créer une ressource Recherche Azure AI.

  18. Cela vous ramène à la Portail Azure où vous pouvez effectuer les tâches suivantes :

    • Entrez un nom unique pour la ressource RECHERCHE IA, telle que byodsearch-[Votre nom].
    • Sélectionnez une région proche de votre emplacement.
    • Dans la section Niveau tarifaire, sélectionnez Modifier le niveau tarifaire, puis Sélectionnez De base. Le niveau gratuit n’est pas pris en charge. Vous allez donc nettoyer la ressource RECHERCHE IA à la fin de ce tutoriel.
    • Sélectionnez Révision suivie de Créer.
  19. Une fois la ressource RECHERCHE IA créée, accédez à la page Vue d’ensemble de la ressource et copiez la valeur url dans un fichier local.

    URL de recherche d’IA Azure OpenAI Studio

  20. Sélectionnez Paramètres -->Clés dans le menu de navigation.

  21. Dans la page de contrôle d’accès à l’API , sélectionnez Les deux pour permettre au service d’accéder à l’aide de l’identité managée ou à l’aide d’une clé. Sélectionnez Oui lorsque vous y êtes invité.

    Remarque

    Bien que nous utilisons une clé API dans cet exercice, car l’ajout d’attributions de rôles peut prendre jusqu’à 10 minutes, avec un peu d’effort supplémentaire, vous pouvez activer une identité managée affectée par le système pour accéder au service de manière plus sécurisée.

  22. Sélectionnez Clés dans le menu de navigation de gauche et copiez la valeur de la clé d’administration principale dans un fichier local. Vous aurez besoin des valeurs d’URL et de clé plus loin dans l’exercice.

  23. Sélectionnez Settings -->Semantic ranker dans le menu de navigation et vérifiez que Free est sélectionné.

    Remarque

    Pour vérifier si le ranker sémantique est disponible dans une région spécifique, consultez la page Produits disponibles par région sur le site web Azure pour voir si votre région est répertoriée.

  24. Revenez à la boîte de dialogue Ajouter des données Azure AI Foundry et sélectionnez votre ressource de recherche nouvellement créée dans la liste déroulante Sélectionner une ressource Recherche d’IA Azure . Si vous ne la voyez pas répertoriée, sélectionnez l’icône d’actualisation en regard de la liste déroulante.

  25. Entrez la valeur byod-search-index pour entrer la valeur du nom de l’index .

  26. Cochez la case Ajouter une recherche vectorielle à cette ressource de recherche .

  27. Dans la liste déroulante Sélectionner un modèle d’incorporation , sélectionnez le modèle text-embedding-ada-002 que vous avez créé précédemment.

  28. Dans la boîte de dialogue Charger des fichiers , sélectionnez Rechercher un fichier.

  29. Accédez au dossier des documents clients du projet (situé à la racine du projet) et sélectionnez les fichiers suivants :

    • Horloge A102 Installation Instructions.docx
    • FAQs.docxd’entreprise

    Remarque

    Cette fonctionnalité prend actuellement en charge les formats de fichiers suivants pour la création d’index local : .txt, .md, .html, .pdf, .docx et .pptx.

  30. Sélectionnez Charger des fichiers. Les fichiers seront chargés dans un conteneur fileupload-byod-search-index dans la ressource de stockage d’objets blob que vous avez créée précédemment.

  31. Sélectionnez Suivant pour accéder à la boîte de dialogue Gestion des données .

  32. Dans la liste déroulante type de recherche , sélectionnez Hybrid + semantic.

    Remarque

    Cette option prend en charge la recherche de mots clés et de vecteurs. Une fois les résultats retournés, un processus de classement secondaire est appliqué au jeu de résultats à l’aide de modèles d’apprentissage profond qui améliorent la pertinence de la recherche pour l’utilisateur. Pour en savoir plus sur la recherche sémantique, consultez la recherche sémantique dans la documentation Recherche d’IA Azure .

  33. Vérifiez que la valeur Sélectionner une taille est définie sur 1024.

  34. Cliquez sur Suivant.

  35. Pour le type d’authentification des ressources Azure, sélectionnez la clé API. En savoir plus sur la sélection du type d’authentification approprié dans la documentation d’authentification Azure AI Search.

  36. Cliquez sur Suivant.

  37. Passez en revue les détails, puis sélectionnez Enregistrer et fermer.

  38. Maintenant que vos données personnalisées ont été chargées, les données seront indexées et disponibles pour être utilisées dans le terrain de jeu de conversation. Cette opération peut prendre quelques minutes. Une fois l’opération terminée, passez à la section suivante.

Utilisation de votre source de données personnalisée dans le terrain de jeu de conversation

  1. Recherchez la section Session conversation de la page dans Azure OpenAI Studio et entrez la requête Utilisateur suivante :

    What safety rules are required to install a clock?
    
  2. Après avoir envoyé la requête utilisateur, vous devez voir un résultat similaire à ce qui suit :

    Session de conversation Azure OpenAI Studio - Règles de sécurité d’installation de l’horloge

  3. Développez la section 1 références dans la réponse de conversation et notez que le fichier d’installation de l’horloge A102 Instructions.docx est répertorié et que vous pouvez le sélectionner pour afficher le document.

  4. Entrez le message utilisateur suivant :

    What should I do to mount the clock on the wall?
    
  5. Vous devez voir un résultat similaire à ce qui suit :

    Session de conversation Azure OpenAI Studio - Instructions de montage d’horloge

  6. À présent, nous allons expérimenter le document Faq sur l’entreprise. Entrez le texte suivant dans le champ requête Utilisateur :

    What is the company's policy on vacation time?
    
  7. Vous devriez voir qu’aucune information n’a été trouvée pour cette demande.

  8. Entrez le texte suivant dans le champ requête Utilisateur :

    How should I handle refund requests?
    
  9. Vous devez voir un résultat similaire à ce qui suit :

    Session de conversation Azure OpenAI Studio - Résultats des questions fréquentes (FAQ)

  10. Développez la section 1 références dans la réponse de conversation et notez que le fichier FAQs.docxsociété est répertorié et que vous pouvez le sélectionner pour afficher le document.

  11. Sélectionnez Afficher le code dans la barre d’outils du terrain de jeu de conversation.

    Session de conversation Azure OpenAI Studio - Afficher le code

  12. Notez que vous pouvez basculer entre différentes langues, afficher le point de terminaison et accéder à la clé du point de terminaison. Fermez la fenêtre de boîte de dialogue Exemple de code .

    Session de conversation Azure OpenAI Studio - Exemple de code

  13. Activez le bouton bascule Afficher le code JSON brut au-dessus des messages de conversation. Notez que la session de conversation commence par un message similaire à ce qui suit :

    {
        "role": "system",
        "content": "You are an AI assistant that helps people find information."
    }
    
  14. Maintenant que vous avez créé une source de données personnalisée et que vous l’avez expérimenté dans le terrain de jeux de conversation, voyons comment vous pouvez l’utiliser dans l’application du projet.

Utilisation de la fonctionnalité Apporter vos propres données dans l’application

  1. Revenez au projet dans VS Code et ouvrez le fichier .env . Mettez à jour les valeurs suivantes avec votre point de terminaison, votre clé et votre nom d’index AI Services. Vous avez copié le point de terminaison et la clé dans un fichier local précédemment dans cet exercice.

    AZURE_AI_SEARCH_ENDPOINT=<AI_SERVICES_ENDPOINT_VALUE>
    AZURE_AI_SEARCH_KEY=<AI_SERVICES_KEY_VALUE>
    AZURE_AI_SEARCH_INDEX=byod-search-index
    
  2. Dans un exercice précédent , vous avez démarré la base de données, les API et l’application. Vous avez également mis à jour le .env fichier. Si vous n’avez pas effectué ces étapes, suivez les instructions à la fin de l’exercice précédent avant de continuer.

  3. Une fois l’application chargée dans le navigateur, sélectionnez l’icône Aide de conversation en haut à droite de l’application.

    Icône d’aide de conversation

  4. Le texte suivant doit apparaître dans la boîte de dialogue de conversation :

    How should I handle a company refund request?
    
  5. Sélectionnez le bouton Obtenir de l’aide. Vous devez voir les résultats renvoyés par le document FAQs.docxsociété que vous avez chargé précédemment dans Azure OpenAI Studio. Si vous souhaitez lire le document, vous pouvez le trouver dans le dossier des documents clients à la racine du projet.

  6. Remplacez le texte par ce qui suit, puis sélectionnez le bouton Obtenir de l’aide :

    What safety rules are required to install a clock?
    
  7. Vous devriez voir les résultats retournés à partir du document d’installation De l’horloge A102 Instructions.docx que vous avez téléchargé précédemment dans Azure OpenAI Studio. Ce document est également disponible dans le dossier documents client à la racine du projet.

Exploration du code

Conseil / Astuce

Si vous utilisez Visual Studio Code, vous pouvez ouvrir des fichiers directement en sélectionnant :

  • Windows/Linux : Ctrl + P
  • Mac : Cmd + P

Tapez ensuite le nom du fichier que vous souhaitez ouvrir.

  1. Revenez au code source du projet dans Visual Studio Code.

  2. Ouvrez le fichier serveur/apiRoutes.ts et recherchez l’itinéraire completeBYOD . Cette API est appelée lorsque le bouton Obtenir de l’aide est sélectionné dans la boîte de dialogue Aide de conversation. Il récupère l’invite de l’utilisateur à partir du corps de la requête et le transmet à la completeBYOD() fonction dans le fichier serveur/openAI.ts . Les résultats sont ensuite retournés au client.

    router.post('/completeBYOD', async (req, res) => {
        const { prompt } = req.body;
    
        if (!prompt) {
            return res.status(400).json({ 
                status: false, 
                error: 'The prompt parameter must be provided.' 
            });
        }
    
        let result;
        try {
            // Call OpenAI to get custom "bring your own data" completion
        result = await completeBYOD(prompt);
        }
        catch (e: unknown) {
            console.error('Error parsing JSON:', e);
        }
    
        res.json(result);
    });
    
  3. Ouvrez le fichier serveur/openAI.ts et recherchez la completeBYOD() fonction.

    async function completeBYOD(userPrompt: string): Promise<string> {
        const systemPrompt = 'You are an AI assistant that helps people find information in documents.';
        return await callOpenAI(systemPrompt, userPrompt, 0, true);
    }
    

    Cette fonction a les fonctionnalités suivantes :

    • Le userPrompt paramètre contient les informations que l’utilisateur a tapées dans la boîte de dialogue d’aide de conversation.
    • la systemPrompt variable définit qu’un assistant IA conçu pour aider les personnes à trouver des informations sera utilisé.
    • callOpenAI() est utilisé pour appeler l’API Azure OpenAI et retourner les résultats. Il transmet les systemPrompt valeurs et userPrompt les paramètres suivants :
      • temperature - Quantité de créativité à inclure dans la réponse. L’utilisateur a besoin de réponses cohérentes (moins créatives) dans ce cas, de sorte que la valeur est définie sur 0.
      • useBYOD - Valeur booléenne qui indique s’il faut ou non utiliser la recherche IA avec Azure OpenAI. Dans ce cas, elle est définie pour true que la fonctionnalité Recherche IA soit utilisée.
  4. La callOpenAI() fonction accepte un useBYOD paramètre utilisé pour déterminer la fonction OpenAI à appeler. Dans ce cas, elle définit useBYODtrue la valeur pour que la getAzureOpenAIBYODCompletion() fonction soit appelée.

    function callOpenAI(systemPrompt: string, userPrompt: string, temperature = 0, useBYOD = false) {
        const isAzureOpenAI = OPENAI_API_KEY && OPENAI_ENDPOINT && OPENAI_MODEL;
    
        if (isAzureOpenAI) {
            if (useBYOD) {
                return getAzureOpenAIBYODCompletion(systemPrompt, userPrompt, temperature);
            }
            return getAzureOpenAICompletion(systemPrompt, userPrompt, temperature);
        }
    
        return getOpenAICompletion(systemPrompt, userPrompt, temperature);
    }
    
  5. Recherchez la getAzureOpenAIBYODCompletion() fonction dans le serveur/openAI.ts. Il est assez similaire à la getAzureOpenAICompletion() fonction que vous avez examinée précédemment, mais est montré comme une fonction distincte pour mettre en évidence quelques différences clés qui sont propres au scénario « Azure OpenAI sur vos données » disponible dans Azure OpenAI.

    async function getAzureOpenAIBYODCompletion(systemPrompt: string, userPrompt: string, temperature: number): Promise<string> {
        const dataSources = [
            {
                type: 'azure_search',
                parameters: {
                    authentication: {
                        type: 'api_key',
                        key: AZURE_AI_SEARCH_KEY
                    },
                    endpoint: AZURE_AI_SEARCH_ENDPOINT,
                    index_name: AZURE_AI_SEARCH_INDEX
                }
            }
        ];
    
        const completion = await createAzureOpenAICompletion(systemPrompt, userPrompt, temperature, dataSources) as AzureOpenAIYourDataResponse;
        console.log('Azure OpenAI Add Your Own Data Output: \n', completion.choices[0]?.message);
        for (let citation of completion.choices[0]?.message?.context?.citations ?? []) {
            console.log('Citation Path:', citation.filepath);
        }
        return completion.choices[0]?.message?.content?.trim() ?? '';
    }
    

    Notez les fonctionnalités suivantes dans la getAzureOpenAIBYODCompletion() fonction :

    • Une dataSources propriété est créée qui contient les valeurs de keyla ressource RECHERCHE IA, endpointet index_name les valeurs qui ont été ajoutées au .env fichier précédemment dans cet exercice
    • La createAzureOpenAICompletion() fonction est appelée avec les valeurs, les systemPromptuserPromptvaleurs et temperature les dataSourcesvaleurs. Cette fonction est utilisée pour appeler l’API Azure OpenAI et retourner les résultats.
    • Une fois la réponse retournée, les citations de document sont consignées dans la console. Le contenu du message d’achèvement est ensuite retourné à l’appelant.
  6. Quelques points finaux à prendre en compte avant de passer à l’exercice suivant :

    • L’exemple d’application utilise un index unique dans Recherche IA Azure. Vous pouvez utiliser plusieurs index et sources de données avec Azure OpenAI. La dataSources propriété de la getAzureOpenAIBYODCompletion() fonction peut être mise à jour pour inclure plusieurs sources de données si nécessaire.
    • La sécurité doit être soigneusement évaluée avec ce type de scénario. Les utilisateurs ne doivent pas être en mesure de poser des questions et d’obtenir les résultats des documents auxquels ils ne peuvent pas accéder.
  7. Maintenant que vous avez découvert Azure OpenAI, les invites, les achèvements et la façon dont vous pouvez utiliser vos propres données, nous allons à l’exercice suivant pour découvrir comment les fonctionnalités de communication peuvent être utilisées pour améliorer l’application. Si vous souhaitez en savoir plus sur Azure OpenAI, consultez le contenu de formation Azure OpenAI Service . Vous trouverez des informations supplémentaires sur l’utilisation de vos propres données avec Azure OpenAI dans la documentation d’Azure OpenAI .

Étape suivante