Votre organisation a besoin d'un chatbot intelligent multicanal et d'un moteur de recherche capable d'appréhender divers types de données dispersées sur différents sites. De plus, le chatbot conversationnel doit être en mesure de fournir des réponses aux demandes de renseignements, ainsi que la source et une explication de comment et où la réponse a été obtenue. En d'autres termes, vous souhaitez un ChatGPT privé et sécurisé pour votre organisation, capable d'interpréter, de comprendre et de répondre aux questions sur les données de votre entreprise .
L'objectif du POC est de montrer/prouver la valeur d'un assistant virtuel GPT construit avec Azure Services, avec vos propres données dans votre propre environnement. Les livrables sont :
API Backend Bot construite avec Bot Framework et exposée à plusieurs canaux (Web Chat, MS Teams, SMS, Email, Slack, etc.)
Application Web frontale avec une interface utilisateur de recherche et de robot.
Le dépôt est conçu pour vous apprendre étape par étape comment créer un moteur de recherche intelligent basé sur OpenAI. Chaque bloc-notes s'appuie l'un sur l'autre et aboutit à la création des deux applications.
Pour les ETP Microsoft : il s'agit d'un VBD financé par le client, en dessous des actifs pour la livraison.
Article | Description | Lien |
---|---|---|
Informations et fiche technique du SKU VBD | CSAM doit l'envoyer en tant que « Client investi » contre des crédits/heures de contrat de support unifié. Le client décide si 3 ou 5 jours. | Page SKU ESXP |
Accréditation VBD pour les CSA | Liens permettant aux ASC d'obtenir l'accréditation nécessaire pour animer l'atelier | Lien 1 , Lien 2 |
Actif POC (IP) VBD 3 à 5 jours | Le MVP à livrer (ce dépôt GitHub) | Azure-Cognitive-Search-Azure-OpenAI-Accelerator |
Plate-forme d'atelier VBD | Le deck présentant et expliquant l'atelier | Introduction AOAI GPT Azure Smart Search Engine Accelerator.pptx |
Vidéo de formation CSA | Formation de 2 heures pour les CSA Microsoft | Enregistrement de la formation POC VBD (nouvelle vidéo à venir !) |
Conditions préalables Client 3-5 jours POC
Abonnement Azure
Application acceptée sur Azure Open AI, y compris GPT-4o. Si le client n'a pas approuvé GPT-4o, les CSA Microsoft peuvent prêter le leur pendant l'atelier.
Les membres Microsoft doivent de préférence être ajoutés en tant qu’invités dans les clients Azure AD. Si cela n'est pas possible, les clients peuvent attribuer des identifiants d'entreprise aux membres Microsoft.
Un groupe de ressources (RG) doit être défini pour ce POC d'atelier, dans le locataire Azure du client.
L'équipe client et l'équipe Microsoft doivent disposer des autorisations Contributeur sur ce groupe de ressources afin de pouvoir tout configurer 2 semaines avant l'atelier.
Un compte de stockage doit être mis en place dans le RG.
Les données/documents client doivent être téléchargés sur le compte de stockage blob, au moins deux semaines avant la date de l'atelier.
Un enregistrement d'application multi-tenant (principal du service) doit être créé par le client (enregistrez l'identifiant client et la valeur secrète).
Le client doit fournir à l'équipe Microsoft 10 à 20 questions (de facile à difficile) auxquelles il souhaite que le robot réponde correctement.
Pour la collaboration et la standardisation de l'IDE pendant l'atelier, des instances de calcul AML avec Jupyper Lab seront utilisées. Pour cela, Azure Machine Learning Workspace doit être déployé dans le RG.
Remarque : Veuillez vous assurer que vous disposez d'un quota de calcul de base suffisant dans votre espace de travail Azure Machine Learning.
L'utilisateur pose une question.
Dans l'application, un OpenAI LLM utilise une invite intelligente pour déterminer quelle source utiliser en fonction de la saisie de l'utilisateur.
Cinq types de sources sont disponibles :
Transcriptions des dialogues de tous les épisodes de la série TV : FRIENDS
90 000 résumés de publications Covid
4 longs livres PDF
3a. Azure SQL Database : contient des statistiques liées au COVID aux États-Unis.
3b. API Endpoints - API RESTful OpenAPI 3.0 contenant des statistiques à jour sur Covid.
3c. API Azure Bing Search - fournit un accès à Internet permettant des scénarios tels que : QnA sur les sites Web publics.
3d. Azure AI Search : contient des documents enrichis par l'IA à partir du stockage Blob :
3f. Fichier tabulaire CSV : contient des statistiques liées au COVID aux États-Unis.
L'application récupère le résultat de la source et élabore la réponse.
Le tuple (question et réponse) est enregistré dans CosmosDB en tant que mémoire persistante et pour une analyse plus approfondie.
La réponse est délivrée à l'utilisateur.
https://gptsmartsearchapp.azurewebsites.net/
100% Python.
Utilise Azure Cognitive Services pour indexer et enrichir les documents non structurés : OCR sur images, Chunking et vectorisation automatisée.
Utilise les capacités de recherche hybride d’Azure AI Search pour fournir la meilleure réponse sémantique (recherche de texte et de vecteur combinée).
Utilise LangChain comme wrapper pour interagir avec Azure OpenAI, les magasins de vecteurs, construire des invites et créer des agents.
Multilingue (ingère, indexe et comprend n'importe quelle langue)
Multi-index -> plusieurs index de recherche
Questions et réponses sur les données tabulaires avec des fichiers CSV et des bases de données SQL
Utilise le SDK Azure AI Document Intelligence (ancien Form Recognizer) pour analyser des documents PDF complexes/volumineux
Utilise l'API de recherche Bing pour alimenter les recherches sur Internet et les questions-réponses sur les sites Web publics.
Se connecte aux sources de données API en convertissant les questions en langage naturel en appels API.
Utilise CosmosDB comme mémoire persistante pour enregistrer les conversations de l'utilisateur.
Utilise Streamlit pour créer l'application Web Frontend en python.
Utilise Bot Framework et Bot Service pour héberger le backend de l'API Bot et l'exposer à plusieurs canaux, y compris MS Teams.
Utilise également LangServe/FastAPI pour déployer une API backend alternative avec des capacités de streaming
Remarque : (Pré-requis) Vous devez avoir déjà créé un service Azure OpenAI.
Forkez ce dépôt sur votre compte Github.
Dans Azure OpenAI studio, déployez ces modèles (les modèles plus anciens que ceux indiqués ci-dessous ne fonctionneront pas) :
"gpt-4o"
"gpt-4o-mini"
"text-embedding-ada-002 (ou plus récent)"
Créez un groupe de ressources où seront tous les actifs de cet accélérateur. Azure OpenAI peut être dans un RG différent ou dans un abonnement différent.
CLIQUEZ CI-DESSOUS pour créer toute l'infrastructure Azure nécessaire à l'exécution des notebooks (Azure AI Search, Cognitive Services, etc.) :
Remarque : Si vous n'avez jamais créé de Azure AI Services Multi-Service account
auparavant, veuillez en créer un manuellement dans le portail Azure pour lire et accepter les conditions de Responsible AI. Une fois celui-ci déployé, supprimez-le, puis utilisez le bouton de déploiement ci-dessus.
Clonez votre dépôt Forked sur votre instance de calcul AML. Si votre dépôt est privé, voyez ci-dessous dans la section Dépannage comment cloner un dépôt privé.
Assurez-vous d'exécuter les notebooks sur un environnement conda Python 3.10 ou plus récent
Installez les dépendances sur votre machine (assurez-vous d'exécuter la commande pip ci-dessous sur le même environnement conda que celui dans lequel vous allez exécuter les notebooks. Par exemple, dans l'instance de calcul AZML, exécutez :
conda activate azureml_py310_sdkv2 pip install -r ./common/requirements.txt
Vous pourriez obtenir des erreurs de dépendances pip, mais ce n'est pas grave, les bibliothèques ont été installées correctement quelle que soit l'erreur.
Modifiez le fichier credentials.env
avec vos propres valeurs issues des services créés à l'étape 4.
Pour BLOB_SAS_TOKEN et BLOB_CONNECTION_STRING. Accédez à Compte de stockage> Sécurité + mise en réseau> Signature d'accès partagé> Générer SAS
Exécutez les blocs-notes dans l'ordre . Ils s'accumulent les uns sur les autres.
Pourquoi utiliser le moteur de recherche Azure AI pour fournir le contexte du LLM et ne pas affiner le LLM à la place ?
R : Citant la documentation d'OpenAI : « GPT-3 a été pré-entraîné sur une grande quantité de texte provenant de l'Internet ouvert. Lorsqu'on lui donne une invite avec seulement quelques exemples, il peut souvent deviner quelle tâche vous essayez d'effectuer et générer. un achèvement plausible. C'est ce qu'on appelle souvent un « apprentissage en quelques étapes ». Le réglage fin améliore l'apprentissage en quelques étapes en s'entraînant sur beaucoup plus d'exemples que ne peut en contenir l'invite, vous permettant d'obtenir de meilleurs résultats sur un grand nombre de tâches. Une fois qu'un modèle a été affiné, vous n'aurez plus besoin de fournir d'exemples dans l'invite. Cela permet d'économiser des coûts et de permettre des requêtes à faible latence "
Cependant, pour affiner le modèle, il faut fournir des centaines ou des milliers de tuples d'invite et d'achèvement, qui sont essentiellement des échantillons de requête-réponse. Le but du réglage n'est pas de donner au LLM une connaissance des données de l'entreprise mais de lui fournir des exemples afin qu'il puisse très bien effectuer les tâches sans avoir besoin d'exemples à chaque invite.
Il existe des cas où un réglage fin est nécessaire, par exemple lorsque les exemples contiennent des données exclusives qui ne doivent pas être exposées dans les invites ou lorsque le langage utilisé est hautement spécialisé, comme dans les soins de santé, la pharmacie ou d'autres secteurs ou dans des cas d'utilisation où le langage utilisé on ne le trouve pas couramment sur Internet.
Étapes pour cloner un dépôt privé :
Sur votre terminal, collez le texte ci-dessous en le remplaçant par votre adresse e-mail GitHub. Générez une nouvelle clé SSH.
ssh-keygen -t ed25519 -C "[email protected]"
Copiez la clé publique SSH dans votre presse-papiers. Ajoutez une nouvelle clé SSH.
cat ~/.ssh/id_ed25519.pub# Sélectionnez ensuite et copiez le contenu du fichier id_ed25519.pub# affiché dans le terminal dans votre presse-papiers
Sur GitHub, allez dans Paramètres-> Clés SSH et GPG-> Nouvelle clé SSH
Dans le champ "Titre", ajoutez une étiquette descriptive pour la nouvelle clé. "Calcul AML". Dans le champ "Clé", collez votre clé publique.
Clonez votre dépôt privé
git clone [email protected]:VOTRE-NOM D'UTILISATEUR/VOTRE-REPOSITOIRE.git
Ce projet accueille les contributions et suggestions. La plupart des contributions nécessitent que vous acceptiez un contrat de licence de contributeur (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez effectivement, le droit d'utiliser votre contribution. Pour plus de détails, visitez https://cla.opensource.microsoft.com.
Lorsque vous soumettez une pull request, un robot CLA déterminera automatiquement si vous devez fournir un CLA et décorera le PR de manière appropriée (par exemple, vérification du statut, commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois pour tous les dépôts utilisant notre CLA.
Ce projet a adopté le code de conduite Microsoft Open Source. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée des marques ou logos Microsoft est soumise et doit respecter les directives relatives aux marques et aux marques de Microsoft. L'utilisation des marques ou logos Microsoft dans les versions modifiées de ce projet ne doit pas prêter à confusion ni impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumise aux politiques de ces tiers.