Cette solution crée une expérience frontale de type ChatGPT sur vos propres documents à l'aide de RAG (Retrieval Augmented Generation). Il utilise Azure OpenAI Service pour accéder aux modèles GPT et Azure AI Search pour l'indexation et la récupération des données.
Le backend de cette solution est écrit en Python. Il existe également des exemples JavaScript , .NET et Java basés sur celui-ci. Apprenez-en davantage sur le développement d’applications IA à l’aide d’Azure AI Services.
Regardez une vidéo de présentation de l'application.
Cet exemple montre quelques approches pour créer des expériences de type ChatGPT sur vos propres données à l'aide du modèle Retrieval Augmented Generation. Il utilise Azure OpenAI Service pour accéder à un modèle GPT (gpt-35-turbo) et Azure AI Search pour l'indexation et la récupération des données.
Le dépôt comprend des exemples de données, il est donc prêt à être essayé de bout en bout. Dans cet exemple d'application, nous utilisons une entreprise fictive appelée Contoso Electronics, et l'expérience permet à ses employés de poser des questions sur les avantages sociaux, les politiques internes, ainsi que les descriptions de poste et les rôles.
IMPORTANT : Pour déployer et exécuter cet exemple, vous aurez besoin :
Microsoft.Authorization/roleAssignments/write
, telles que Administrateur de contrôle d'accès basé sur le rôle, Administrateur d'accès utilisateur ou Propriétaire. Si vous ne disposez pas d'autorisations au niveau de l'abonnement, vous devez disposer de RBAC pour un groupe de ressources existant et déployer sur ce groupe existant.Microsoft.Resources/deployments/write
au niveau de l'abonnement.Les prix varient selon la région et l'utilisation, il n'est donc pas possible de prédire les coûts exacts de votre utilisation. Cependant, vous pouvez essayer le calculateur de tarification Azure pour les ressources ci-dessous.
Pour réduire les coûts, vous pouvez passer à des SKU gratuits pour divers services, mais ces SKU ont des limites. Consultez ce guide sur le déploiement à moindre coût pour plus de détails.
azd down
.
Vous disposez de quelques options pour mettre en place ce projet. Le moyen le plus simple de commencer est GitHub Codespaces, car il configurera tous les outils pour vous, mais vous pouvez également le configurer localement si vous le souhaitez.
Vous pouvez exécuter ce référentiel virtuellement en utilisant GitHub Codespaces, qui ouvrira un VS Code Web dans votre navigateur :
Une fois l'espace de code ouvert (cela peut prendre plusieurs minutes), ouvrez une fenêtre de terminal.
Une option connexe est VS Code Dev Containers, qui ouvrira le projet dans votre VS Code local à l'aide de l'extension Dev Containers :
Démarrez Docker Desktop (installez-le s'il n'est pas déjà installé)
Ouvrez le projet :
Dans la fenêtre VS Code qui s'ouvre, une fois les fichiers du projet affichés (cela peut prendre plusieurs minutes), ouvrez une fenêtre de terminal.
Installez les outils requis :
python --version
depuis la console. Sur Ubuntu, vous devrez peut-être exécuter sudo apt install python-is-python3
pour lier python
à python3
.pwsh.exe
à partir d'un terminal PowerShell. Si cela échoue, vous devrez probablement mettre à niveau PowerShell.Créez un nouveau dossier et accédez-y dans le terminal.
Exécutez cette commande pour télécharger le code du projet :
azd init -t azure-search-openai-demo
Notez que cette commande initialisera un référentiel git, vous n'avez donc pas besoin de cloner ce référentiel.
Les étapes ci-dessous permettront de provisionner les ressources Azure et de déployer le code de l'application sur Azure Container Apps. Pour déployer sur Azure App Service, suivez le guide de déploiement d’App Service.
Connectez-vous à votre compte Azure :
azd auth login
Pour les utilisateurs de GitHub Codespaces, si la commande précédente échoue, essayez :
azd auth login --use-device-code
Créez un nouvel environnement azd :
azd env new
Entrez un nom qui sera utilisé pour le groupe de ressources. Cela créera un nouveau dossier dans le dossier .azure
et le définira comme environnement actif pour tout appel à azd
à venir.
(Facultatif) C'est à ce stade que vous pouvez personnaliser le déploiement en définissant des variables d'environnement, afin d'utiliser les ressources existantes, d'activer des fonctionnalités facultatives (telles que l'authentification ou la vision) ou de déployer vers des niveaux gratuits.
Exécuter azd up
: cela permettra de provisionner les ressources Azure et de déployer cet exemple sur ces ressources, notamment en créant l'index de recherche basé sur les fichiers trouvés dans le dossier ./data
.
azd down
ou supprimer les ressources manuellement pour éviter des dépenses inutiles.Une fois l'application déployée avec succès, vous verrez une URL imprimée sur la console. Cliquez sur cette URL pour interagir avec l'application dans votre navigateur. Cela ressemblera à ceci :
REMARQUE : Le déploiement complet de l'application peut prendre 5 à 10 minutes après l'affichage de "SUCCÈS". Si vous voyez un écran de bienvenue "Python Developer" ou une page d'erreur, attendez un peu et actualisez la page.
Si vous avez uniquement modifié le code backend/frontend dans le dossier app
, vous n’avez pas besoin de réapprovisionner les ressources Azure. Vous pouvez simplement exécuter :
azd deploy
Si vous avez modifié les fichiers d'infrastructure (dossier infra
ou azure.yaml
), vous devrez alors réapprovisionner les ressources Azure. Vous pouvez le faire en exécutant :
azd up
Pour permettre à quelqu'un d'autre d'accéder à un environnement entièrement déployé et existant, vous ou cette personne pouvez suivre ces étapes :
azd init -t azure-search-openai-demo
ou clonez ce référentiel.azd env refresh -e {environment name}
Ils auront besoin du nom de l'environnement azd, de l'ID d'abonnement et de l'emplacement pour exécuter cette commande. Vous pouvez trouver ces valeurs dans votre fichier .azure/{env name}/.env
. Cela remplira le fichier .env
de leur environnement azd avec tous les paramètres nécessaires pour exécuter l'application localement.AZURE_PRINCIPAL_ID
soit dans ce fichier .env
, soit dans le shell actif sur leur identifiant Azure, qu'ils peuvent obtenir avec az ad signed-in-user show
../scripts/roles.ps1
ou .scripts/roles.sh
pour attribuer tous les rôles nécessaires à l'utilisateur. S'ils ne disposent pas des autorisations nécessaires pour créer des rôles dans l'abonnement, vous devrez peut-être exécuter ce script pour eux. Une fois le script exécuté, ils devraient pouvoir exécuter l’application localement. Vous ne pouvez exécuter localement qu’après avoir exécuté avec succès la commande azd up
. Si vous ne l'avez pas encore fait, suivez les étapes de déploiement ci-dessus.
azd auth login
app
./start.ps1
ou ./start.sh
ou exécutez la « tâche VS Code : démarrer l'application » pour démarrer le projet localement.Voir plus de conseils dans le guide de développement local.
Une fois dans l'application web :
Pour nettoyer toutes les ressources créées par cet exemple :
azd down
y
y
Le groupe de ressources et toutes les ressources seront supprimés.
Outre les conseils ci-dessous, vous pouvez trouver une documentation complète dans le dossier docs.
Une fois que vous avez déployé l'application avec succès, vous pouvez commencer à la personnaliser selon vos besoins : modifier le texte, peaufiner les invites et remplacer les données. Consultez le guide de personnalisation de l'application ainsi que le guide d'ingestion de données pour plus de détails.
Par défaut, les applications déployées utilisent Application Insights pour le traçage de chaque requête, ainsi que la journalisation des erreurs.
Pour voir les données de performances, accédez à la ressource Application Insights dans votre groupe de ressources, cliquez sur le panneau « Enquêter -> Performances » et accédez à n'importe quelle requête HTTP pour voir les données de synchronisation. Pour inspecter les performances des demandes de chat, utilisez le bouton « Explorer les échantillons » pour voir les traces de bout en bout de tous les appels d'API effectués pour toute demande de chat :
Pour voir les exceptions et les erreurs de serveur, accédez au panneau « Enquêter -> Échecs » et utilisez les outils de filtrage pour localiser une exception spécifique. Vous pouvez voir les traces de la pile Python sur le côté droit.
Vous pouvez également afficher les résumés des graphiques sur un tableau de bord en exécutant la commande suivante :
azd monitor
Cet exemple est conçu pour servir de point de départ pour votre propre application de production, mais vous devez effectuer un examen approfondi de la sécurité et des performances avant de procéder au déploiement en production. Lisez notre guide de production pour plus de détails.
Voici les scénarios de panne et les solutions les plus courants :
L'abonnement ( AZURE_SUBSCRIPTION_ID
) n'a pas accès au service Azure OpenAI. Veuillez vous assurer que AZURE_SUBSCRIPTION_ID
correspond à l'ID spécifié dans le processus de demande d'accès OpenAI.
Vous essayez de créer des ressources dans des régions non activées pour Azure OpenAI (par exemple East US 2 au lieu de East US), ou dans lesquelles le modèle que vous essayez d'utiliser n'est pas activé. Voir cette matrice de disponibilité des modèles.
Vous avez dépassé un quota, le plus souvent un nombre de ressources par région. Consultez cet article sur les quotas et les limites.
Vous obtenez des conflits « même nom de ressource non autorisé ». Cela est probablement dû au fait que vous avez exécuté l’exemple plusieurs fois et supprimé les ressources que vous avez créées à chaque fois, mais que vous avez oublié de les purger. Azure conserve les ressources pendant 48 heures, sauf si vous purgez la suppression logicielle. Consultez cet article sur la purge des ressources.
Vous voyez CERTIFICATE_VERIFY_FAILED
lorsque le script prepdocs.py
s'exécute. Cela est généralement dû à une configuration incorrecte des certificats SSL sur votre ordinateur. Essayez les suggestions de cette réponse StackOverflow.
Après avoir exécuté azd up
et visité le site Web, vous voyez un « 404 non trouvé » dans le navigateur. Attendez 10 minutes et réessayez, car le démarrage est peut-être encore en cours. Essayez ensuite d’exécuter azd deploy
et attendez à nouveau. Si vous rencontrez toujours des erreurs avec l’application déployée et que vous effectuez le déploiement sur App Service, consultez le guide sur le débogage des déploiements App Service. Veuillez signaler un problème si les journaux ne vous aident pas à résoudre l'erreur.
Il s'agit d'un exemple conçu pour démontrer les capacités des applications modernes d'IA générative et comment elles peuvent être créées dans Azure. Pour obtenir de l'aide sur le déploiement de cet exemple, veuillez publier dans GitHub Issues. Si vous êtes un employé de Microsoft, vous pouvez également publier sur notre chaîne Teams.
Ce référentiel est pris en charge par les responsables, et non par le support Microsoft, veuillez donc utiliser les mécanismes de support décrits ci-dessus et nous ferons de notre mieux pour vous aider.
Remarque : Les documents PDF utilisés dans cette démo contiennent des informations générées à l'aide d'un modèle de langage (Azure OpenAI Service). Les informations contenues dans ces documents sont uniquement à des fins de démonstration et ne reflètent pas les opinions ou convictions de Microsoft. Microsoft ne fait aucune déclaration ou garantie d'aucune sorte, expresse ou implicite, quant à l'exhaustivité, l'exactitude, la fiabilité, l'adéquation ou la disponibilité des informations contenues dans ce document. Tous droits réservés à Microsoft.