Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce guide de démarrage rapide vous guide tout au long des étapes essentielles nécessaires à la création, au test et au déploiement d’un projet de réponses aux questions (CQA) personnalisé dans Microsoft Foundry. Que vous procédiez à la transition de Language Studio ou que vous commenciez à partir de zéro, ce guide de démarrage rapide vous est destiné. Il fournit des instructions claires et exploitables pour obtenir un déploiement rapide et réussi du projet CQA.
Remarque
- Si vous disposez déjà d’une langue Azure dans Foundry Tools ou d’une ressource multiservices (utilisée par lui-même ou via Language Studio), vous pouvez continuer à utiliser ces ressources linguistiques existantes dans le portail Foundry. Pour plus d’informations, consultez Comment utiliser les outils Foundry dans le portail Foundry.
- Nous vous recommandons vivement d’utiliser une ressource Foundry dans Foundry ; cependant, vous pouvez également suivre ces instructions à l’aide d’une ressource linguistique.
Prérequis
Avant de commencer, vous avez besoin des ressources et autorisations suivantes :
- Un abonnement Azure actif. Si vous n’en avez pas, créez-en une gratuitement.
- Autorisations requises. Assurez-vous que la personne qui établit le compte et le projet est affectée au rôle de Propriétaire du compte Azure AI au niveau de l’abonnement. Vous pouvez également disposer du rôle Contributeur ou Contributeur Cognitive Services au niveau de l’étendue de l’abonnement. Pour plus d’informations, consultezContrôle d’accès en fonction du rôle (RBAC).
- Une Ressource Foundry ou une Ressource linguistique.
- Une ressource Recherche Azure AI (requise pour accéder à la CQA). Pour plus d’informations sur la connexion de votre ressource Recherche d’IA Azure, consultezConfigurer des connexions dans Foundry
- Projet Foundry créé dans Foundry. Pour plus d’informations, consultezCréer un projet Foundry.
Get started
Accédez à Foundry.
Si vous n’êtes pas encore connecté, le portail vous invite à le faire avec vos informations d’identification Azure.
Une fois connecté, vous pouvez créer ou accéder à vos projets existants dans Foundry.
Si vous n'êtes pas déjà sur votre projet pour cette tâche, sélectionnez-le.
Créer votre tâche de réglage précis de la CQA
Dans Foundry, une tâche de réglage précis sert d’espace de travail pour vos solutions CQA. Auparavant, une tâche de réglage précis était appelée projet CQA. Vous pouvez rencontrer les deux termes utilisés de manière interchangeable dans la documentation CQA plus ancienne.
Après avoir sélectionné le projet Foundry à utiliser pour ce guide de démarrage rapide, sélectionnez réglage précis dans le menu de navigation de gauche.
Dans la fenêtre principale, sélectionnez l’onglet Réglage précis du service d’IA, puis le bouton + Ajuster.
Dans la fenêtre Créer un réglage précis du service, choisissez l’onglet Réponses aux questions personnalisées, puis sélectionnez Suivant.
Sélectionnez votre ressource Recherche Azure AI connectée à partir de la fenêtre de tâche Créer un réglage précis de la CQA. Pour plus d’informations, consultezConfigurer les connexions de ressources Azure.
Ensuite, renseignez les champs Nom et Langue. Pour ce projet, vous pouvez laisser la Réponse par défaut quand aucune réponse n’est retournée telle quelle (Aucune réponse trouvée).
Cliquez sur le bouton Créer.
Ajouter une source de base de connaissances CQA
Une base de connaissances CQA est un ensemble structuré de paires questions-réponses optimisées pour l’IA conversationnelle. La base de connaissances utilise le traitement du langage naturel pour interpréter les requêtes utilisateur et retourner des réponses précises à partir d’un jeu de données spécifique.
Dans le menu Bien démarrer, sélectionnez Gérer les sources.
Dans la fenêtre principale, sélectionnez le menu déroulant + Ajouter une source.
Dans le menu déroulant, vous pouvez sélectionner Ajouter une conversation, Ajouter des URL ou Ajouter des fichiers.
Pour ce projet, nous allons choisir Ajouter un chit-chat.
Dans la fenêtre Ajouter une nouvelle source, nous allons choisir Convivial.
Enfin, sélectionnez Ajouter. La création de la source peut prendre quelques minutes.
Une fois créée, la source est répertoriée dans la fenêtre Gérer les sources.
Tester votre base de connaissances
Sélectionnez Tester la base de connaissances dans le menu Bien démarrer.
Tapez ce qui suit dans le champ Tapez votre question, puis sélectionnez Exécuter.
Hello! How are you doing today?Dans l’interface d’inspection, vous pouvez passer en revue le niveau de confiance de la réponse et choisir la réponse la plus appropriée.
Déployer votre base de connaissances
Le déploiement d’une base de connaissances CQA signifie publier votre contenu de questions-réponses organisé en tant que point de terminaison dynamique et pouvant faire l’objet d’une recherche. Ce processus déplace votre projet d’une phase de test vers un environnement de production permettant aux applications clientes de l’utiliser pour différents projets et solutions, y compris les chatbots.
Une fois votre inspection terminée, choisissez la section Déployer la base de connaissances dans le menu Prise en main.
Sélectionnez d’abord le bouton Déployer dans la fenêtre principale de la base de connaissances Déployer, puis dans la fenêtre contextuelle Déployer ce projet. Le déploiement prend quelques minutes.
Une fois le déploiement terminé, votre projet déployé est répertorié dans la fenêtre Déployer la base de connaissances.
Et voilà ! Votre base de connaissances de réponses aux questions (CQA) fournit une interface de langage naturel à vos données, ce qui permet aux utilisateurs d’interagir avec des informations de manière conversationnelle. En déployant cette solution, vous pouvez créer des chatbots avancés et des agents interactifs qui comprennent les questions des utilisateurs, fournissent des réponses précises et s’ajustent à la modification des exigences d’information.
Prérequis
- Version actuelle de cURL. Plusieurs commutateurs de ligne de commande sont utilisés dans les guides de démarrage rapide, qui sont indiqués dans la documentation cURL.
- Abonnement Azure - En créer un gratuitement
- Les réponses aux questions personnalisées nécessitent une ressource Language avec la fonctionnalité de réponses aux questions personnalisées activée pour générer une clé API et un point de terminaison.
- Après le déploiement de votre ressource de langage, sélectionnez Accéder à la ressource. Vous avez besoin de la clé et du point de terminaison de la ressource que vous créez pour vous connecter à l’API. Insérez votre clé et votre point de terminaison dans le code plus loin dans ce guide de démarrage rapide.
- Créez une ressource de langage avec Azure CLI et fournissez les propriétés suivantes :
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Projet existant à interroger. Si vous n’avez pas configuré de projet, vous pouvez suivre les instructions du guide de démarrage rapide Foundry. Vous pouvez également ajouter un projet utilisant cette URL du guide d’utilisation de Surface comme source de données.
Configuration
Créer des variables d’environnement
Votre application doit être authentifiée pour envoyer des requêtes d’API. Pour la production, utilisez une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Pour définir la variable d’environnement de votre clé de ressource de langage, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.
- Pour définir la variable d’environnement
LANGUAGE_KEY, remplacezyour-keypar l’une des clés de votre ressource. - Pour définir la variable d’environnement
LANGUAGE_ENDPOINT, remplacezyour-endpointpar le point de terminaison de votre ressource.
Important
Nous vous recommandons l’authentification Microsoft Entra ID avec les identités managées pour les ressources Azure pour éviter de stocker des informations d’identification avec vos applications qui s’exécutent dans le cloud.
Utilisez les clés API avec précaution. N’incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement. Si vous utilisez des clés API, stockez-les en lieu sûr dans Azure Key Vault, faites tourner les clés régulièrement et limitez l’accès à Azure Key Vault à l’aide du contrôle d’accès en fonction du rôle et des restrictions d’accès réseau. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez Clés API avec Azure Key Vault.
Pour découvrir plus d’informations sur la sécurité des services IA, consultez Authentifier les requêtes auprès d’Azure AI services.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Remarque
Si vous avez uniquement besoin d’accéder aux variables d’environnement dans la console en cours d’exécution, vous pouvez la définir avec set au lieu de setx.
Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer tous les programmes en cours d’exécution qui devront les lire, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.
Interroger un projet
Générer une réponse à partir d’un projet
Pour interroger un projet de réponses aux questions personnalisées avec les API REST et cURL, vous devez disposer des informations suivantes :
| Nom de la variable | Valeur |
|---|---|
Endpoint |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Voici un exemple de point de terminaison : https://southcentralus.cognitiveservices.azure.com/ |
API-Key |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Vous pouvez utiliser Key1 ou Key2. Toujours avoir deux clés valides pour la permutation de clés sécurisée sans temps d’arrêt. La valeur de clé fait partie de l’exemple de demande. |
Project |
Nom de votre projet de réponses aux questions personnalisées. |
Deployment |
Il existe deux valeurs possibles : test et production. |
La commande cURL est exécutée à partir d’un interpréteur de commandes BASH. Modifiez cette commande avec vos propres informations relatives au nom de ressource, à la clé de ressource ainsi qu’aux valeurs JSON et à la taille de JSON.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question": "How much battery life do I have left?"
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-knowledgebases?projectName={YOUR_PROJECT_NAME}&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'
Quand vous exécutez le code, si vous utilisez la source de données à partir des prérequis, vous obtenez une réponse qui se présente comme suit :
{
"answers": [
{
"questions": [
"Check battery level"
],
"answer": "If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.",
"confidenceScore": 0.9185,
"id": 101,
"source": "https://support.microsoft.com/en-us/surface/how-to-use-your-surface-pen-8a403519-cd1f-15b2-c9df-faa5aa924e98",
"metadata": {},
"dialog": {
"isContextOnly": false,
"prompts": []
}
}
]
}
confidenceScore retourne une valeur comprise entre 0 et 1. Considérez le score de confiance en pourcentage en le multipliant par 100. Par exemple, un score de confiance de 0,9185 indique que le système personnalisé de réponses aux questions est de 91,85 % confiant que sa réponse est correcte en fonction des informations du projet.
Si vous souhaitez exclure les réponses où le score de confiance est inférieur à un certain seuil, vous pouvez ajouter le paramètre confidenceScoreThreshold.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question": "How much battery life do I have left?",
"confidenceScoreThreshold": "0.95",
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com//language/:query-knowledgebases?projectName=Sample-project&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'
Notre score de confiance étant de .9185 d’après notre précédente exécution du code, la définition du seuil sur .95 entraîne le retour de la réponse par défaut.
{
"answers": [
{
"questions": [],
"answer": "No good match found in KB",
"confidenceScore": 0.0,
"id": -1,
"metadata": {}
}
]
}
Interroger un texte sans projet
Vous pouvez également utiliser les réponses aux questions personnalisées sans projet avec l’API REST de réponses aux questions personnalisées prédéfinies, que vous pouvez appeler via query-text. Dans ce cas, vous fournissez aux réponses aux questions une question et les enregistrements de texte dans lesquels vous souhaitez rechercher une réponse au moment où la demande est envoyée.
Pour cet exemple, vous devez uniquement modifier les variables pour API KEY et ENDPOINT.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question":"How long does it takes to charge a surface?",
"records":[
{"id":"doc1","text":"Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you\u0027re using your Surface for power-intensive activities like gaming or video streaming while you\u0027re charging it"},
{"id":"doc2","text":"You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."}],
"language":"en",
"stringIndexType":"Utf16CodeUnit"
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-text?&api-version=2021-10-01'
Cet exemple retourne un résultat de :
{
"answers": [
{
"answer": "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
"confidenceScore": 0.9118788838386536,
"id": "doc1",
"answerSpan": {
"text": "two to four hours",
"confidenceScore": 0.9850527,
"offset": 27,
"length": 18
},
"offset": 0,
"length": 243
},
{
"answer": "It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
"confidenceScore": 0.052793052047491074,
"id": "doc1",
"answerSpan": {
"text": "longer",
"confidenceScore": 0.6694634,
"offset": 11,
"length": 7
},
"offset": 109,
"length": 134
},
{
"answer": "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
"confidenceScore": 0.017600709572434425,
"id": "doc2",
"answerSpan": {
"text": "USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging",
"confidenceScore": 0.1544854,
"offset": 15,
"length": 165
},
"offset": 0,
"length": 280
}
]
}
Utilisez ce guide de démarrage rapide pour la bibliothèque de client de réponses aux questions personnalisées pour .NET pour :
- Obtenez une réponse à partir d’un projet.
- Revoir une réponse à partir d’un corps de texte que vous envoyez avec votre question.
- Obtenir le score de confiance pour la réponse à votre question.
Documentation de référence | Package (NuGet) | Échantillons | Code source de la bibliothèque
Prérequis
- Abonnement Azure - En créer un gratuitement
- L’IDE Visual Studio ou la version actuelle de .NET Core.
- Les réponses aux questions personnalisées nécessitent une ressource Language avec la fonctionnalité de réponses aux questions personnalisées activée pour générer une clé API et un point de terminaison.
- Après le déploiement de votre ressource de langage, sélectionnez Accéder à la ressource. Vous avez besoin de la clé et du point de terminaison de la ressource que vous créez pour vous connecter à l’API. Insérez votre clé et votre point de terminaison dans le code plus loin dans ce guide de démarrage rapide.
- Créez une ressource de langage avec Azure CLI et fournissez les propriétés suivantes :
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Projet existant à interroger. Si vous n’avez pas de projet, vous pouvez suivre les instructions du guide de démarrage rapide Microsoft Foundry. Vous pouvez également ajouter un projet utilisant cette URL du guide d’utilisation de Surface comme source de données.
Configuration
Créer des variables d’environnement
Votre application doit être authentifiée pour envoyer des requêtes d’API. Pour la production, utilisez une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Pour définir la variable d’environnement de votre clé de ressource de langage, ouvrez une fenêtre de console et suivez les instructions relatives à votre système d’exploitation et à votre environnement de développement.
- Pour définir la variable d’environnement
LANGUAGE_KEY, remplacezyour-keypar l’une des clés de votre ressource. - Pour définir la variable d’environnement
LANGUAGE_ENDPOINT, remplacezyour-endpointpar le point de terminaison de votre ressource.
Important
Nous vous recommandons l’authentification Microsoft Entra ID avec les identités managées pour les ressources Azure pour éviter de stocker des informations d’identification avec vos applications qui s’exécutent dans le cloud.
Utilisez les clés API avec précaution. N’incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement. Si vous utilisez des clés API, stockez-les en lieu sûr dans Azure Key Vault, faites tourner les clés régulièrement et limitez l’accès à Azure Key Vault à l’aide du contrôle d’accès en fonction du rôle et des restrictions d’accès réseau. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez Clés API avec Azure Key Vault.
Pour découvrir plus d’informations sur la sécurité des services IA, consultez Authentifier les requêtes auprès d’Azure AI services.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Remarque
Si vous avez uniquement besoin d’accéder aux variables d’environnement dans la console en cours d’exécution, vous pouvez la définir avec set au lieu de setx.
Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer tous les programmes en cours d’exécution qui devront les lire, y compris la fenêtre de console. Par exemple, si vous utilisez Visual Studio comme éditeur, redémarrez Visual Studio avant d’exécuter l’exemple.
Interface de ligne de commande
Dans une fenêtre de console (par exemple cmd, PowerShell ou Bash), utilisez la commande dotnet new pour créer une application console avec le nom question-answering-quickstart. Cette commande crée un projet C# simple nommé « Hello World » avec un seul fichier source : program.cs.
dotnet new console -n question-answering-quickstart
Déplacez vos répertoires vers le dossier d’application nouvellement créé. Vous pouvez générer l’application avec :
dotnet build
La sortie de génération ne doit contenir aucun avertissement ni erreur.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Dans le répertoire de l’application, installez la bibliothèque de réponses aux questions personnalisées pour .NET à l’aide de la commande suivante :
dotnet add package Azure.AI.Language.QuestionAnswering
Interroger un projet
Générer une réponse à partir d’un projet
L’exemple ci-dessous vous permet d’interroger un projet avec GetAnswers pour recevoir une réponse à votre question.
Vous devez mettre à jour le code et fournir vos propres valeurs pour les variables suivantes :
| Nom de la variable | Valeur |
|---|---|
endpoint |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Voici un exemple de point de terminaison : https://southcentralus.cognitiveservices.azure.com/ |
credential |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Vous pouvez utiliser Key1 ou Key2. Toujours avoir deux clés valides pour la permutation de clés sécurisée sans temps d’arrêt. La valeur de clé fait partie de l’exemple de demande. |
projectName |
Nom de votre projet de réponses aux questions personnalisées. |
deploymentName |
Il existe deux valeurs possibles : test et production. |
Important
N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez Sécurité des outils Foundry.
À partir du répertoire du projet, ouvrez le fichier program.cs et remplacez le contenu par le code suivant :
using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;
namespace question_answering
{
class Program
{
static void Main(string[] args)
{
// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
Uri endpoint = new Uri("LANGUAGE_ENDPOINT");
AzureKeyCredential credential = new AzureKeyCredential("LANGUAGE_KEY");
string projectName = "{YOUR-PROJECT-NAME}";
string deploymentName = "production";
string question = "How long should my Surface battery last?";
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
Response<AnswersResult> response = client.GetAnswers(question, project);
foreach (KnowledgeBaseAnswer answer in response.Value.Answers)
{
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
}
}
}
}
Tandis que nous programmons en dur les variables pour notre exemple. Pour la production, envisagez d’utiliser une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Par exemple, Azure Key Vault fournit un stockage de clé sécurisé.
Après la mise à jour de Program.cs et la substitution dans les valeurs de variables correctes. Exécutez l’application avec la commande dotnet run à partir du répertoire de votre application.
dotnet run
La réponse se présente comme suit :
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Pour plus d’informations sur les scores de confiance, ajoutez l’instruction d’impression suivante sous les instructions d’impression existantes :
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
Console.WriteLine($"({answer.Confidence})"); // add this line
Si vous réexécutez dotnet run, vous recevez maintenant un résultat avec un score de confiance :
Q:How much battery life do I have left?
A:If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
(0.9185)
Considérez le score de confiance en pourcentage en le multipliant par 100. Par exemple, un score de confiance de 0,9185 indique que le système personnalisé de réponses aux questions est de 91,85 % confiant que sa réponse est correcte en fonction des informations du projet.
Si vous souhaitez exclure les réponses où le score de confiance est inférieur à un certain seuil, utilisez AnswerOptions pour ajouter la propriété ConfidenceScoreThreshold.
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
AnswersOptions options = new AnswersOptions(); //Add this line
options.ConfidenceThreshold = 0.95; //Add this line
Response<AnswersResult> response = client.GetAnswers(question, project, options); //Add the additional options parameter
Notre score de confiance étant de .9185 d’après notre précédente exécution du code, la définition du seuil sur .95 entraîne le retour de la réponse par défaut.
Q:How much battery life do I have left?
A:No good match found in KB
(0)
Interroger un texte sans projet
Vous pouvez également utiliser les réponses aux questions personnalisées sans projet avec GetAnswersFromText. Dans ce cas, vous fournissez aux réponses aux questions personnalisées une question et les enregistrements texte dans lesquels vous souhaitez rechercher une réponse au moment où la demande est envoyée.
Pour cet exemple, vous devez uniquement modifier les variables pour endpoint et credential.
using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;
using System.Collections.Generic;
namespace questionansweringcsharp
{
class Program
{
static void Main(string[] args)
{
Uri endpoint = new Uri("https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/");
AzureKeyCredential credential = new AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY");
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
IEnumerable<TextDocument> records = new[]
{
new TextDocument("doc1", "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
"It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it"),
new TextDocument("doc2", "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
"The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."),
};
AnswersFromTextOptions options = new AnswersFromTextOptions("How long does it takes to charge a surface?", records);
Response<AnswersFromTextResult> response = client.GetAnswersFromText(options);
foreach (TextAnswer answer in response.Value.Answers)
{
if (answer.Confidence > .9)
{
string BestAnswer = response.Value.Answers[0].Answer;
Console.WriteLine($"Q:{options.Question}");
Console.WriteLine($"A:{BestAnswer}");
Console.WriteLine($"Confidence Score: ({response.Value.Answers[0].Confidence:P2})"); //:P2 converts the result to a percentage with 2 decimals of accuracy.
break;
}
else
{
Console.WriteLine($"Q:{options.Question}");
Console.WriteLine("No answers met the requested confidence score.");
break;
}
}
}
}
}
Pour exécuter le code, remplacez Program.cs par le contenu du bloc de script et modifiez les variables endpoint et credential afin qu’elles correspondent à la ressource de langue que vous avez créée dans le cadre des prérequis.
Dans ce cas, nous parcourons toutes les réponses et retournons uniquement la réponse avec le score de confiance le plus élevé qui est supérieur à 0,9. Pour en savoir plus sur les options disponibles avec GetAnswersFromText.
Utilisez ce guide de démarrage rapide pour la bibliothèque de client de réponses aux questions personnalisées pour Python pour :
- Obtenez une réponse à partir d’un projet.
- Revoir une réponse à partir d’un corps de texte que vous envoyez avec votre question.
- Obtenir le score de confiance pour la réponse à votre question.
Package (PyPI) | Échantillons | Code source de la bibliothèque
Prérequis
- Abonnement Azure - En créer un gratuitement
- Python 3.x
- Les réponses aux questions personnalisées nécessitent une ressource Language avec la fonctionnalité de réponses aux questions personnalisées activée pour générer une clé API et un point de terminaison.
- Après le déploiement de votre ressource de langage, sélectionnez Accéder à la ressource. Vous avez besoin de la clé et du point de terminaison de la ressource que vous créez pour vous connecter à l’API. Insérez votre clé et votre point de terminaison dans le code plus loin dans ce guide de démarrage rapide.
- Créez une ressource de langage avec Azure CLI et fournissez les propriétés suivantes :
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Projet existant à interroger. Si vous n’avez pas de projet, vous pouvez suivre les instructions du guide de démarrage rapide Microsoft Foundry. Vous pouvez également ajouter un projet utilisant cette URL du guide d’utilisation de Surface comme source de données.
Configuration
Installer la bibliothèque de client
Après avoir installé Python, vous pouvez installer la bibliothèque de client avec :
pip install azure-ai-language-questionanswering
Interroger un projet
Générer une réponse à partir d’un projet
L’exemple vous permet d’interroger un projet à l’aide de get_answers pour obtenir une réponse à votre question. Vous pouvez copier ce code dans un fichier .py dédié ou dans une cellule dans Jupyter Notebook/Lab.
Vous devez mettre à jour le code et fournir vos propres valeurs pour les variables suivantes.
| Nom de la variable | Valeur |
|---|---|
endpoint |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Voici un exemple de point de terminaison : https://southcentralus.cognitiveservices.azure.com/ |
credential |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Vous pouvez utiliser Key1 ou Key2. Toujours avoir deux clés valides pour la permutation de clés sécurisée sans temps d’arrêt. La valeur de clé fait partie de l’exemple de demande. |
knowledge_base_project |
Nom de votre projet de réponses aux questions. |
deployment |
Il existe deux valeurs possibles : test et production.
production. |
Important
N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article de sécurité Des outils Foundry.
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("{YOUR-LANGUAGE-RESOURCE-KEY}")
knowledge_base_project = "{YOUR-PROJECT-NAME}"
deployment = "production"
def main():
client = QuestionAnsweringClient(endpoint, credential)
with client:
question="How much battery life do I have left?"
output = client.get_answers(
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
if __name__ == '__main__':
main()
Tandis que nous programmons en dur les variables pour notre exemple. Pour la production, envisagez d’utiliser une méthode de stockage et d’accès sécurisée pour vos informations d’identification. Par exemple, Azure Key Vault fournit un stockage de clé sécurisé.
Quand vous exécutez le code, si vous utilisez la source de données à partir des prérequis, vous obtenez une réponse qui se présente comme suit :
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Pour plus d’informations sur les scores confiants, ajoutez les instructions d’impression suivantes :
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
print("Confidence Score: {}".format(output.answers[0].confidence)) # add this line
Vous recevez un résultat avec un score de confiance :
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Confidence Score: 0.9185
Considérez le score de confiance en pourcentage en le multipliant par 100. Par exemple, un score de confiance de 0,9185 indique que le système personnalisé de réponses aux questions est de 91,85 % confiant que sa réponse est correcte en fonction des informations du projet.
Si vous souhaitez exclure des réponses où le score de confiance tombe en dessous d’un certain seuil, vous pouvez modifier answerOptions pour ajouter le confidence_threshold paramètre.
output = client.get_answers(
confidence_threshold = 0.95, #add this line
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
Notre score de confiance étant de .9185 d’après notre précédente exécution du code, la définition du seuil sur .95 entraîne le retour de la réponse par défaut.
Q: How much battery life do I have left?
A: No good match found in KB
Confidence Score: 0.0
Interroger un texte sans projet
Vous pouvez également utiliser des réponses aux questions personnalisées sans projet avec get_answers_from_text. Dans ce cas, vous fournissez aux réponses aux questions personnalisées une question et les enregistrements texte dans lesquels vous souhaitez rechercher une réponse au moment où la demande est envoyée.
Pour cet exemple, vous devez uniquement modifier les variables pour endpoint et credential.
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.ai.language.questionanswering import models as qna
endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY")
def main():
client = QuestionAnsweringClient(endpoint, credential)
with client:
question="How long does it takes to charge a surface?"
input = qna.AnswersFromTextOptions(
question=question,
text_documents=[
"Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
"It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.",
"You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
"The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
]
)
output = client.get_answers_from_text(input)
best_answer = [a for a in output.answers if a.confidence > 0.9][0]
print(u"Q: {}".format(input.question))
print(u"A: {}".format(best_answer.answer))
print("Confidence Score: {}".format(output.answers[0].confidence))
if __name__ == '__main__':
main()
Vous pouvez copier ce code dans un fichier .py dédié ou dans une nouvelle cellule dans Jupyter Notebook/Lab. Cet exemple retourne un résultat de :
Q: How long does it takes to charge surface?
A: Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.
Confidence Score: 0.9254655838012695
Dans ce cas, nous parcourons toutes les réponses et retournons uniquement la réponse avec le score de confiance le plus élevé qui est supérieur à 0,9. Pour en savoir plus sur les options disponibles avec get_answers_from_text, passez en revue les paramètres AnswersFromTextOptions.
Nettoyer les ressources
Pour nettoyer et supprimer une ressource Azure AI, vous pouvez supprimer la ressource individuelle ou l’ensemble du groupe de ressources. Si vous supprimez le groupe de ressources, toutes les ressources contenues dans ce groupe sont également supprimées.
Explorer l’API REST
- Informations de référence sur l’API de création
- Exemples d’utilisation de l’API de création avec cURL
- Informations de référence sur l’API Runtime