Tutorial: Teil 3: Auswerten und Bereitstellen einer benutzerdefinierte Chat-App mit dem Prompt Flow-SDK
In diesem Tutorial verwenden Sie das Prompt Flow SDK (und andere Bibliotheken), um die in Teil 2 der Tutorialreihe erstellte Chat-App auszuwerten und bereitzustellen. In diesem dritten Teil wird Folgendes vermittelt:
- Auswerten der Qualität von Chat-App-Antworten
- Bereitstellen der Chat-App in Azure
- Überprüfen der Bereitstellung
Dieses Tutorial ist der dritte Teil eines dreiteiligen Tutorials.
Voraussetzungen
Schließen Sie Teil 2 der Tutorialreihe ab, um die Chat-App zu erstellen.
Sie müssen über die erforderlichen Berechtigungen verfügen, um Rollenzuweisungen in Ihrem Azure-Abonnement hinzufügen zu können. Das Erteilen von Berechtigungen per Rollenzuweisung ist nur dem Besitzer der jeweiligen Azure-Ressourcen möglich. Möglicherweise müssen Sie Ihren Azure-Abonnementbesitzer (der möglicherweise Ihr IT-Administrator ist) um Hilfe beim Endpunktzugriff später im Lernprogramm bitten.
Auswerten der Qualität der Chat-App-Antworten
Da Sie nun wissen, dass Ihre Chat-App gut auf Ihre Abfragen reagiert (auch mit dem Chatverlauf), ist es an der Zeit, ihre Leistung anhand einiger verschiedener Metriken und weiterer Daten zu bewerten.
Sie verwenden die prompt flow-Auswertung mit einem Auswertungsdataset und der Zielfunktion get_chat_response()
und bewerten dann die Auswertungsergebnisse.
Nachdem Sie eine Auswertung ausgeführt haben, können Sie Verbesserungen an der Logik vornehmen und beispielsweise den System-Prompt verbessern und beobachten, wie sich die Antworten der Chat-App ändern und verbessern.
Festlegen des Auswertungsmodells
Wählen Sie das Auswertungsmodell aus, das Sie verwenden möchten. Es kann sich um ein Chatmodell handeln, das Sie zum Erstellen der App verwendet haben. Wenn Sie ein anderes Modell für die Auswertung verwenden möchten, müssen Sie es bereitstellen oder angeben, falls es bereits vorhanden ist. Sie können z. B. gpt-35-turbo
für Ihre Chatvervollständigungen verwenden, möchten aber gpt-4
für die Auswertung nutzen, da dieses Modell möglicherweise eine bessere Leistung erzielt.
Fügen Sie den Auswertungsmodellnamen in der Datei vom Typ .env hinzu:
AZURE_OPENAI_EVALUATION_DEPLOYMENT=<your evaluation model deployment name>
Erstellen des Evaluierungsdatasets
Verwenden Sie das folgende Auswertungsdataset, das Beispielfragen und erwartete Antworten (Wahrheit) enthält.
Erstellen Sie eine Datei namens eval_dataset.jsonl im Ordner rag-tutorial. Eine Referenz finden Sie in der Anwendungscodestruktur.
Fügen Sie dieses Dataset in die Datei ein:
{"chat_input": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} {"chat_input": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} {"chat_input": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} {"chat_input": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} {"chat_input": "What brand is for TrailMaster tent? ", "truth": "OutdoorLiving"} {"chat_input": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} {"chat_input": "What is the floor area for Floor Area? ", "truth": "80 square feet"} {"chat_input": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} {"chat_input": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} {"chat_input": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} {"chat_input": "How long are the TrailBlaze pants under warrenty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} {"chat_input": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} {"chat_input": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}
Auswerten mit prompt flow-Auswertungen
Definieren Sie nun ein Auswertungsskript, mit dem die folgenden Schritte ausgeführt werden:
- Importieren der
evaluate
-Funktion und Auswertungen aus dem prompt flow-Paketevals
- Laden des
.jsonl
-Beispieldatasets - Generieren wir einen Zielfunktionswrappers um unsere Chat-App-Logik.
- Ausführen der Auswertung, bei der die Zielfunktion übernommen und das Auswertungsdataset mit den Antworten der Chat-App zusammengeführt wird
- Generieren verschiedener GPT-unterstützter Metriken (Relevanz, Fundiertheit und Kohärenz) zum Auswerten der Qualität der Chat-App-Antworten.
- Lokales Ausgeben der Ergebnisse und Protokollieren der Ergebnisse im Cloudprojekt
Mit dem Skript können Sie die Ergebnisse lokal überprüfen, indem Sie die Ergebnisse in der Befehlszeile und in einer JSON-Datei ausgeben.
Das Skript protokolliert außerdem die Auswertungsergebnisse im Cloudprojekt, sodass Sie die Auswertungsausführungen auf der Benutzeroberfläche vergleichen können.
Erstellen Sie eine Datei namens evaluate.py im Ordner rag-tutorial.
Fügen Sie den folgenden Code hinzu: Aktualisieren Sie
dataset_path
undevaluation_name
entsprechend Ihrem Anwendungsfall.import json import os # set environment variables before importing any other code from dotenv import load_dotenv load_dotenv() import pandas as pd from promptflow.core import AzureOpenAIModelConfiguration from promptflow.evals.evaluate import evaluate from promptflow.evals.evaluators import ( RelevanceEvaluator, GroundednessEvaluator, CoherenceEvaluator, ) # Helper methods def load_jsonl(path): with open(path, "r") as f: return [json.loads(line) for line in f.readlines()] def copilot_wrapper(*, chat_input, **kwargs): from copilot_flow.copilot import get_chat_response result = get_chat_response(chat_input) parsedResult = {"answer": str(result["reply"]), "context": str(result["context"])} return parsedResult def run_evaluation(eval_name, dataset_path): model_config = AzureOpenAIModelConfiguration( azure_deployment=os.getenv("AZURE_OPENAI_EVALUATION_DEPLOYMENT"), api_version=os.getenv("AZURE_OPENAI_API_VERSION"), azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"), ) # Initializing Evaluators relevance_eval = RelevanceEvaluator(model_config) groundedness_eval = GroundednessEvaluator(model_config) coherence_eval = CoherenceEvaluator(model_config) output_path = "./eval_results.jsonl" result = evaluate( target=copilot_wrapper, evaluation_name=eval_name, data=dataset_path, evaluators={ "relevance": relevance_eval, "groundedness": groundedness_eval, "coherence": coherence_eval, }, evaluator_config={ "relevance": {"question": "${data.chat_input}"}, "coherence": {"question": "${data.chat_input}"}, }, # to log evaluation to the cloud AI Studio project azure_ai_project={ "subscription_id": os.getenv("AZURE_SUBSCRIPTION_ID"), "resource_group_name": os.getenv("AZURE_RESOURCE_GROUP"), "project_name": os.getenv("AZUREAI_PROJECT_NAME"), }, ) tabular_result = pd.DataFrame(result.get("rows")) tabular_result.to_json(output_path, orient="records", lines=True) return result, tabular_result if __name__ == "__main__": eval_name = "tutorial-eval" dataset_path = "./eval_dataset.jsonl" result, tabular_result = run_evaluation( eval_name=eval_name, dataset_path=dataset_path ) from pprint import pprint pprint("-----Summarized Metrics-----") pprint(result["metrics"]) pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}")
Mit der Hauptfunktion am Ende können Sie das Auswertungsergebnis lokal anzeigen und einen Link zu den Auswertungsergebnissen in KI Studio erhalten.
Ausführen des Auswertungsskripts
Melden Sie sich in der Konsole mit der Azure CLI bei Ihrem Azure-Konto an:
az login
Installieren Sie die erforderlichen Pakete:
pip install promptflow-evals pip install promptflow-azure
Führen Sie nun das Auswertungsskript aus:
python evaluate.py
Weitere Informationen zur Verwendung des prompt flow SDK für die Auswertung finden Sie unter Bewerten mit dem prompt flow SDK.
Interpretieren der Auswertungsausgabe
In der Konsolenausgabe sehen Sie für jede Frage eine Antwort und die zusammengefassten Metriken in diesem übersichtlichen Tabellenformat. (Möglicherweise werden in Ihrer Ausgabe andere Spalten angezeigt.)
'-----Summarized Metrics-----'
{'coherence.gpt_coherence': 4.3076923076923075,
'groundedness.gpt_groundedness': 4.384615384615385,
'relevance.gpt_relevance': 4.384615384615385}
'-----Tabular Result-----'
question ... gpt_coherence
0 Which tent is the most waterproof? ... 5
1 Which camping table holds the most weight? ... 5
2 How much does TrailWalker Hiking Shoes cost? ... 5
3 What is the proper care for trailwalker hiking... ... 5
4 What brand is the TrailMaster tent? ... 1
5 How do I carry the TrailMaster tent around? ... 5
6 What is the floor area for Floor Area? ... 3
7 What is the material for TrailBlaze Hiking Pants ... 5
8 What color do the TrailBlaze Hiking Pants come ... 5
9 Can the warranty for TrailBlaze pants be trans... ... 3
10 How long are the TrailBlaze pants under warren... ... 5
11 What is the material for PowerBurner Camping S... ... 5
12 Is France in Europe? ... 1
Das Skript schreibt die vollständigen Auswertungsergebnisse in ./eval_results.jsonl
.
Außerdem gibt es in der Konsole einen Link zum Anzeigen von Auswertungsergebnissen in Ihrem Azure KI Studio-Projekt.
Hinweis
Möglicherweise wird ERROR:asyncio:Unclosed client session
angezeigt: Diese Meldung kann ignoriert werden und wirkt sich nicht auf die Auswertungsergebnisse aus.
Anzeigen von Auswertungsergebnissen in KI Studio
Nachdem die Auswertung abgeschlossen ist, klicken Sie auf den Link, um die Auswertungsergebnisse auf der Seite Auswertung in Azure KI Studio anzuzeigen.
Sie können sich auch die einzelnen Zeilen ansehen und Metrikergebnisse pro Zeile sowie den vollständigen Kontext/die Dokumente anzeigen, die abgerufen wurden. Diese Metriken können beim Interpretieren und Debuggen von Auswertungsergebnissen hilfreich sein.
Weitere Informationen zu Auswertungsergebnissen in KI Studio finden Sie unter Anzeigen von Auswertungsergebnissen in KI Studio.
Nachdem Sie sich nun vergewissert haben, dass sich Ihre Chat-App wie erwartet verhält, können Sie Ihre Anwendung bereitstellen.
Bereitstellen der Chat-App in Azure
Lassen Sie uns nun diese Chat-App an einem verwalteten Endpunkt bereitstellen, damit er von einer externen Anwendung oder Website genutzt werden kann.
Mit dem Bereitstellungsskript werden folgende Schritte ausgeführt:
- Erstellen eines verwalteten Onlineendpunkts
- Definieren des Flows als Modell
- Bereitstellen des Flows in einer verwalteten Umgebung auf diesem Endpunkt mit unseren Umgebungsvariablen
- Weiterleiten des gesamten Datenverkehrs an diese Bereitstellung
- Ausgeben des Links zum Anzeigen und Testen der Bereitstellung in Azure KI Studio
Die Bereitstellung definiert einen Buildkontext (Dockerfile), der auf der im Flowordner angegebenen Datei requirement.txt
basiert, und legt außerdem die Umgebungsvariablen auf die bereitgestellte Umgebung fest. So können Sie sicher sein, dass die Chat-App in einer Produktionsumgebung genau so wie lokal ausgeführt wird.
Buildkontext für die Bereitstellung (Dockerfile)
Die bereitgestellte Umgebung benötigt einen Buildkontext. Definieren Sie also ein Dockerfile für die bereitgestellte Umgebung. Das Bereitstellungsskript erstellt eine Umgebung basierend auf dieser Dockerfile-Datei. Erstellen Sie dieses Dockerfile im Ordner copilot_flow:
FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
COPY ./requirements.txt .
RUN pip install -r requirements.txt
Bereitstellen der Chat-App auf einem verwalteten Endpunkt
Um Ihre Anwendung auf einem verwalteten Endpunkt in Azure bereitzustellen, erstellen Sie einen Onlineendpunkt und dann eine Bereitstellung auf diesem Endpunkt, und leiten Sie dann den gesamten Datenverkehr an diese Bereitstellung weiter.
Im Rahmen der Bereitstellung wird der Ordner copilot_flow als Modell verpackt und eine Cloudumgebung erstellt. Der Endpunkt wird mit Microsoft Entra ID-Authentifizierung eingerichtet. Sie können den gewünschten Authentifizierungsmodus im Code oder in Azure KI Studio auf der Seite mit den Endpunktdetails aktualisieren.
Wichtig
Für die Bereitstellung Ihrer Anwendung auf einem verwalteten Endpunkt in Azure fallen Computekosten basierend auf dem ausgewählten Instanztyp aus. Stellen Sie sicher, dass Sie die zugehörigen Kosten kennen und über ein Kontingent für den von Ihnen angegebenen Instanztyp verfügen. Erfahren Sie mehr über Onlineendpunkte.
Erstellen Sie die Datei deploy.py im Ordner rag-tutorial. Fügen Sie den folgenden Code hinzu:
import os
from dotenv import load_dotenv
load_dotenv()
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
BuildContext,
)
client = MLClient(
DefaultAzureCredential(),
os.getenv("AZURE_SUBSCRIPTION_ID"),
os.getenv("AZURE_RESOURCE_GROUP"),
os.getenv("AZUREAI_PROJECT_NAME"),
)
endpoint_name = "tutorial-endpoint"
deployment_name = "tutorial-deployment"
endpoint = ManagedOnlineEndpoint(
name=endpoint_name,
properties={
"enforce_access_to_default_secret_stores": "enabled" # for secret injection support
},
auth_mode="aad_token", # using aad auth instead of key-based auth
)
# Get the directory of the current script
script_dir = os.path.dirname(os.path.abspath(__file__))
# Define the path to the directory, appending the script directory to the relative path
copilot_path = os.path.join(script_dir, "copilot_flow")
deployment = ManagedOnlineDeployment(
name=deployment_name,
endpoint_name=endpoint_name,
model=Model(
name="copilot_flow_model",
path=copilot_path, # path to promptflow folder
properties=[ # this enables the chat interface in the endpoint test tab
["azureml.promptflow.source_flow_id", "basic-chat"],
["azureml.promptflow.mode", "chat"],
["azureml.promptflow.chat_input", "chat_input"],
["azureml.promptflow.chat_output", "reply"],
],
),
environment=Environment(
build=BuildContext(
path=copilot_path,
),
inference_config={
"liveness_route": {
"path": "/health",
"port": 8080,
},
"readiness_route": {
"path": "/health",
"port": 8080,
},
"scoring_route": {
"path": "/score",
"port": 8080,
},
},
),
instance_type="Standard_DS3_v2",
instance_count=1,
environment_variables={
"PRT_CONFIG_OVERRIDE": f"deployment.subscription_id={client.subscription_id},deployment.resource_group={client.resource_group_name},deployment.workspace_name={client.workspace_name},deployment.endpoint_name={endpoint_name},deployment.deployment_name={deployment_name}",
"AZURE_OPENAI_ENDPOINT": os.getenv("AZURE_OPENAI_ENDPOINT"),
"AZURE_SEARCH_ENDPOINT": os.getenv("AZURE_SEARCH_ENDPOINT"),
"AZURE_OPENAI_API_VERSION": os.getenv("AZURE_OPENAI_API_VERSION"),
"AZURE_OPENAI_CHAT_DEPLOYMENT": os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
"AZURE_OPENAI_EVALUATION_DEPLOYMENT": os.getenv(
"AZURE_OPENAI_EVALUATION_DEPLOYMENT"
),
"AZURE_OPENAI_EMBEDDING_DEPLOYMENT": os.getenv(
"AZURE_OPENAI_EMBEDDING_DEPLOYMENT"
),
"AZUREAI_SEARCH_INDEX_NAME": os.getenv("AZUREAI_SEARCH_INDEX_NAME"),
},
)
# 1. create endpoint
created_endpoint = client.begin_create_or_update(
endpoint
).result() # result() means we wait on this to complete
# 2. create deployment
created_deployment = client.begin_create_or_update(deployment).result()
# 3. update endpoint traffic for the deployment
endpoint.traffic = {deployment_name: 100} # 100% of traffic
client.begin_create_or_update(endpoint).result()
Wichtig
Der Name für Endpunkt und Bereitstellung muss innerhalb einer Azure-Region eindeutig sein. Wenn ein Fehler angezeigt wird, dass der Endpunkt- oder Bereitstellungsname bereits vorhanden ist, versuchen Sie es mit einem anderen Namen.
Details zur Ausgabebereitstellung
Fügen Sie am Ende des Bereitstellungsskripts die folgenden Zeilen hinzu, um das Auswertungsergebnis lokal anzuzeigen und einen Link zu Studio abzurufen:
def get_ai_studio_url_for_deploy(
client: MLClient, endpoint_name: str, deployment_name
) -> str:
studio_base_url = "https://ai.azure.com"
deployment_url = f"{studio_base_url}/projectdeployments/realtime/{endpoint_name}/{deployment_name}/detail?wsid=/subscriptions/{client.subscription_id}/resourceGroups/{client.resource_group_name}/providers/Microsoft.MachineLearningServices/workspaces/{client.workspace_name}&deploymentName={deployment_name}"
return deployment_url
print("\n ~~~Deployment details~~~")
print(f"Your online endpoint name is: {endpoint_name}")
print(f"Your deployment name is: {deployment_name}")
print("\n ~~~Test in the Azure AI Studio~~~")
print("\n Follow this link to your deployment in the Azure AI Studio:")
print(
get_ai_studio_url_for_deploy(
client=client, endpoint_name=endpoint_name, deployment_name=deployment_name
)
)
Führen Sie nun das Skript mit folgendem Befehl aus:
python deploy.py
Hinweis
Die Bereitstellung kann mehr als 10 Minuten dauern. Es wird empfohlen, den nächsten Schritt auszuführen, um den Zugriff auf den Endpunkt zuzuweisen, während Sie warten.
Sobald die Bereitstellung abgeschlossen ist, erhalten Sie einen Link zur Azure KI Studio-Bereitstellungsseite, auf der Sie Ihre Bereitstellung testen können.
Überprüfen der Bereitstellung
Wir empfehlen, Ihre Anwendung in Azure KI Studio zu testen. Wenn Sie den bereitgestellten Endpunkt lieber lokal testen möchten, können Sie ihn mit benutzerdefiniertem Code aufrufen.
Notieren Sie sich den Endpunktnamen. Sie benötigen ihn für die nächsten Schritte.
Endpunktzugriff für die Azure OpenAI-Ressource
Möglicherweise müssen Sie Ihren Azure-Abonnementbesitzer (der möglicherweise Ihr IT-Administrator ist) um Hilfe bitten.
Während Sie warten, bis Ihre Anwendung bereitgestellt wird, können Sie oder Ihr Administrator dem Endpunkt rollenbasierten Zugriff zuweisen. Mit diesen Rollen kann die Anwendung wie lokal ohne Schlüssel in der bereitgestellten Umgebung ausgeführt werden.
Zuvor haben Sie Ihr Konto mit einer bestimmten Rolle bereitgestellt, um mithilfe der Microsoft Entra ID-Authentifizierung auf die Ressource zugreifen zu können. Weisen Sie nun den Endpunkt mit der gleichen OpenAI-Benutzerrolle für Cognitive Services zu.
Hinweis
Diese Schritte ähneln der Vorgehensweise zum Zuweisen einer Rolle für Ihre Benutzeridentität zur Verwendung von Azure OpenAI Service im Schnellstart.
So gewähren Sie sich selbst Zugriff auf die Azure KI Services-Ressource, die Sie verwenden:
Wechseln Sie in KI Studio zu Ihrem Projekt, und wählen Sie im linken Bereich Einstellungen aus.
Wählen Sie im Abschnitt Verbundene Ressourcen den Verbindungsnamen mit dem Typ AIServices aus.
Hinweis
Wenn die Verbindung AIServices nicht angezeigt wird, verwenden Sie stattdessen die Azure OpenAI-Verbindung.
Wählen Sie auf der Seite mit den Ressourcendetails den Link unter der Überschrift Ressource aus, um die KI Services-Ressource im Azure-Portal zu öffnen.
Wählen Sie links im Azure-Portal Zugriffssteuerung (IAM)>+ Hinzufügen>Rollenzuweisung hinzufügen aus.
Suchen Sie nach der Rolle Cognitive Services OpenAI-Benutzer, und wählen Sie sie aus. Wählen Sie Weiteraus.
Wählen Sie Verwaltete Identität aus. Wählen Sie dann Mitglieder auswählen aus.
Wählen Sie im daraufhin geöffneten Bereich Mitglieder auswählen die Option Onlineendpunkt für maschinelles Lernen für die verwaltete Identität aus, und suchen Sie dann nach Ihrem Endpunktnamen. Wählen Sie den Endpunkt und dann Auswählen aus.
Fahren Sie mit dem Assistenten fort, und wählen Sie Überprüfen + zuweisen aus, um die Rollenzuweisung hinzuzufügen.
Hinweis
Die Verteilung des Zugriffs kann einige Minuten dauern. Wenn beim Testen im nächsten Schritt ein Fehler vom Typ „Nicht autorisiert“ auftritt, versuchen Sie es nach ein paar Minuten erneut.
Endpunktzugriff für eine Azure KI Search-Ressource
Möglicherweise müssen Sie Ihren Azure-Abonnementbesitzer (der möglicherweise Ihr IT-Administrator ist) um Hilfe bitten.
Sie haben die Rolle Mitwirkender an Suchindexdaten für den Dienst Azure KI-Suche zugewiesen und müssen nun die gleiche Rolle für Ihren Endpunkt zuweisen.
Wählen Sie in Azure KI Studio Einstellungen aus, und navigieren Sie zum verbundenen Dienst Azure KI-Suche.
Wählen Sie den Link aus, um eine Zusammenfassung der Ressource zu öffnen. Wählen Sie den Link auf der Zusammenfassungsseite aus, um die Ressource im Azure-Portal zu öffnen.
Wählen Sie links im Azure-Portal Zugriffssteuerung (IAM)>+ Hinzufügen>Rollenzuweisung hinzufügen aus.
Suchen Sie nach der Rolle Mitwirkender an Suchindexdaten, und wählen Sie sie aus. Wählen Sie Weiteraus.
Wählen Sie Verwaltete Identität aus. Wählen Sie dann Mitglieder auswählen aus.
Wählen Sie im daraufhin geöffneten Bereich Mitglieder auswählen die Option Onlineendpunkt für maschinelles Lernen für die verwaltete Identität aus, und suchen Sie dann nach Ihrem Endpunktnamen. Wählen Sie den Endpunkt und dann Auswählen aus.
Fahren Sie mit dem Assistenten fort, und wählen Sie Überprüfen + zuweisen aus, um die Rollenzuweisung hinzuzufügen.
Hinweis
Die Verteilung des Zugriffs kann einige Minuten dauern. Wenn beim Testen im nächsten Schritt ein Fehler vom Typ „Nicht autorisiert“ auftritt, versuchen Sie es nach ein paar Minuten erneut.
Testen Ihrer Bereitstellung in KI Studio
Sobald die Bereitstellung abgeschlossen ist, erhalten Sie einen praktischen Link zu Ihrer Bereitstellung. Wenn Sie den Link nicht verwenden, navigieren Sie in Ihrem Projekt zur Registerkarte Bereitstellungen, und wählen Sie Ihre neue Bereitstellung aus.
Wählen Sie die Registerkarte Testen aus, und stellen Sie eine Frage auf der Chatoberfläche.
Geben Sie beispielsweise „Sind die Trailwalker-Wanderschuhe wasserdicht?“ ein, und drücken Sie die EINGABETASTE.
Wenn eine Antwort zurückgegeben wird, wird dadurch die Bereitstellung bestätigt.
Wenn ein Fehler angezeigt wird, wählen Sie die Registerkarte Protokolle aus, um weitere Details zu erhalten.
Hinweis
Wenn Sie einen Fehler vom Typ „Nicht autorisiert“ erhalten, wurde der Endpunktzugriff möglicherweise noch nicht angewendet. Wiederholen Sie den Vorgang in einigen Minuten.
Lokales Aufrufen der bereitgestellten Chatfunktion
Wenn Sie Ihre Bereitstellung lieber lokal überprüfen möchten, können Sie sie über ein Python-Skript aufrufen.
Definieren Sie ein Skript, das folgende Schritte ausführt:
- Erstellen einer wohlgeformten Anforderung an unsere Bewertungs-URL
- Posten der Anforderung und Behandeln der Antwort
Erstellen Sie mit dem folgenden Code die Datei invoke-local.py im Ordner rag-tutorial. Ändern Sie query
und endpoint_name
(und bei Bedarf weitere Parameter) entsprechend Ihrem Anwendungsfall.
import os
from dotenv import load_dotenv
load_dotenv()
import requests
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
query = "Are the trailwalker shoes waterproof?"
endpoint_name = "tutorial-endpoint"
client = MLClient(
DefaultAzureCredential(),
os.getenv("AZURE_SUBSCRIPTION_ID"),
os.getenv("AZURE_RESOURCE_GROUP"),
os.getenv("AZUREAI_PROJECT_NAME"),
)
scoring_url = client.online_endpoints.get(endpoint_name).scoring_uri
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {client._credential.get_token('https://ml.azure.com').token}",
"Accept": "application/json",
}
response = requests.post(
scoring_url,
headers=headers,
json={"chat_input": query},
)
(print(response.json()["reply"]))
Die Chat-App-Antwort auf Ihre Abfrage sollte in der Konsole angezeigt werden.
Hinweis
Wenn Sie einen Fehler vom Typ „Nicht autorisiert“ erhalten, wurde der Endpunktzugriff möglicherweise noch nicht angewendet. Wiederholen Sie den Vorgang in einigen Minuten.
Bereinigen von Ressourcen
Um unnötige Azure-Kosten zu vermeiden, sollten Sie die in diesem Tutorial erstellten Ressourcen löschen, wenn sie nicht mehr benötigt werden. Zum Verwalten von Ressourcen können Sie das Azure-Portal verwenden.
Zugehöriger Inhalt
- Weitere Informationen zu Prompt Flow
- Eine Chat-App-Beispielanwendung, die RAG implementiert, finden Sie unter Azure-Samples/rag-data-openai-python-promptflow.