Aan de slag met het evalueren van antwoorden in een chat-app in JavaScript
In dit artikel leest u hoe u de antwoorden van een chat-app evalueert op basis van een set juiste of ideale antwoorden (ook wel grond waarheid genoemd). Wanneer u uw chattoepassing wijzigt op een manier die van invloed is op de antwoorden, voert u een evaluatie uit om de wijzigingen te vergelijken. Deze demotoepassing biedt hulpprogramma's die u vandaag kunt gebruiken om het eenvoudiger te maken om evaluaties uit te voeren.
Door de instructies in dit artikel te volgen, gaat u het volgende doen:
- Gebruik opgegeven voorbeeldprompts die zijn afgestemd op het onderwerpdomein. Deze bevinden zich al in de opslagplaats.
- Genereer voorbeeldgebruikersvragen en basisantwoorden op basis van uw eigen documenten.
- Voer evaluaties uit met behulp van een voorbeeldprompt met de gegenereerde gebruikersvragen.
- Analyse van antwoorden bekijken.
Architectuuroverzicht
Belangrijke onderdelen van de architectuur zijn:
- Door Azure gehoste chat-app: de chat-app wordt uitgevoerd in Azure-app Service. De chat-app voldoet aan het chatprotocol, waarmee de evaluaties-app kan worden uitgevoerd op elke chat-app die voldoet aan het protocol.
- Azure AI Search: de chat-app maakt gebruik van Azure AI Search om de gegevens uit uw eigen documenten op te slaan.
- Generator voor voorbeeldvragen: kan een aantal vragen genereren voor elk document, samen met het antwoord op de grondwaar. Hoe meer vragen, hoe langer de evaluatie.
- Evaluator voert voorbeeldvragen en prompts uit voor de chat-app en retourneert de resultaten.
- Met het beoordelingsprogramma kunt u de resultaten van de evaluaties bekijken.
- Met het hulpprogramma Diff kunt u de antwoorden tussen evaluaties vergelijken.
Vereisten
Azure-abonnement. Maak er gratis een
Toegang verleend tot Azure OpenAI in het gewenste Azure abonnement.
Op dit moment wordt alleen toegang tot deze service verleend door een aanvraag te doen. U kunt toegang tot Azure OpenAI aanvragen door het formulier in te vullen op https://aka.ms/oai/access.
Voltooi de vorige procedure voor de chat-app om de chat-app in Azure te implementeren. Met deze procedure worden de gegevens in de Azure AI Search-resource geladen. Deze resource is vereist om de evaluatie-app te laten werken. Voltooi de sectie Resources opschonen van de vorige procedure niet.
U hebt de volgende Azure-resourcegegevens uit die implementatie nodig, die in dit artikel de chat-app wordt genoemd:
- Web-API-URI: de URI van de geïmplementeerde chat-app-API.
- Azure AI Search. De volgende waarden zijn vereist:
- Resourcenaam: de naam van de Azure AI Search-resource.
- Indexnaam: de naam van de Azure AI Search-index waarin uw documenten worden opgeslagen.
- Querysleutel: de sleutel om een query uit te voeren op uw zoekindex.
- Als u hebt geëxperimenteerd met de verificatie van de chat-app, moet u gebruikersverificatie uitschakelen zodat de evaluatie-app toegang heeft tot de chat-app.
Zodra u deze gegevens hebt verzameld, hoeft u de ontwikkelomgeving van de chat-app niet meer te gebruiken. Verderop in dit artikel wordt er meerdere keren naar verwezen om aan te geven hoe de chat-app wordt gebruikt door de app Evaluaties. Verwijder de resources van de chat-app pas nadat u de volledige procedure in dit artikel hebt voltooid.
Er is een ontwikkelcontaineromgeving beschikbaar met alle afhankelijkheden die nodig zijn om dit artikel te voltooien. U kunt de ontwikkelcontainer uitvoeren in GitHub Codespaces (in een browser) of lokaal met behulp van Visual Studio Code.
- GitHub-account
Open ontwikkelomgeving
Begin nu met een ontwikkelomgeving waarop alle afhankelijkheden zijn geïnstalleerd om dit artikel te voltooien. U moet uw monitorwerkruimte rangschikken, zodat u deze documentatie en de ontwikkelomgeving tegelijkertijd kunt zien.
GitHub Codespaces voert een ontwikkelcontainer uit die wordt beheerd door GitHub met Visual Studio Code voor het web als de gebruikersinterface. Voor de eenvoudigste ontwikkelomgeving gebruikt u GitHub Codespaces zodat u de juiste ontwikkelhulpprogramma's en afhankelijkheden vooraf hebt geïnstalleerd om dit artikel te voltooien.
Belangrijk
Alle GitHub-accounts kunnen Codespaces elke maand maximaal 60 uur gratis gebruiken met 2 kernexemplaren. Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie.
Start het proces om een nieuwe GitHub Codespace te maken op de
main
vertakking van deAzure-Samples/ai-rag-chat-evaluator
GitHub-opslagplaats.Klik met de rechtermuisknop op de volgende knop en selecteer Koppeling openen in een nieuw venster om zowel de ontwikkelomgeving als de documentatie tegelijkertijd beschikbaar te maken.
Controleer op de pagina Codespace maken de configuratie-instellingen voor codespace en selecteer vervolgens Nieuwe codespace maken
Wacht tot de coderuimte is gestart. Dit opstartproces kan enkele minuten duren.
Meld u in de terminal onderaan het scherm aan bij Azure met de Azure Developer CLI.
azd auth login --use-device-code
Kopieer de code uit de terminal en plak deze in een browser. Volg de instructies voor verificatie met uw Azure-account.
Richt de vereiste Azure-resource, Azure OpenAI, in voor de evaluatie-app.
azd up
Hiermee wordt de evaluatie-app niet geïmplementeerd, maar wordt de Azure OpenAI-resource gemaakt met een GPT-4-implementatie die nodig is om de evaluaties lokaal uit te voeren in de ontwikkelomgeving.
De resterende taken in dit artikel vinden plaats in de context van deze ontwikkelingscontainer.
De naam van de GitHub-opslagplaats wordt weergegeven in de zoekbalk. Hiermee kunt u onderscheid maken tussen deze evaluaties-app van de chat-app. Deze
ai-rag-chat-evaluator
opslagplaats wordt in dit artikel de app Evaluaties genoemd.
Omgevingswaarden en configuratiegegevens voorbereiden
Werk de omgevingswaarden en configuratiegegevens bij met de informatie die u hebt verzameld tijdens de vereisten voor de evaluatie-app.
Gebruik de volgende opdracht om de resourcegegevens van de app Evaluaties op te halen in een
.env
bestand:azd env get-values > .env
Voeg de volgende waarden uit de chat-app voor het Azure AI Search-exemplaar toe aan de
.env
sectie met vereisten die u hebt verzameld:AZURE_SEARCH_SERVICE="<service-name>" AZURE_SEARCH_INDEX="<index-name>" AZURE_SEARCH_KEY="<query-key>"
De
AZURE_SEARCH_KEY
waarde is de querysleutel voor het Azure AI Search-exemplaar.Kopieer het
example_config.json
bestand in de hoofdmap van de map Evaluaties-app naar een nieuw bestandmy_config.json
.Vervang de bestaande inhoud door
my_config.json
de volgende inhoud:{ "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" } } }
Wijzig de
target_url
URI-waarde van uw chat-app, die u hebt verzameld in de sectie Vereisten . De chat-app moet voldoen aan het chatprotocol. De URI heeft de volgende indelinghttps://CHAT-APP-URL/chat
. Zorg ervoor dat het protocol en dechat
route deel uitmaken van de URI.
Voorbeeldgegevens genereren
Om nieuwe antwoorden te evalueren, moeten ze worden vergeleken met een "grond waarheid" antwoord, wat het ideale antwoord is voor een bepaalde vraag. Genereer vragen en antwoorden van documenten die zijn opgeslagen in Azure AI Search voor de chat-app.
Kopieer de
example_input
map naar een nieuwe map met de naammy_input
.Voer in een terminal de volgende opdracht uit om de voorbeeldgegevens te genereren:
python3 -m scripts generate --output=my_input/qa.jsonl --numquestions=14 --persource=2
De vraag-/antwoordparen worden gegenereerd en opgeslagen in my_input/qa.jsonl
(JSONL-indeling) als invoer voor de evaluator die in de volgende stap wordt gebruikt. Voor een productie-evaluatie zou u meer QA-paren genereren, mogelijk meer dan 200 voor deze gegevensset.
Notitie
Het aantal vragen en antwoorden per bron is bedoeld om u in staat te stellen deze procedure snel te voltooien. Het is niet bedoeld om een productie-evaluatie te zijn die meer vragen en antwoorden per bron moet hebben.
Voer de eerste evaluatie uit met een verfijnde prompt
Bewerk de eigenschappen van het
my_config.json
configuratiebestand:- Wijzig
results_dir
deze om de naam van de prompt op te nemen:my_results/experiment_refined
. - Wijzig
prompt_template
in:<READFILE>my_input/experiment_refined.txt
als u de verfijnde promptsjabloon in de evaluatie wilt gebruiken.
De verfijnde prompt is zeer specifiek over het onderwerpdomein.
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].
- Wijzig
Voer in een terminal de volgende opdracht uit om de evaluatie uit te voeren:
python3 -m scripts evaluate --config=my_config.json --numquestions=14
Hiermee hebt u een nieuwe experimentmap gemaakt in
my_results
combinatie met de evaluatie. De map bevat de resultaten van de evaluatie, waaronder:eval_results.jsonl
: Elke vraag en elk antwoord, samen met de GPT-metrische gegevens voor elk QA-paar.summary.json
: De algemene resultaten, zoals de gemiddelde GPT-metrische gegevens.
Tweede evaluatie uitvoeren met een zwakke prompt
Bewerk de eigenschappen van het
my_config.json
configuratiebestand:- Wijzigen
results_dir
in:my_results/experiment_weak
- Wijzig
prompt_template
in:<READFILE>my_input/prompt_weak.txt
als u de zwakke promptsjabloon in de volgende evaluatie wilt gebruiken.
Deze zwakke prompt heeft geen context over het onderwerpdomein:
You are a helpful assistant.
- Wijzigen
Voer in een terminal de volgende opdracht uit om de evaluatie uit te voeren:
python3 -m scripts evaluate --config=my_config.json --numquestions=14
Derde evaluatie uitvoeren met een specifieke temperatuur
Gebruik een prompt die meer creativiteit mogelijk maakt.
Bewerk de eigenschappen van het
my_config.json
configuratiebestand:- Wijzigen
results_dir
in:my_results/experiment_ignoresources_temp09
- Wijzigen
prompt_template
in:<READFILE>my_input/prompt_ignoresources.txt
- Voeg een nieuwe onderdrukking toe.
"temperature": 0.9
De standaardtemperatuur is 0,7. Hoe hoger de temperatuur, hoe creatiever de antwoorden.
De negeerprompt is kort:
Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
- Wijzigen
Het configuratieobject moet er als volgt uitzien, behalve dat u uw eigen
results_dir
object gebruikt:{ "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" } } }
Voer in een terminal de volgende opdracht uit om de evaluatie uit te voeren:
python3 -m scripts evaluate --config=my_config.json --numquestions=14
De evaluatieresultaten beoordelen
U hebt drie evaluaties uitgevoerd op basis van verschillende prompts en app-instellingen. De resultaten worden opgeslagen in de my_results
map. Bekijk hoe de resultaten verschillen op basis van de instellingen.
Gebruik het beoordelingsprogramma om de resultaten van de evaluaties te bekijken:
python3 -m review_tools summary my_results
De resultaten zien er als volgt uit:
Elke waarde wordt geretourneerd als een getal en een percentage.
Gebruik de volgende tabel om inzicht te krijgen in de betekenis van de waarden.
Weergegeven als Beschrijving Geaardheid Dit verwijst naar hoe goed de reacties van het model zijn gebaseerd op feitelijke, verifieerbare informatie. Een antwoord wordt beschouwd als geaard als het feitelijk nauwkeurig is en de realiteit weerspiegelt. Relevantie Dit meet hoe dicht de reacties van het model overeenkomen met de context of de prompt. Een relevant antwoord heeft rechtstreeks betrekking op de query of instructie van de gebruiker. Samenhang Dit verwijst naar hoe logisch consistent de reacties van het model zijn. Een coherent antwoord onderhoudt een logische stroom en spreekt zichzelf niet tegen. Gegevensvermelding Dit geeft aan of het antwoord is geretourneerd in de indeling die is aangevraagd in de prompt. Lengte Hiermee wordt de lengte van het antwoord berekend. De resultaten moeten aangeven dat alle 3 evaluaties een hoge relevantie hadden, terwijl de
experiment_ignoresources_temp09
laagste relevantie was.Selecteer de map om de configuratie voor de evaluatie te bekijken.
Voer Ctrl + C in om de app af te sluiten en terug te keren naar de terminal.
De antwoorden vergelijken
Vergelijk de geretourneerde antwoorden uit de evaluaties.
Selecteer twee van de evaluaties die u wilt vergelijken en gebruik vervolgens hetzelfde beoordelingsprogramma om de antwoorden te vergelijken:
python3 -m review_tools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
Controleer de resultaten.
Voer Ctrl + C in om de app af te sluiten en terug te keren naar de terminal.
Suggesties voor verdere evaluaties
- Bewerk de aanwijzingen om
my_input
de antwoorden zoals onderwerpdomein, lengte en andere factoren aan te passen. - Bewerk het
my_config.json
bestand om de parameters te wijzigen, zoalstemperature
ensemantic_ranker
voer experimenten opnieuw uit. - Vergelijk verschillende antwoorden om te begrijpen hoe de prompt en vraag van invloed zijn op de antwoordkwaliteit.
- Genereer een afzonderlijke set vragen en antwoorden op basis van waarheid voor elk document in de Azure AI Search-index. Voer vervolgens de evaluaties opnieuw uit om te zien hoe de antwoorden verschillen.
- Wijzig de aanwijzingen om kortere of langere antwoorden aan te geven door de vereiste toe te voegen aan het einde van de prompt. Bijvoorbeeld
Please answer in about 3 sentences.
Resources opschonen
Azure-resources opschonen
De Azure-resources die in dit artikel zijn gemaakt, worden gefactureerd voor uw Azure-abonnement. Als u deze resources in de toekomst niet meer nodig hebt, verwijdert u deze om te voorkomen dat er meer kosten in rekening worden gebracht.
Voer de volgende Azure Developer CLI-opdracht uit om de Azure-resources te verwijderen en de broncode te verwijderen:
azd down --purge
GitHub Codespaces opschonen
Als u de GitHub Codespaces-omgeving verwijdert, zorgt u ervoor dat u de hoeveelheid gratis rechten per kernuren kunt maximaliseren die u voor uw account krijgt.
Belangrijk
Zie GitHub Codespaces maandelijks inbegrepen opslag- en kernuren voor meer informatie over de rechten van uw GitHub-account.
Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).
Zoek uw momenteel uitgevoerde Codespaces die afkomstig zijn uit de
Azure-Samples/ai-rag-chat-evaluator
GitHub-opslagplaats.Open het contextmenu voor de coderuimte en selecteer Vervolgens Verwijderen.
Ga terug naar het artikel van de chat-app om deze resources op te schonen.
Volgende stappen
- Opslagplaats voor evaluaties
- GitHub-opslagplaats voor enterprise-chat-apps
- Een chat-app bouwen met de best practice-oplossingsarchitectuur van Azure OpenAI
- Toegangsbeheer in Generatieve AI-apps met Azure AI Search
- Een OpenAI-oplossing bouwen die gereed is voor ondernemingen met Azure API Management
- Outperforming vector search with hybrid retrieval and ranking capabilities (Outperforming Vector Search met hybride ophaal- en classificatiemogelijkheden)
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor