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.
In diesem Artikel erfahren Sie, wie Sie die Antworten einer Chat-App anhand einer Reihe von korrekten oder idealen Antworten (als „Ground Truth“) evaluieren können. Wenn Sie Ihre Chat-Anwendung so ändern, dass sich dies auf die Antworten auswirkt, führen Sie eine Evaluierung durch, um die Änderungen zu vergleichen. Diese Demoanwendung bietet Tools, die Sie heute verwenden können, um die Ausführung von Auswertungen zu vereinfachen.
Wenn Sie die Anweisungen in diesem Artikel befolgen,
- Verwenden Sie die bereitgestellten Beispielaufforderungen, die auf das jeweilige Thema zugeschnitten sind. Diese Eingabeaufforderungen befinden sich bereits im Repository.
- Generieren Sie Beispielbenutzerfragen und Ground Truth-Antworten aus Ihren eigenen Dokumenten.
- Führen Sie Auswertungen mithilfe einer Beispielaufforderung mit den generierten Benutzerfragen aus.
- Überprüfen Sie die Analyse der Antworten.
Hinweis
In diesem Artikel wird mindestens eine KI-App-Vorlage als Grundlage für die Beispiele und Anleitungen im Artikel verwendet. KI-App-Vorlagen bieten Ihnen gut gepflegte Referenzimplementierungen, die einfach bereitzustellen sind. Sie tragen dazu bei, einen qualitativ hochwertigen Ausgangspunkt für Ihre KI-Apps zu gewährleisten.
Übersicht über die Architektur
Zu den wichtigsten Komponenten der Architektur gehören:
- In Azure gehostete Chat-App: Die Chat-App wird im Azure App Service ausgeführt.
- Microsoft AI Chat Protocol: Das Protokoll stellt standardisierte API-Verträge für KI-Lösungen und -Sprachen bereit. Die Chat-App entspricht dem Microsoft KI-Chat-Protokoll, mit dem die Evaluierungs-App für jede Chat-App ausgeführt werden kann, die dem Protokoll entspricht.
- Azure KI-Suche: Die Chat-App verwendet Azure KI-Suche, um die Daten aus Ihren eigenen Dokumenten zu speichern.
- Beispielfragen-Generator: Das Tool kann viele Fragen für jedes Dokument zusammen mit der Antwort Ground Truth-Antwort generieren. Je mehr Fragen es gibt, desto länger die Bewertungen.
- Auswertung: Das Tool führt Beispielfragen und Eingabeaufforderungen für die Chat-App aus und gibt die Ergebnisse zurück.
- Überprüfungstool: Das Tool überprüft die Ergebnisse der Auswertungen.
- Diff-Tool: Das Tool vergleicht die Antworten zwischen Auswertungen.
Wenn Sie diese Auswertung in Azure bereitstellen, wird der Azure OpenAI-Dienstendpunkt für das GPT-4
Modell mit eigener Kapazität erstellt. Bei der Evaluierung von Chat-Anwendungen ist es wichtig, dass der Evaluator über eine eigene Azure OpenAI-Ressource mit GPT-4
mit eigener Kapazität verfügt.
Voraussetzungen
Ein Azure-Abonnement. Erstellen Sie ein kostenloses Konto.
Führen Sie das vorherige Verfahren der Chat-App aus, um die Chat-App in Azure bereitzustellen. Diese Ressource ist erforderlich, damit die Evaluierungs-App funktioniert. Schließen Sie den Abschnitt "Ressourcen bereinigen" des vorherigen Verfahrens nicht ab.
Sie benötigen die folgenden Azure-Ressourceninformationen aus dieser Bereitstellung, die in diesem Artikel als Chat-App bezeichnet wird:
- Chat-API-URI Der Dienst-Back-End-Endpunkt, der am Ende des
azd up
Prozesses angezeigt wird. - Azure AI Search. Die folgenden Werte sind erforderlich:
- Ressourcenname: Der Name der Azure AI Search-Ressource, der während des
azd up
-Prozesses alsSearch service
gemeldet wird. - Indexname: Der Name des Azure AI Search-Index, in dem Ihre Dokumente gespeichert sind. Sie finden es im Azure-Portal für den Suchdienst.
- Ressourcenname: Der Name der Azure AI Search-Ressource, der während des
Die Chat-API-URL ermöglicht den Evaluierungen, Anforderungen über Ihre Back-End-Anwendung zu stellen. Die Azure KI-Suche-Informationen ermöglichen den Evaluierungsskripts, dieselbe Bereitstellung wie Ihr Back-End zu verwenden, mit den Dokumenten.
Nachdem Sie diese Informationen gesammelt haben, sollten Sie die Entwicklungsumgebung der Chat-App nicht mehr verwenden. In diesem Artikel wird später mehrmals darauf verwiesen, um anzugeben, wie die Auswertungs-App die Chat-App verwendet. Löschen Sie die Chat-App-Ressourcen erst, wenn Sie das gesamte Verfahren in diesem Artikel abgeschlossen haben.
- Chat-API-URI Der Dienst-Back-End-Endpunkt, der am Ende des
Eine Entwicklungscontainerumgebung ist mit allen Abhängigkeiten verfügbar, die zum Abschließen dieses Artikels erforderlich sind. Sie können den Entwicklungscontainer in GitHub Codespaces (in einem Browser) oder lokal mit Visual Studio Code ausführen.
- GitHub -Konto
Öffnen einer Entwicklungsumgebung
Befolgen Sie diese Anweisungen, um eine vorkonfigurierte Entwicklungsumgebung mit allen erforderlichen Abhängigkeiten einzurichten, um diesen Artikel abzuschließen. Ordnen Sie Ihren Monitorarbeitsbereich so an, dass Sie diese Dokumentation und die Entwicklungsumgebung gleichzeitig sehen können.
Dieser Artikel wurde mit der switzerlandnorth
-Region für die Evaluierungsbereitstellung getestet.
GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für Web als Benutzeroberfläche aus. Verwenden Sie GitHub Codespaces für die einfachste Entwicklungsumgebung. Es enthält die richtigen Entwicklertools und Abhängigkeiten, die vorinstalliert sind, um diesen Artikel abzuschließen.
Wichtig
Alle GitHub-Konten können GitHub Codespaces für bis zu 60 Stunden kostenlos jeden Monat mit zwei Kerninstanzen verwenden. Weitere Informationen finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.
Starten Sie den Prozess, um einen neuen GitHub-Codespace im
main
Zweig des GitHub-Repositorys Azure-Samples/ai-rag-chat-evaluator zu erstellen.Wenn Sie die Entwicklungsumgebung und die dokumentation anzeigen möchten, die gleichzeitig verfügbar ist, klicken Sie mit der rechten Maustaste auf die folgende Schaltfläche, und wählen Sie im neuen Fenster "Link öffnen" aus.
Überprüfen Sie auf der Seite Codespace erstellen die Konfigurationseinstellungen für den Codespace und wählen Sie dann Neuen Codespace erstellen.
Warten Sie den Start des Codespaces ab. Dieser Startvorgang kann einige Minuten dauern.
Melden Sie sich am unteren Rand des Bildschirms mit der Azure Developer CLI bei Azure an:
azd auth login --use-device-code
Kopieren Sie den Code vom Terminal und fügen Sie ihn dann in einen Browser ein. Befolgen Sie die Anweisungen zum Authentifizieren mit Ihrem Azure-Konto.
Stellen Sie die erforderliche Azure-Ressource, den Azure OpenAI-Dienst, für die Auswertungs-App bereit:
azd up
Dieser
AZD
Befehl stellt die Auswertungs-App nicht bereit, erstellt aber die Azure OpenAI-Ressource mit einer erforderlichenGPT-4
Bereitstellung, um die Auswertungen in der lokalen Entwicklungsumgebung auszuführen.
Die verbleibenden Aufgaben in diesem Artikel finden im Kontext dieses Entwicklungscontainers statt.
Der Name des GitHub-Repositorys wird in der Suchleiste angezeigt. Mit diesem visuellen Indikator können Sie die Auswertungs-App von der Chat-App unterscheiden. Dieses ai-rag-chat-evaluator
Repository wird in diesem Artikel als Auswertungs-App bezeichnet.
Vorbereiten von Umgebungswerten und Konfigurationsinformationen
Aktualisieren Sie die Umgebungswerte und Konfigurationsinformationen mit den Informationen, die Sie während der Voraussetzungen für die Auswertungs-App gesammelt haben.
Erstellen Sie eine
.env
Datei basierend auf.env.sample
.cp .env.sample .env
Führen Sie diesen Befehl aus, um die erforderlichen Werte für
AZURE_OPENAI_EVAL_DEPLOYMENT
undAZURE_OPENAI_SERVICE
aus der bereitgestellten Ressourcengruppe abzurufen. Fügen Sie diese Werte in die.env
Datei ein.azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT azd env get-value AZURE_OPENAI_SERVICE
Fügen Sie die folgenden Werte aus der Chat-App für die Azure AI Search-Instanz in die Datei ein, die Sie im Abschnitt Voraussetzungen gesammelt haben.
AZURE_SEARCH_SERVICE="<service-name>" AZURE_SEARCH_INDEX="<index-name>"
Verwenden des Microsoft AI-Chat-Protokolls für Konfigurationsinformationen
Die Chat-App und die Auswertungs-App implementieren die Spezifikation des Microsoft AI-Chatprotokolls, eine Open-Source-, Cloud- und sprachunabhängige AI-Endpunkt-API-Spezifikation, die für Nutzung und Auswertung verwendet wird. Wenn Ihre Client- und Endpunkte auf mittlerer Ebene dieser API-Spezifikation entsprechen, können Sie auswertungen auf Ihren KI-Back-Ends konsistent nutzen und ausführen.
Erstellen Sie eine neue Datei mit dem Namen
my_config.json
, und kopieren Sie die folgenden Inhalte in diese Datei:{ "testdata_path": "my_input/qa.jsonl", "results_dir": "my_results/experiment<TIMESTAMP>", "target_url": "http://localhost:50505/chat", "target_parameters": { "overrides": { "top": 3, "temperature": 0.3, "retrieval_mode": "hybrid", "semantic_ranker": false, "prompt_template": "<READFILE>my_input/prompt_refined.txt", "seed": 1 } } }
Das Evaluierungsskript erstellt den
my_results
-Ordner.Das
overrides
Objekt enthält alle Konfigurationseinstellungen, die für die Anwendung erforderlich sind. Jede Anwendung definiert einen eigenen Satz von Einstellungseigenschaften.Verwenden Sie die folgende Tabelle, um die Bedeutung der Einstellungseigenschaften zu verstehen, die an die Chat-App gesendet werden.
Eigenschaft der Einstellungen Beschreibung semantic_ranker
Gibt an, ob Semantischer Sortierer verwendet werden soll, ein Modell, das Suchergebnisse basierend auf der semantischen Ähnlichkeit mit der Abfrage des Benutzers neu sortiert. Wir deaktivieren es für dieses Tutorial, um Kosten zu senken. retrieval_mode
Der zu verwendende Abrufmodus. Der Standardwert lautet hybrid
.temperature
Die Temperatureinstellung für das Modell. Der Standardwert lautet 0.3
.top
Die Anzahl der zurückzugebenden Suchergebnisse. Der Standardwert lautet 3
.prompt_template
Setzt den Prompt außer Kraft, der verwendet wurde, um die Antwort basierend auf der Frage und den Suchergebnissen zu generieren. seed
Der Startwert für alle Aufrufe von GPT-Modellen. Das Festlegen eines Startwerts führt zu konsistenteren Ergebnissen in allen Auswertungen. Ändern Sie den
target_url
Wert in den URI-Wert Ihrer Chat-App, den Sie im Abschnitt "Voraussetzungen" gesammelt haben. Die Chat-App muss dem Chatprotokoll entsprechen. Der URI weist das folgende Format auf:https://CHAT-APP-URL/chat
. Stellen Sie sicher, dass das Protokoll und diechat
-Route Teil des URI sind.
Generieren von Beispieldaten
Um neue Antworten auszuwerten, müssen sie mit einer Wahrheitsantwort verglichen werden, die die ideale Antwort für eine bestimmte Frage ist. Generieren Sie Fragen und Antworten aus Dokumenten, die in Azure AI Search für die Chat-App gespeichert sind.
Kopieren Sie den
example_input
Ordner in einen neuen Ordner mit dem Namenmy_input
.Führen Sie in einer Befehlszeile den folgenden Befehl aus, um die Beispieldaten zu generieren:
python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
Die Frage- und Antwortpaare werden als Eingabe für den im nächsten Schritt verwendeten Evaluator generiert und im my_input/qa.jsonl
JSONL-Format gespeichert. Bei einer Produktionsauswertung würden Sie weitere Frage- und Antwortpaare generieren. Für dieses Dataset werden mehr als 200 generiert.
Hinweis
Pro Quelle werden nur einige Fragen und Antworten generiert, damit Sie dieses Verfahren schnell abschließen können. Es ist nicht vorgesehen, eine Produktionsbewertung zu sein, die mehr Fragen und Antworten pro Quelle haben sollte.
Führen Sie die erste Auswertung mit einer optimierten Eingabeaufforderung aus.
Bearbeiten Sie die
my_config.json
Konfigurationsdateieigenschaften.Eigenschaft Neuer Wert results_dir
my_results/experiment_refined
prompt_template
<READFILE>my_input/prompt_refined.txt
Die optimierte Eingabeaufforderung ist spezifisch für das jeweilige Thema.
If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question. Use clear and concise language and write in a confident yet friendly tone. In your answers, ensure the employee understands how your response connects to the information in the sources and include all citations necessary to help the employee validate the answer provided. For tabular information, return it as an html table. Do not return markdown format. If the question is not in English, answer in the language used in the question. Each source has a name followed by a colon and the actual information. Always include the source name for each fact you use in the response. Use square brackets to reference the source, e.g. [info1.txt]. Don't combine sources, list each source separately, e.g. [info1.txt][info2.pdf].
Führen Sie in eine Befehlseingabe den folgenden Befehl aus, um die Evaluierung auszuführen:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Dieses Skript hat mit der Evaluierung einen neuen Experimentordner in
my_results/
erstellt. Der Ordner enthält die Ergebnisse der Auswertung.Dateiname Beschreibung config.json
Eine Kopie der Konfigurationsdatei, die für die Auswertung verwendet wird. evaluate_parameters.json
Die Parameter, die für die Auswertung verwendet werden. Ähnlich wie config.json
, aber es umfasst auch andere Metadaten wie Zeitstempel.eval_results.jsonl
Jede Frage und Antwort zusammen mit den GPT-Metriken für jedes Frage- und Antwortpaar. summary.json
Die Gesamtergebnisse, z. B. die durchschnittlichen GPT-Metriken.
Führen Sie die zweite Auswertung mit einer schwachen Eingabeaufforderung aus.
Bearbeiten Sie die
my_config.json
Konfigurationsdateieigenschaften.Eigenschaft Neuer Wert results_dir
my_results/experiment_weak
prompt_template
<READFILE>my_input/prompt_weak.txt
Diese schwache Eingabeaufforderung hat keinen Kontext zur Betreffdomäne.
You are a helpful assistant.
Führen Sie in eine Befehlseingabe den folgenden Befehl aus, um die Evaluierung auszuführen:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Führen Sie die dritte Auswertung mit einer bestimmten Temperatur aus.
Verwenden Sie eine Eingabeaufforderung, die mehr Kreativität ermöglicht.
Bearbeiten Sie die
my_config.json
Konfigurationsdateieigenschaften.Vorhanden Eigenschaft Neuer Wert Vorhanden results_dir
my_results/experiment_ignoresources_temp09
Vorhanden prompt_template
<READFILE>my_input/prompt_ignoresources.txt
Neu temperature
0.9
Der Standard
temperature
ist „0.7“. Je höher die Temperatur, umso kreativer die Antworten.Der Prompt
ignore
ist kurz.Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
Das Konfigurationsobjekt sollte wie im folgenden Beispiel aussehen, außer dass Sie
results_dir
durch Ihren Pfad ersetzt haben.{ "testdata_path": "my_input/qa.jsonl", "results_dir": "my_results/prompt_ignoresources_temp09", "target_url": "https://YOUR-CHAT-APP/chat", "target_parameters": { "overrides": { "temperature": 0.9, "semantic_ranker": false, "prompt_template": "<READFILE>my_input/prompt_ignoresources.txt" } } }
Führen Sie in eine Befehlseingabe den folgenden Befehl aus, um die Evaluierung auszuführen:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Überprüfen der Auswertungsergebnisse
Sie haben drei Evaluierungen basierend auf unterschiedlichen Eingabeaufforderungen und App-Einstellungen durchgeführt. Die Ergebnisse werden in dem Ordner my_results
gespeichert. Überprüfen Sie, wie sich die Ergebnisse je nach den Einstellungen unterscheiden.
Verwenden Sie das Überprüfungstool, um die Ergebnisse der Auswertungen anzuzeigen.
python -m evaltools summary my_results
Die Ergebnisse sehen etwa so aus:
Jeder Wert wird als Zahl und Prozentsatz ausgegeben.
Verwenden Sie die folgende Tabelle, um die Bedeutung der Werte zu verstehen.
value Beschreibung Fundiertheit Überprüft, wie gut die Antworten des Modells auf faktenbezogenen, überprüfbaren Informationen basieren. Eine Antwort wird als gut fundiert betrachtet, wenn sie sachlich korrekt ist und die Realität widerspiegelt. Relevanz Dies ist ein Maß dafür, wie genau die Antworten des Modells mit dem Kontext oder der Eingabeaufforderung übereinstimmen. Eine relevante Antwort passt direkt zur Frage oder Anweisung des Benutzers. Kohärenz Überprüft, wie logisch konsistent die Antworten des Modells sind. Eine kohärente Antwort wahrt einen logischen Fluss und widerspricht sich nicht selbst. Quellenangaben Gibt an, ob die Antwort im in der Eingabeaufforderung angeforderten Format zurückgegeben wurde. Länge Ein Maß für die Länge der Antwort. Die Ergebnisse sollten darauf hinweisen, dass alle drei Auswertungen eine hohe Relevanz hatten, während die
experiment_ignoresources_temp09
niedrigste Relevanz hatte.Wählen Sie den Ordner aus, um die Konfiguration für die Evaluierung anzuzeigen.
Drücken Sie STRG + C , um die App zu beenden und zum Terminal zurückzukehren.
Vergleichen der Antworten
Vergleichen Sie die zurückgegebenen Antworten aus den Evaluierungen.
Wählen Sie zwei der zu vergleichenden Auswertungen aus, und verwenden Sie dann dasselbe Überprüfungstool, um die Antworten zu vergleichen.
python -m evaltools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
Überprüfen Sie die Ergebnisse. Ihre Ergebnisse können variieren.
Drücken Sie STRG + C , um die App zu beenden und zum Terminal zurückzukehren.
Vorschläge für weitere Evaluierungen
- Bearbeiten Sie die Eingabeaufforderungen in
my_input
, um die Antworten nach Themenbereich, Länge und anderen Faktoren anzupassen. - Bearbeiten Sie die
my_config.json
-Datei, um die Parameter wietemperature
undsemantic_ranker
zu ändern, und führen Sie die Experimente erneut aus. - Vergleichen Sie verschiedene Antworten, um zu verstehen, wie sich Eingabeaufforderung und Frage auf die Antwortqualität auswirken.
- Generieren Sie für jedes Dokument im Azure KI-Suche-Index eine separate Gruppe von Fragen und Ground Truth-Antworten. Führen Sie dann die Evaluierungen erneut aus, um zu sehen, wie sich die Antworten unterscheiden.
- Ändern Sie die Eingabeaufforderungen, um kürzere oder längere Antworten anzugeben, indem Sie die Anforderung am Ende der Eingabeaufforderung hinzufügen. Beispiel:
Please answer in about 3 sentences.
.
Bereinigen von Ressourcen und Abhängigkeiten
Die folgenden Schritte führen Sie durch den Vorgang zum Bereinigen der verwendeten Ressourcen.
Bereinigen von Azure-Ressourcen
Die in diesem Artikel erstellten Azure-Ressourcen werden Ihrem Azure-Abonnement in Rechnung gestellt. Wenn Sie nicht erwarten, dass diese Ressourcen in Zukunft benötigt werden, löschen Sie sie, um weitere Gebühren zu vermeiden.
Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen zu löschen und den Quellcode zu entfernen:
azd down --purge
GitHub Codespaces und Visual Studio Code bereinigen
Durch das Löschen der GitHub Codespaces-Umgebung wird sichergestellt, dass Sie die anzahl der kostenlosen Berechtigungen pro Kernstunden maximieren können, die Sie für Ihr Konto erhalten.
Wichtig
Weitere Informationen zu den Berechtigungen Ihres GitHub-Kontos finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.
Melden Sie sich beim GitHub Codespaces-Dashboardan.
Finden Sie Ihre derzeit ausgeführten Codespaces, die aus dem GitHub-Repository Azure-Samples/ai-rag-chat-evaluator stammen.
Öffnen Sie das Kontextmenü für den Codebereich, und wählen Sie dann Löschenaus.
Kehren Sie zum Artikel der Chat-App zurück, um diese Ressourcen zu bereinigen.
Verwandte Inhalte
- Siehe das Auswertungs-Repository.
- Sehen Sie sich das GitHub-Repository der Unternehmenschat-App an.
- Erstellen Sie eine Chat-App mit der Azure OpenAI Best Practices-Lösungsarchitektur.
- Erfahren Sie mehr über die Zugriffssteuerung in generativen KI-Apps mit Azure AI Search.
- Erstellen Sie eine unternehmensfähige Azure OpenAI-Lösung mit Azure API Management.
- Siehe Azure AI Search: Übertrifft die Vektorsuche mit hybriden Abruf- und Ranking-Funktionen.