Share via


Erste Schritte mit der Auswertung von Antworten in einer Chat-App in JavaScript

In diesem Artikel erfahren Sie, wie Sie die Antworten einer Chat-App anhand einer Reihe von korrekten oder idealen Antworten (als Grundwahrheit bezeichnet) bewerten. Wenn Sie Ihre Chatanwendung auf eine Weise ändern, die sich auf die Antworten auswirkt, führen Sie eine Auswertung aus, um die Änderungen zu vergleichen. Diese Demoanwendung bietet Tools, die Sie heute verwenden können, um die Ausführung von Auswertungen zu vereinfachen.

Indem Sie die Anweisungen in diesem Artikel befolgen, werden Sie:

  • Verwenden Sie bereitgestellte Beispielaufforderungen, die auf den Betreff zugeschnitten sind Standard. Diese befinden sich bereits im Repository.
  • Generieren Sie Beispielbenutzerfragen und grundieren Sie Antworten auf Wahrheiten aus Ihren eigenen Dokumenten.
  • Führen Sie Auswertungen mithilfe einer Beispielaufforderung mit den generierten Benutzerfragen aus.
  • Überprüfen Sie die Analyse der Antworten.

Übersicht über die Architektur

Zu den wichtigsten Komponenten der Architektur gehören:

  • In Azure gehostete Chat-App: Die Chat-App wird in Azure-App Dienst ausgeführt. Die Chat-App entspricht dem Chatprotokoll, mit dem die Auswertungs-App für jede Chat-App ausgeführt werden kann, die dem Protokoll entspricht.
  • Azure AI Search: Die Chat-App verwendet Azure AI Search, um die Daten aus Ihren eigenen Dokumenten zu speichern.
  • Beispielfragen-Generator: Kann eine Reihe von Fragen für jedes Dokument zusammen mit der Antwort auf die Grundwahrung generieren. Je mehr Fragen, desto länger die Auswertung.
  • Evaluator führt Beispielfragen und Eingabeaufforderungen für die Chat-App aus und gibt die Ergebnisse zurück.
  • Mit dem Überprüfungstool können Sie die Ergebnisse der Auswertungen überprüfen.
  • Mit dem Diff-Tool können Sie die Antworten zwischen Auswertungen vergleichen.

Voraussetzungen

  • Azure-Abonnement. Kostenloses Konto erstellen

  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt.

    Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen.

  • Führen Sie das vorherige Chat-App-Verfahren aus, um die Chat-App in Azure bereitzustellen. Dieses Verfahren lädt die Daten in die Azure AI Search-Ressource. Diese Ressource ist erforderlich, damit die Auswertungs-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:

    • Web-API-URI: Der URI der bereitgestellten Chat-App-API.
    • Azure KI Search. Die folgenden Werte sind erforderlich:
      • Ressourcenname: Der Name des Azure AI Search-Ressourcennamens.
      • Indexname: Der Name des Azure AI Search-Index, in dem Ihre Dokumente gespeichert sind.
      • Abfrageschlüssel: Der Schlüssel zum Abfragen des Suchindexes.
    • Wenn Sie mit der Chat-App-Authentifizierung experimentiert haben, müssen Sie die Benutzerauthentifizierung deaktivieren, damit die Auswertungs-App auf die Chat-App zugreifen kann.

    Nachdem Sie diese Informationen gesammelt haben, sollten Sie die Entwicklungsumgebung der Chat-App nicht mehr verwenden. Es wird später in diesem Artikel mehrmals erwähnt, um anzugeben, wie die Chat-App von der Auswertungs-App verwendet wird. Löschen Sie die Chat-App-Ressourcen erst, wenn Sie das gesamte Verfahren in diesem Artikel abgeschlossen haben.

  • 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.

Öffnen Sie die Entwicklungsumgebung

Beginnen Sie jetzt mit einer Entwicklungsumgebung, in der alle Abhängigkeiten installiert sind, um diesen Artikel abzuschließen. Sie sollten Ihren Monitorarbeitsbereich so anordnen, dass Sie diese Dokumentation und die Entwicklungsumgebung gleichzeitig sehen können.

GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für Web als Benutzeroberfläche aus. Verwenden Sie für die einfachste Entwicklungsumgebung GitHub Codespaces, damit Sie die richtigen Entwicklertools und Abhängigkeiten vorinstalliert haben, um diesen Artikel abzuschließen.

Wichtig

Alle GitHub-Konten können Codespaces für bis zu 60 Stunden pro Monat mit zwei Kerninstanzen kostenlos verwenden. Weitere Informationen finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.

  1. Starten Sie den Prozess, um einen neuen GitHub Codespace im Branch main des GitHub-Repositorys Azure-Samples/ai-rag-chat-evaluator zu erstellen.

  2. Klicken Sie mit der rechten Maustaste auf die folgende Schaltfläche, und wählen Sie "Link öffnen" in einem neuen Fenster aus, damit sowohl die Entwicklungsumgebung als auch die Dokumentation gleichzeitig verfügbar sind.

  3. Überprüfen Sie auf der Seite Codespace erstellen die Codespace-Konfigurationseinstellungen, und wählen Sie dann Neuen Codespace erstellen aus.

    Screenshot: Bestätigungsbildschirm vor dem Erstellen eines neuen Codespace.

  4. Warten Sie den Start des Codespaces ab. Dieser Startvorgang kann einige Minuten dauern.

  5. Melden Sie sich am unteren Bildschirmrand am Terminal mit der Azure Developer CLI bei Azure an.

    azd auth login --use-device-code
    
  6. 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.

  7. Stellen Sie die erforderliche Azure-Ressource, Azure OpenAI, für die Auswertungs-App bereit.

    azd up
    

    Dies stellt die Auswertungs-App nicht bereit, erstellt aber die Azure OpenAI-Ressource mit einer GPT-4-Bereitstellung, die erforderlich ist, um die Auswertungen lokal in der Entwicklungsumgebung auszuführen.

  8. Die verbleibenden Aufgaben in diesem Artikel finden im Kontext dieses Entwicklungscontainers statt.

  9. Der Name des GitHub-Repositorys wird in der Suchleiste angezeigt. Dadurch können Sie zwischen dieser Auswertungs-App von der Chat-App unterscheiden. Dieses ai-rag-chat-evaluator Repository wird in diesem Artikel als Evaluierungs-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.

  1. Verwenden Sie den folgenden Befehl, um die Ressourceninformationen der Auswertungs-App in eine .env Datei abzurufen:

    azd env get-values > .env
    
  2. Fügen Sie die folgenden Werte aus der Chat-App für ihre Azure AI Search-Instanz zum .envAbschnitt "Voraussetzungen" hinzu, die Sie im Abschnitt "Voraussetzungen" gesammelt haben:

    AZURE_SEARCH_SERVICE="<service-name>"
    AZURE_SEARCH_INDEX="<index-name>"
    AZURE_SEARCH_KEY="<query-key>"
    

    Der AZURE_SEARCH_KEY Wert ist der Abfrageschlüssel für die Azure AI Search-Instanz.

  3. Kopieren Sie die example_config.json Datei im Stammverzeichnis des App-Ordners "Auswertungen " in eine neue Datei my_config.json.

  4. Ersetzen Sie den vorhandenen Inhalt durch den folgenden Inhalt my_config.json :

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment<TIMESTAMP>",
        "target_url": "http://localhost:50505/chat",
        "target_parameters": {
            "overrides": {
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_refined.txt"
            }
        }
    }
    
  5. Ändern Sie den target_url 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 https://CHAT-APP-URL/chatauf. Stellen Sie sicher, dass das Protokoll und die chat Route Teil des URI sind.

Generieren von Beispieldaten

Um neue Antworten auszuwerten, müssen sie mit einer "bodenwahren" Antwort verglichen werden, was 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.

  1. Kopieren Sie den example_input Ordner in einen neuen Ordner namensmy_input.

  2. Führen Sie in einem Terminal den folgenden Befehl aus, um die Beispieldaten zu generieren:

    python3 -m scripts generate --output=my_input/qa.jsonl --numquestions=14 --persource=2
    

Die Frage-/Antwortpaare werden als Eingabe für den im nächsten Schritt verwendeten Evaluator generiert und im my_input/qa.jsonlJSONL-Format gespeichert. Bei einer Produktionsauswertung würden Sie mehr QA-Paare generieren, vielleicht mehr als 200 für dieses Dataset.

Hinweis

Die wenigen Fragen und Antworten pro Quelle sollen Es Ihnen ermöglichen, dieses Verfahren schnell abzuschließen. Es ist nicht vorgesehen, eine Produktionsbewertung zu sein, die mehr Fragen und Antworten pro Quelle haben sollte.

Erste Auswertung mit einer optimierten Eingabeaufforderung ausführen

  1. Bearbeiten Sie die Eigenschaften der my_config.json Konfigurationsdatei:

    • Ändern, results_dir um den Namen der Eingabeaufforderung einzuschließen: my_results/experiment_refined.
    • Ändern Sie diese prompt_template Einstellung, <READFILE>my_input/experiment_refined.txt um die eingeschränkte Eingabeaufforderungsvorlage in der Auswertung zu verwenden.

    Die verfeinerte Eingabeaufforderung ist sehr spezifisch für den Betreff Standard.

    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 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].
    
  2. Führen Sie in einem Terminal den folgenden Befehl aus, um die Auswertung auszuführen:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

    Dadurch wurde ein neuer Experimentordner mit my_results der Auswertung erstellt. Der Ordner enthält die Ergebnisse der Auswertung, einschließlich:

    • eval_results.jsonl: Jede Frage und Antwort zusammen mit den GPT-Metriken für jedes QA-Paar.
    • summary.json: Die Gesamtergebnisse, z. B. die durchschnittlichen GPT-Metriken.

Zweite Auswertung mit schwacher Eingabeaufforderung ausführen

  1. Bearbeiten Sie die Eigenschaften der my_config.json Konfigurationsdatei:

    • Ändern in results_dir : my_results/experiment_weak
    • Ändern Sie prompt_template diese Einstellung, <READFILE>my_input/prompt_weak.txt um die schwache Eingabeaufforderungsvorlage in der nächsten Auswertung zu verwenden.

    Diese schwache Eingabeaufforderung hat keinen Kontext zu dem Thema Standard:

    You are a helpful assistant.
    
  2. Führen Sie in einem Terminal den folgenden Befehl aus, um die Auswertung auszuführen:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

Dritte Auswertung mit einer bestimmten Temperatur ausführen

Verwenden Sie eine Aufforderung, die mehr Kreativität ermöglicht.

  1. Bearbeiten Sie die Eigenschaften der my_config.json Konfigurationsdatei:

    • Ändern in results_dir : my_results/experiment_ignoresources_temp09
    • Ändern in prompt_template : <READFILE>my_input/prompt_ignoresources.txt
    • Fügen Sie eine neue Außerkraftsetzung hinzu– "temperature": 0.9 die Standardtemperatur ist 0,7. Je höher die Temperatur, desto kreativer die Antworten.

    Die Aufforderung zum Ignorieren 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!
    
  2. Das Config-Objekt sollte wie folgt aussehen, mit Ausnahme ihrer eigenen results_dir:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment_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"
            }
        }
    }
    
  3. Führen Sie in einem Terminal den folgenden Befehl aus, um die Auswertung auszuführen:

    python3 -m scripts evaluate --config=my_config.json --numquestions=14
    

Überprüfen der Auswertungsergebnisse

Sie haben drei Auswertungen basierend auf verschiedenen Eingabeaufforderungen und App-Einstellungen durchgeführt. Die Ergebnisse werden im my_results Ordner gespeichert. Überprüfen Sie, wie sich die Ergebnisse je nach den Einstellungen unterscheiden.

  1. Verwenden Sie das Überprüfungstool, um die Ergebnisse der Auswertungen anzuzeigen:

    python3 -m review_tools summary my_results
    
  2. Die Ergebnisse sehen wie folgt aus:

    Screenshot des Bewertungstools mit den drei Auswertungen.

    Jeder Wert wird als Zahl und prozentual zurückgegeben.

  3. Verwenden Sie die folgende Tabelle, um die Bedeutung der Werte zu verstehen.

    Wert Beschreibung
    Quellenübereinstimmung Dies bezieht sich darauf, wie gut die Antworten des Modells auf faktenbezogenen, überprüfbaren Informationen basieren. Eine Antwort wird als geerdet betrachtet, wenn sie sachlich genau ist und die Realität widerspiegelt.
    Relevance Dies misst, wie genau die Antworten des Modells mit dem Kontext oder der Eingabeaufforderung übereinstimmen. Eine relevante Antwort richtet sich direkt an die Abfrage oder Anweisung des Benutzers.
    Kohärenz Dies bezieht sich darauf, wie logisch konsistent die Antworten des Modells sind. Eine kohärente Reaktion Standard einen logischen Fluss enthält und sich nicht widerlegt.
    Quellenangaben Dies gibt an, ob die Antwort im in der Eingabeaufforderung angeforderten Format zurückgegeben wurde.
    Length Dies misst die Länge der Antwort.
  4. Die Ergebnisse sollten darauf hinweisen, dass alle drei Auswertungen eine hohe Relevanz hatten, während die experiment_ignoresources_temp09 niedrigste Relevanz hatte.

  5. Wählen Sie den Ordner aus, um die Konfiguration für die Auswertung anzuzeigen.

  6. 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 Auswertungen.

  1. Wählen Sie zwei der zu vergleichenden Auswertungen aus, und verwenden Sie dann dasselbe Überprüfungstool, um die Antworten zu vergleichen:

    python3 -m review_tools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
    
  2. Überprüfen Sie die Ergebnisse.

    Screenshot des Vergleichs von Bewertungsantworten zwischen Auswertungen.

  3. Drücken Sie STRG + C, um die App zu beenden und zum Terminal zurückzukehren.

Vorschläge für weitere Auswertungen

  • Bearbeiten Sie die Eingabeaufforderungenmy_input, um die Antworten wie Betreff Standard, Länge und andere Faktoren anzupassen.
  • Bearbeiten Sie die my_config.json Datei, um die Parameter wie temperature, und semantic_ranker führen Sie Experimente erneut aus.
  • Vergleichen Sie verschiedene Antworten, um zu verstehen, wie sich die Eingabeaufforderung und Frage auf die Antwortqualität auswirken.
  • Generieren Sie für jedes Dokument im Azure AI Search-Index eine separate Gruppe von Fragen und bodengetreuen Antworten auf wahrheitsgetreue Antworten. Führen Sie dann die Auswertungen 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

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

Bereinigen von GitHub-Codespaces

Durch das Löschen der GitHub Codespaces-Umgebung wird sichergestellt, dass Sie die Anzahl der kostenlosen Berechtigungsstunden pro Kern 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.

  1. Melden Sie sich beim GitHub Codespaces-Dashboard (https://github.com/codespaces) an.

  2. Suchen Sie Ihre derzeit ausgeführten Codespaces, die aus dem GitHub-Repository Azure-Samples/ai-rag-chat-evaluator stammen.

    Screenshot aller ausgeführten Codespaces einschließlich status und Vorlagen.

  3. Öffnen Sie das Kontextmenü für den Codespace, und wählen Sie dann Löschen aus.

    Screenshot: Kontextmenü für einen Codespace mit hervorgehobener Löschoption.

Kehren Sie zum Artikel der Chat-App zurück, um diese Ressourcen zu bereinigen.

Nächste Schritte