Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Schnellstartanleitung führt Sie durch die wesentlichen Schritte zum Erstellen, Testen und Bereitstellen eines benutzerdefinierten Projekts zur Beantwortung von Fragen (CQA) in der Microsoft Foundry. Ganz gleich, ob Sie von Language Studio wechseln oder von Grund auf neu beginnen, dieser Schnellstart ist für Sie gemacht. Er bietet klare und umsetzbare Anweisungen, um eine schnelle und erfolgreiche CQA-Projektbereitstellung zu erreichen.
Hinweis
- Wenn Sie bereits über eine Azure-Sprache in Foundry Tools oder multi-Service-Ressourcen verfügen – unabhängig davon, ob sie eigenständig oder über Language Studio verwendet werden – können Sie diese vorhandenen Sprachressourcen weiterhin im Foundry-Portal verwenden. Weitere Informationen finden Sie unter Verwendung von Foundry Tools im Foundry-Portal.
- Es wird dringend empfohlen, eine Foundry-Ressource in Foundry zu verwenden; Sie können diese Anweisungen jedoch auch mithilfe einer Sprachressource ausführen.
Voraussetzungen
Bevor Sie beginnen, benötigen Sie die folgenden Ressourcen und Berechtigungen:
- Ein aktives Azure-Abonnement. Sollten Sie über keine Organisation verfügen, können Sie kostenlos eine erstellen.
- Erforderliche Berechtigungen. Stellen Sie sicher, dass die Person, die das Konto und das Projekt eingerichtet hat, als Azure AI-Kontobesitzerrolle auf Abonnementebene zugewiesen ist. Alternativ erfüllt auch die Rolle "Mitwirkender" oder "Cognitive Services-Mitwirkender" im Abonnementbereich diese Anforderung. Weitere Informationen finden Sie unterRollenbasierte Zugriffssteuerung (RBAC).
- Eine Foundry-Ressource oder eine Sprachressource.
- Eine Azure KI-Suche-Ressource (erforderlich für den Zugriff auf CQA). Weitere Informationen zum Verbinden Ihrer Azure AI Search-Ressource finden Sie unterKonfigurieren von Verbindungen in Foundry
- Ein in Foundry erstelltes Foundry-Projekt. Weitere Informationen finden Sie unterErstellen eines Foundry-Projekts.
Get started
Navigieren Sie zur Gießerei.
Wenn Sie noch nicht angemeldet sind, werden Sie vom Portal aufgefordert, dies mit Ihren Azure-Anmeldeinformationen zu tun.
Sobald Sie angemeldet sind, können Sie Ihre vorhandenen Projekte innerhalb der Gießerei erstellen oder auf sie zugreifen.
Wenn Sie nicht bereits bei Ihrem Projekt für diese Aufgabe sind, wählen Sie es aus.
Erstellen Ihrer CQA Optimierungsaufgabe
In Foundry dient eine Feinabstimmungsaufgabe als Arbeitsbereich für Ihre CQA-Lösungen. Zuvor wurde ein Optimierungsvorgang als CQA-Projekt bezeichnet. In älteren CQA-Dokumentationen werden beide Begriffe synonym verwendet.
Nachdem Sie das Foundry-Projekt ausgewählt haben, das für diesen Schnellstart verwendet werden soll, wählen Sie im linken Navigationsmenü Feinabstimmung aus.
Wählen Sie im Hauptfenster die Registerkarte AI Service-Optimierung und dann die Schaltfläche + Optimierung aus.
Wählen Sie im Fenster Dienst optimieren die Registerkarte Benutzerdefinierte Fragen und Antworten und dann Weiter aus.
Wählen Sie Ihre Verbundene Azure KI-Suche-Ressource im Aufgabenfenster CQA-Optimierung erstellen aus. Weitere Informationen finden Sie unterKonfigurieren von Azure-Ressourcenverbindungen.
Füllen Sie als Nächstes die Felder Name und Sprache aus. Für dieses Projekt können Sie die Standardantwort belassen, wenn kein Antwortfeld zurückgegeben wird (keine Antwort gefunden).
Wählen Sie die Schaltfläche Erstellen.
Hinzufügen einer CQA-Wissensbasisquelle
Eine CQA-Wissensdatenbank ist eine strukturierte Gruppe von Frage-und-Antwort-Paaren, die für Unterhaltungs- KI optimiert sind. Die Wissensdatenbank verwendet die Verarbeitung natürlicher Sprachen, um Benutzerabfragen zu interpretieren und kontextbezogene, genaue Antworten aus einem bestimmten Dataset zurückzugeben.
Wählen Sie im Menü Erste Schritte die Option Quellen verwalten aus.
Wählen Sie im Hauptfenster das Dropdownmenü + Quelle hinzufügen aus.
Im Dropdownmenü können Sie Chat hinzufügen, URLs hinzufügen oder Dateien hinzufügen auswählen.
Für dieses Projekt wählen wir Chit-Chat hinzufügen aus.
Wählen Sie im Fenster Neue Quelle hinzufügen die Option Freundlich aus.
Wählen Sie abschließend "Hinzufügen" aus. Es kann einige Minuten dauern, bis die Quelle erstellt wird.
Nach der Erstellung wird die Quelle im Fenster Quellen verwalten aufgeführt.
Testen Ihrer Wissensdatenbank
Wählen Sie im Menü Erste Schritte die Option Wissensdatenbank testen aus.
Geben Sie Folgendes in das Feld Frage eingeben ein, und wählen Sie dann Ausführen aus.
Hello! How are you doing today?In der Inspektionsschnittstelle können Sie das Konfidenzniveau der Reaktion überprüfen und die am besten geeignete Antwort auswählen.
Bereitstellen Ihrer Wissensdatenbank
Die Bereitstellung einer CQA-Knowledge Base bedeutet, dass Sie Ihre kuratierten Frage- und Antwortinhalte als live durchsuchbaren Endpunkt veröffentlichen. Dieser Prozess verschiebt Ihr Projekt von einer Testphase in eine Produktionsumgebung, sodass Clientanwendungen es für verschiedene Projekte und Lösungen verwenden können, einschließlich Chatbots.
Nachdem Ihre Prüfung abgeschlossen ist, wählen Sie im Menü Erste Schritte den Abschnitt Wissensdatenbank bereitstellen aus.
Wählen Sie zuerst die Schaltfläche Bereitstellen im Hauptfenster Wissensdatenbank bereitstellen und dann im Popupfenster Dieses Projekt bereitstellen aus. Die Bereitstellung dauert einige Minuten.
Nach Abschluss der Bereitstellung wird das bereitgestellte Projekt im Fenster Wissensdatenbank bereitstellen aufgeführt.
Das ist alles! Ihre CQA-Wissensdatenbank bietet eine Schnittstelle für natürliche Sprache für Ihre Daten, sodass Benutzer auf unterhaltungsbasierte Weise mit Informationen interagieren können. Durch die Bereitstellung dieser Lösung können Sie erweiterte Chatbots und interaktive Agents erstellen, die Benutzerfragen verstehen, präzise Antworten bereitstellen und sich an die sich ändernden Informationsanforderungen anpassen.
Voraussetzungen
- Aktuelle Version von cURL. In den Schnellstartanleitungen werden mehrere Befehlszeilenschalter verwendet, die in der cURL-Dokumentation angegeben sind.
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Benutzerdefinierte Fragen und Antworten erfordern eine Sprachressource mit aktiviertem Feature „Benutzerdefinierte Fragen und Antworten“, um einen API-Schlüssel und Endpunkt zu generieren.
- Wählen Sie nach der Bereitstellung der Sprachressource Zu Ressource wechseln aus. Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um eine Verbindung mit der API herstellen zu können. Fügen Sie den Schlüssel und den Endpunkt später im Schnellstart in den Code ein.
- Erstellen Sie eine Sprachressource mit Azure CLI, und geben Sie die folgenden Eigenschaften an:
--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> - Ein vorhandenes abzufragendes Projekt. Wenn Sie kein Projekt eingerichtet haben, können Sie die Anweisungen in der Schnellstartanleitung von Foundry befolgen. Oder fügen Sie ein Projekt hinzu, das diese URL für das Surface-Benutzerhandbuch als Datenquelle verwendet.
Einrichten
Erstellen von Umgebungsvariablen
Ihre Anwendung muss authentifiziert werden, um API-Anforderungen senden zu können. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden. In diesem Beispiel schreiben Sie Ihre Anmeldeinformationen in Umgebungsvariablen auf dem lokalen Computer, auf dem die Anwendung ausgeführt wird.
Um die Umgebungsvariable für Ihren Sprachressourcenschlüssel festzulegen, öffnen Sie ein Konsolenfenster und befolgen die Anweisungen für Ihr Betriebssystem und Ihre Entwicklungsumgebung.
- Zum Festlegen der Umgebungsvariablen
LANGUAGE_KEYersetzen Sieyour-keydurch einen der Schlüssel für Ihre Ressource. - Zum Festlegen der Umgebungsvariablen
LANGUAGE_ENDPOINTersetzen Sieyour-endpointdurch den Endpunkt für Ihre Ressource.
Wichtig
Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.
Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie API-Schlüssel verwenden, speichern Sie sie sicher in Azure Key Vault, rotieren Sie die Schlüssel regelmäßig, und beschränken Sie den Zugriff auf Azure Key Vault mithilfe von rollenbasierter Zugriffssteuerung und Netzwerkzugriffsbeschränkungen. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Hinweis
Wenn Sie nur in der aktuell ausgeführten Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Umgebungsvariable mit set anstelle von setx festlegen.
Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie unter Umständen alle ausgeführten Programme neu starten, die die Umgebungsvariablen lesen müssen, z. B. das Konsolenfenster. Wenn Sie beispielsweise Visual Studio als Editor verwenden, müssen Sie Visual Studio neu starten, bevor Sie das Beispiel ausführen.
Abfragen eines Projekts
Generieren einer Antwort aus einem Projekt
Für die Abfrage eines Benutzerdefinierte Fragen und Antworten-Projekts mit den REST-APIs und cURL benötigen Sie die folgenden Informationen:
| Variablenname | Wert |
|---|---|
Endpoint |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Beispielendpunkt: https://southcentralus.cognitiveservices.azure.com/ |
API-Key |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können entweder „Schlüssel1“ oder „Schlüssel2“ verwenden. Stellen Sie sicher, dass immer zwei gültige Schlüssel vorhanden sind, damit die Schlüsselrotation sicher und ohne Ausfallzeiten erfolgt. Der Schlüsselwert ist Teil der Beispielanforderung. |
Project |
Der Name Ihres Benutzerdefinierte Fragen und Antworten-Projekts. |
Deployment |
Es gibt zwei mögliche Werte: test und production. |
Der cURL-Befehl wird über eine Bash-Shell ausgeführt. Fügen Sie für diesen Befehl Ihren eigenen Ressourcennamen und Ressourcenschlüssel sowie die JSON-Werte und die JSON-Größe ein.
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}'
Wenn Sie den Code ausführen und die Datenquelle aus den Voraussetzungen verwenden, erhalten Sie eine Antwort wie die folgende:
{
"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 gibt einen Wert zwischen 0 und 1 zurück. Betrachten Sie die Konfidenzbewertung als Prozentsatz, indem Sie sie mit 100 multiplizieren. Beispielsweise gibt ein Konfidenzergebnis von 0,9185 an, dass das benutzerdefinierte Fragebeantwortungssystem 91,85 % zuversichtlich ist, dass seine Antwort basierend auf den Projektinformationen korrekt ist.
Wenn Sie Antworten ausschließen möchten, deren Zuverlässigkeitsbewertung unter einem bestimmten Schwellenwert liegt, können Sie den Parameter confidenceScoreThreshold hinzufügen.
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}'
Da wir aufgrund der vorherigen Ausführung des Codes wissen, dass unsere Zuverlässigkeitsbewertung .9185 lautet, wird die .95 zurückgegeben, wenn der Schwellenwert auf festgelegt wird.
{
"answers": [
{
"questions": [],
"answer": "No good match found in KB",
"confidenceScore": 0.0,
"id": -1,
"metadata": {}
}
]
}
Abfragetext ohne Projekt
Sie können auch die benutzerdefinierte Fragenbeantwortung ohne ein Projekt verwenden mit der vorgefertigten REST-API für benutzerdefinierte Fragenbeantwortung, die über query-text aufgerufen wird. In diesem Fall werden für Fragen und Antworten sowohl eine Frage als auch die zugehörigen Textdatensätze bereitgestellt, die nach einer Antwort durchsucht werden sollen, wenn die Anforderung übermittelt wird.
Für dieses Beispiel müssen nur die Variablen für API KEY und ENDPOINT geändert werden.
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'
In diesem Beispiel wird folgendes Ergebnis zurückgegeben:
{
"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
}
]
}
Diese Schnellstartanleitung zur Clientbibliothek für benutzerdefinierte Fragen und Antworten für .NET ermöglicht Folgendes:
- Abrufen einer Antwort aus einem Projekt.
- Erhalten Sie eine Antwort aus einem Text, den Sie zusammen mit Ihrer Frage übermitteln.
- Bekommen Sie die Vertrauensbewertung für die Antwort auf Ihre Frage.
Referenzdokumentation | Paket (NuGet) | Stichproben | Quellcode der Bibliothek
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Die Visual Studio-IDE oder die aktuelle Version von .NET Core.
- Benutzerdefinierte Fragen und Antworten erfordern eine Sprachressource mit aktiviertem Feature „Benutzerdefinierte Fragen und Antworten“, um einen API-Schlüssel und Endpunkt zu generieren.
- Wählen Sie nach der Bereitstellung der Sprachressource Zu Ressource wechseln aus. Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um eine Verbindung mit der API herstellen zu können. Fügen Sie den Schlüssel und den Endpunkt später im Schnellstart in den Code ein.
- Erstellen Sie eine Sprachressource mit Azure CLI, und geben Sie die folgenden Eigenschaften an:
--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> - Ein vorhandenes abzufragendes Projekt. Wenn Sie kein Projekt haben, können Sie die Anweisungen in der Schnellstartanleitung von Microsoft Foundry befolgen. Oder fügen Sie ein Projekt hinzu, das diese URL für das Surface-Benutzerhandbuch als Datenquelle verwendet.
Einrichten
Erstellen von Umgebungsvariablen
Ihre Anwendung muss authentifiziert werden, um API-Anforderungen senden zu können. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden. In diesem Beispiel schreiben Sie Ihre Anmeldeinformationen in Umgebungsvariablen auf dem lokalen Computer, auf dem die Anwendung ausgeführt wird.
Um die Umgebungsvariable für Ihren Sprachressourcenschlüssel festzulegen, öffnen Sie ein Konsolenfenster und befolgen die Anweisungen für Ihr Betriebssystem und Ihre Entwicklungsumgebung.
- Zum Festlegen der Umgebungsvariablen
LANGUAGE_KEYersetzen Sieyour-keydurch einen der Schlüssel für Ihre Ressource. - Zum Festlegen der Umgebungsvariablen
LANGUAGE_ENDPOINTersetzen Sieyour-endpointdurch den Endpunkt für Ihre Ressource.
Wichtig
Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.
Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie API-Schlüssel verwenden, speichern Sie sie sicher in Azure Key Vault, rotieren Sie die Schlüssel regelmäßig, und beschränken Sie den Zugriff auf Azure Key Vault mithilfe von rollenbasierter Zugriffssteuerung und Netzwerkzugriffsbeschränkungen. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Hinweis
Wenn Sie nur in der aktuell ausgeführten Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Umgebungsvariable mit set anstelle von setx festlegen.
Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie unter Umständen alle ausgeführten Programme neu starten, die die Umgebungsvariablen lesen müssen, z. B. das Konsolenfenster. Wenn Sie beispielsweise Visual Studio als Editor verwenden, müssen Sie Visual Studio neu starten, bevor Sie das Beispiel ausführen.
Befehlszeilenschnittstelle (CLI)
Verwenden Sie in einem Konsolenfenster (z. B. cmd, PowerShell oder Bash) den Befehl dotnet new zum Erstellen einer neuen Konsolen-App mit dem Namen question-answering-quickstart. Dieser Befehl erstellt ein einfaches C#-Projekt vom Typ „Hallo Welt“ mit einer einzelnen Quelldatei: program.cs.
dotnet new console -n question-answering-quickstart
Wechseln Sie zum Ordner der neu erstellten App. Sie können die Anwendung mit folgendem Befehl erstellen:
dotnet build
Die Buildausgabe sollte keine Warnungen oder Fehler enthalten.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Installieren Sie im Anwendungsverzeichnis mit dem folgenden Befehl die Clientbibliothek für benutzerdefinierte Fragen und Antworten für .NET:
dotnet add package Azure.AI.Language.QuestionAnswering
Abfragen eines Projekts
Generieren einer Antwort aus einem Projekt
Im folgenden Beispiel können Sie ei Projekt mithilfe von GetAnswers abfragen, um eine Antwort auf Ihre Frage zu erhalten.
Aktualisieren den Code mit Ihren eigenen Werten für die folgenden Variablen.
| Variablenname | Wert |
|---|---|
endpoint |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Beispielendpunkt: https://southcentralus.cognitiveservices.azure.com/ |
credential |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können entweder „Schlüssel1“ oder „Schlüssel2“ verwenden. Stellen Sie sicher, dass immer zwei gültige Schlüssel vorhanden sind, damit die Schlüsselrotation sicher und ohne Ausfallzeiten erfolgt. Der Schlüsselwert ist Teil der Beispielanforderung. |
projectName |
Der Name Ihres Benutzerdefinierte Fragen und Antworten-Projekts. |
deploymentName |
Es gibt zwei mögliche Werte: test und production. |
Wichtig
Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie unter Foundry Tools Security.
Öffnen Sie im Projektverzeichnis die Datei program.cs, und ersetzen Sie den Inhalt durch den folgenden Code:
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}");
}
}
}
}
In diesem Beispiel werden die Variablen hartcodiert. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden. Beispielsweise bietet der Azure-Schlüsseltresor sichere Aufbewahrung von Schlüsseln.
Nach dem Aktualisieren von Program.cs und Ersetzen der richtigen Variablenwerte. Führen Sie die Anwendung mit dem Befehl dotnet run aus dem Anwendungsverzeichnis aus.
dotnet run
Die Antwort sieht wie folgt aus:
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.
Um Informationen zu Konfidenzbewertungen zu erfahren, fügen Sie die folgende Druckanweisungen unterhalb der vorhandenen Druckanweisungen hinzu:
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
Console.WriteLine($"({answer.Confidence})"); // add this line
Wenn Sie dotnet run erneut ausführen, erhalten Sie ein Ergebnis mit einer Zuverlässigkeitsbewertung:
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)
Betrachten Sie die Konfidenzbewertung als Prozentsatz, indem Sie sie mit 100 multiplizieren. Beispielsweise gibt ein Konfidenzergebnis von 0,9185 an, dass das benutzerdefinierte Fragebeantwortungssystem 91,85 % zuversichtlich ist, dass seine Antwort basierend auf den Projektinformationen korrekt ist.
Wenn Sie Antworten ausschließen möchten, deren Zuverlässigkeitsbewertung unter einem bestimmten Schwellenwert liegt, können Sie mithilfe von AnswerOptions die Eigenschaft ConfidenceScoreThreshold hinzufügen.
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
Da wir aufgrund der vorherigen Ausführung des Codes wissen, dass unsere Zuverlässigkeitsbewertung .9185 lautet, wird die .95 zurückgegeben, wenn der Schwellenwert auf festgelegt wird.
Q:How much battery life do I have left?
A:No good match found in KB
(0)
Abfragetext ohne Projekt
Sie können Benutzerdefinierte Fragen und Antworten mit GetAnswersFromText auch ohne ein Projekt verwenden. In diesem Fall werden für benutzerdefinierte Fragen und Antworten sowohl eine Frage als auch die zugehörigen Textdatensätze bereitgestellt, die nach einer Antwort durchsucht werden sollen, wenn die Anforderung übermittelt wird.
Für dieses Beispiel müssen nur die Variablen für endpoint und credential geändert werden.
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;
}
}
}
}
}
Ersetzen Sie vor dem Ausführen des Codes Program.cs durch den Inhalt des Skriptblocks, und ändern Sie die Variablen endpoint und credential so, dass sie der Sprachressource entsprechen, die Sie im Rahmen der Vorbereitung erstellt haben.
Hier werden alle Antworten durchlaufen, und es wird nur die Antwort mit der höchsten Zuverlässigkeitsbewertung zurückgegeben, die größer als 0,9 ist. Machen Sie sich ausführlicher mit den verfügbaren Optionen für GetAnswersFromText vertraut.
Diese Schnellstartanleitung zur Clientbibliothek für benutzerdefinierte Fragen und Antworten für Python ermöglicht Folgendes:
- Abrufen einer Antwort aus einem Projekt.
- Erhalten Sie eine Antwort aus einem Text, den Sie zusammen mit Ihrer Frage übermitteln.
- Bekommen Sie die Vertrauensbewertung für die Antwort auf Ihre Frage.
Paket (PyPI) | Stichproben | Quellcode der Bibliothek
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Python 3.x
- Benutzerdefinierte Fragen und Antworten erfordern eine Sprachressource mit aktiviertem Feature „Benutzerdefinierte Fragen und Antworten“, um einen API-Schlüssel und Endpunkt zu generieren.
- Wählen Sie nach der Bereitstellung der Sprachressource Zu Ressource wechseln aus. Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um eine Verbindung mit der API herstellen zu können. Fügen Sie den Schlüssel und den Endpunkt später im Schnellstart in den Code ein.
- Erstellen Sie eine Sprachressource mit Azure CLI, und geben Sie die folgenden Eigenschaften an:
--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> - Ein vorhandenes abzufragendes Projekt. Wenn Sie kein Projekt haben, können Sie die Anweisungen in der Schnellstartanleitung von Microsoft Foundry befolgen. Oder fügen Sie ein Projekt hinzu, das diese URL für das Surface-Benutzerhandbuch als Datenquelle verwendet.
Einrichten
Installieren der Clientbibliothek
Nach der Installation von Python, können Sie die Clientbibliothek mit Folgendem installieren:
pip install azure-ai-language-questionanswering
Abfragen eines Projekts
Generieren einer Antwort aus einem Projekt
Im folgenden Beispiel können Sie ein Projekt mithilfe von „get_answers“ abfragen, um eine Antwort auf Ihre Frage zu erhalten. Sie können den Code in eine dedizierte PY-Datei oder in eine Zelle in Jupyter Notebook/Lab kopieren.
Aktualisieren Sie den Code mit Ihren eigenen Werten für die folgenden Variablen.
| Variablenname | Wert |
|---|---|
endpoint |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Beispielendpunkt: https://southcentralus.cognitiveservices.azure.com/ |
credential |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können entweder „Schlüssel1“ oder „Schlüssel2“ verwenden. Stellen Sie sicher, dass immer zwei gültige Schlüssel vorhanden sind, damit die Schlüsselrotation sicher und ohne Ausfallzeiten erfolgt. Der Schlüsselwert ist Teil der Beispielanforderung. |
knowledge_base_project |
Der Name Ihres Projekts für Fragen und Antworten. |
deployment |
Es gibt zwei mögliche Werte: test und production.
production. |
Wichtig
Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Sicherheitsartikel "Foundry Tools".
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()
In diesem Beispiel werden die Variablen hartcodiert. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden. Beispielsweise bietet der Azure-Schlüsseltresor sichere Aufbewahrung von Schlüsseln.
Wenn Sie den Code ausführen und die Datenquelle aus den Voraussetzungen verwenden, erhalten Sie eine Antwort wie die folgende:
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.
Um Informationen zu sicheren Bewertungen zu erhalten, fügen Sie die folgenden Druckanweisungen hinzu:
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
print("Confidence Score: {}".format(output.answers[0].confidence)) # add this line
Sie erhalten ein Ergebnis mit einer Zuverlässigkeitsbewertung:
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
Betrachten Sie die Konfidenzbewertung als Prozentsatz, indem Sie sie mit 100 multiplizieren. Beispielsweise gibt ein Konfidenzergebnis von 0,9185 an, dass das benutzerdefinierte Fragebeantwortungssystem 91,85 % zuversichtlich ist, dass seine Antwort basierend auf den Projektinformationen korrekt ist.
Wenn Sie Antworten ausschließen möchten, bei denen die Konfidenzbewertung unter einen bestimmten Schwellenwert fällt, können Sie die AnswerOptions ändern, um den confidence_threshold Parameter hinzuzufügen.
output = client.get_answers(
confidence_threshold = 0.95, #add this line
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
Da wir aufgrund der vorherigen Ausführung des Codes wissen, dass unsere Zuverlässigkeitsbewertung .9185 lautet, wird die .95 zurückgegeben, wenn der Schwellenwert auf festgelegt wird.
Q: How much battery life do I have left?
A: No good match found in KB
Confidence Score: 0.0
Abfragetext ohne Projekt
Sie können auch benutzerdefinierte Frageantworten ohne Projekt mit get_answers_from_text verwenden. In diesem Fall werden für benutzerdefinierte Fragen und Antworten sowohl eine Frage als auch die zugehörigen Textdatensätze bereitgestellt, die nach einer Antwort durchsucht werden sollen, wenn die Anforderung übermittelt wird.
Für dieses Beispiel müssen nur die Variablen für endpoint und credential geändert werden.
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()
Sie können den Code in eine dedizierte PY-Datei oder in eine neue Zelle in Jupyter Notebook/Lab kopieren. In diesem Beispiel wird folgendes Ergebnis zurückgegeben:
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
Hier werden alle Antworten durchlaufen, und es wird nur die Antwort mit der höchsten Zuverlässigkeitsbewertung zurückgegeben, die größer als 0,9 ist. Weitere Informationen zu den verfügbaren Optionen für „get_answers_from_text“ finden Sie in den AnswersFromTextOptions-Parametern.
Bereinigen von Ressourcen
Um eine Azure AI-Ressource zu bereinigen und zu entfernen, können Sie entweder die einzelne Ressource oder die gesamte Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden alle darin enthaltenen Ressourcen ebenfalls gelöscht.