Erstellen einer benutzerdefinierten Chat-App in Python mithilfe des Prompt Flow-SDK
Wichtig
Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
In diesem Schnellstart führen wir Sie durch die Einrichtung Ihrer lokalen Entwicklungsumgebung mit dem Prompt Flow-SDK. Wir schreiben einen Prompt, führen ihn als Teil Ihres App-Codes aus, verfolgen die LLM-Aufrufe und führen eine grundlegende Auswertung der Ausgaben des LLM aus.
Voraussetzungen
Wichtig
Außerdem müssen Sie über die erforderlichen Berechtigungen für das Hinzufügen von Rollenzuweisungen für Speicherkonten in Ihrem Azure-Abonnement verfügen. Das Erteilen von Berechtigungen (Hinzufügen von Rollenzuweisungen) ist nur dem Besitzer der jeweiligen Azure-Ressourcen möglich. Möglicherweise müssen Sie Ihren Azure-Abonnementbesitzer (der möglicherweise auch Ihr IT-Administrator ist) bitten, Zugriff auf Azure OpenAI Service mit Ihrer Identität zu gewähren.
Bevor Sie diese Schnellstartanleitung befolgen, erstellen Sie die Ressourcen, die Sie für Ihre Anwendung benötigen:
- Ein KI Studio-Hub zum Herstellen einer Verbindung mit externen Ressourcen.
- Ein Projekt zum Organisieren Ihrer Projektartefakte und zum Freigeben von Ablaufverfolgungen und Auswertungsausführungen.
- Ein bereitgestelltes Azure OpenAI-Chatmodell (gpt-35-turbo oder gpt-4).
Schließen Sie den KI Studio-Playgroundschnellstart ab, um diese Ressourcen zu erstellen, sofern noch nicht geschehen. Sie können diese Ressourcen auch erstellen, indem Sie den Artikel SDK-Leitfaden zum Erstellen eines Hubs und Projekts befolgen.
Gewähren des Zugriffs auf Azure OpenAI Service mithilfe Ihrer Identität
Um die Best Practices für Sicherheit zu befolgen, verwenden Sie anstelle von API-Schlüsseln Microsoft Entra ID, um sich bei Azure OpenAI mithilfe Ihrer Benutzeridentität zu authentifizieren.
Sie oder Ihr Administrator müssen Ihrer Benutzeridentität die Rolle Cognitive Services OpenAI-Benutzer in der Azure KI Services-Ressource gewähren, die Sie verwenden. Diese Rolle ermöglicht es Ihnen, Azure OpenAI Service mithilfe Ihrer Benutzeridentität aufzurufen.
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 User, group, or service principal (Benutzer, Gruppe oder Dienstprinzipal) aus. Wählen Sie dann Mitglieder auswählen aus.
Suchen Sie im daraufhin geöffneten Bereich Mitglieder auswählen nach dem Namen des Benutzers, für den Sie die Rollenzuweisung hinzufügen möchten. Wählen Sie den Benutzer und dann Auswählen aus.
Fahren Sie mit dem Assistenten fort, und wählen Sie Überprüfen + zuweisen aus, um die Rollenzuweisung hinzuzufügen.
Installieren der Azure CLI und Anmelden
Installieren Sie die Azure-Befehlszeilenschnittstelle und die Anmeldung über Ihre lokale Entwicklungsumgebung, damit Sie Ihre Benutzeranmeldeinformationen verwenden können, um Azure OpenAI Service aufzurufen.
In den meisten Fällen können Sie die Azure CLI über Ihr Terminal mit dem folgenden Befehl installieren:
Sie können die Anweisungen unter Installieren der Azure CLI- befolgen, wenn diese Befehle für Ihr Betriebssystem oder Setup nicht funktionieren.
Melden Sie sich nach der Installation der Azure-Befehlszeilenschnittstelle mit dem Befehl az login
über den Browser an:
az login
Jetzt erstellen wir unsere App und rufen Azure OpenAI Service über den Code auf.
Erstellen einer neuen Python-Umgebung
Zunächst müssen wir eine neue Python-Umgebung erstellen, mit der wir die Prompt Flow-SDK-Pakete installieren können. Installieren Sie KEINE Pakete in Ihrer globalen Python-Installation. Sie sollten beim Installieren von Python-Paketen immer eine virtuelle oder Conda-Umgebung verwenden, andernfalls können Sie die globale Python-Installation beschädigen.
Installieren Sie bei Bedarf Python.
Es wird empfohlen, Python 3.10 oder höher zu verwenden, aber mindestens Python 3.8 ist erforderlich. Wenn Sie keine geeignete Version von Python installiert haben, können Sie die Anweisungen im VS Code-Tutorial für Python befolgen, um Python auf Ihrem Betriebssystem zu installieren.
Erstellen einer virtuellen Umgebung
Wenn Sie Python 3.10 oder höher bereits installiert haben, können Sie mit den folgenden Befehlen eine virtuelle Umgebung erstellen:
Wenn Sie die Python-Umgebung aktivieren, verwenden Sie beim Ausführen von python
oder pip
über die Befehlszeile den Python-Interpreter, der im Ordner .venv
Ihrer Anwendung enthalten ist.
Hinweis
Sie können den Befehl deactivate
verwenden, um die virtuelle Python-Umgebung zu beenden, und sie später bei Bedarf reaktivieren.
Installieren des Prompt Flow-SDK
In diesem Abschnitt verwenden wir Prompt Flow, um unsere Anwendung zu erstellen. Prompt Flow bezeichnet eine Reihe von Entwicklungstools, die entwickelt wurden, um den gesamten Entwicklungszyklus von LLM-basierten KI-Anwendungen zu optimieren, von der Idee, der Prototyperstellung, dem Testen, der Auswertung bis hin zur Produktionsbereitstellung und -überwachung.
Verwenden Sie pip, um das Prompt Flow-SDK in der virtuellen Umgebung zu installieren, die Sie erstellt haben.
pip install promptflow
pip install azure-identity
Das Prompt Flow-SDK hat Abhängigkeiten von mehreren Paketen, die Sie separat installieren können, wenn Sie nicht alle benötigen:
promptflow-core
: enthält die Hauptruntime für Prompt Flow, die für die Ausführung von LLM-Code verwendet wirdpromptflow-tracing
: schlanke Bibliothek, die für das Ausgeben von OpenTelemetry-Ablaufverfolgungen in Standards verwendet wirdpromptflow-devkit
: enthält die Prompt Flow-Tools für die Testumgebung and den Ablaufverfolgungsviewer für lokale Entwicklungsumgebungenopenai
: Clientbibliotheken für die Verwendung von Azure OpenAI Servicepython-dotenv
: Wird verwendet, um Umgebungsvariablen festzulegen, indem sie aus.env
-Dateien gelesen werden
Konfigurieren von Umgebungsvariablen
Ihr KI Services-Endpunkt und der Bereitstellungsname sind erforderlich, um Azure OpenAI Service aus Ihrem Code aufzurufen. In dieser Schnellstartanleitung speichern Sie diese Werte in einer .env
-Datei, bei der es sich um eine Datei handelt, die Umgebungsvariablen enthält, die Ihre Anwendung lesen kann. Diese Werte finden Sie im KI Studio-Chatplayground.
Erstellen Sie eine
.env
-Datei, und fügen Sie den folgenden Code ein:AZURE_OPENAI_ENDPOINT=endpoint_value AZURE_OPENAI_CHAT_DEPLOYMENT=chat_deployment_name AZURE_OPENAI_API_VERSION=api_version
Navigieren Sie zum Chatplayground innerhalb Ihres KI Studio-Projekts. Überprüfen Sie zunächst, ob der Chat mit Ihrem Modell funktioniert, indem Sie eine Nachricht an das LLM senden.
Suchen Sie den Azure OpenAI-Bereitstellungsnamen im Chatplayground. Wählen Sie die Bereitstellung in der Dropdownliste aus, und zeigen Sie mit der Maus auf den Bereitstellungsnamen, um sie anzusehen. In diesem Beispiel ist der Bereitstellungsname gpt-35-turbo-16k.
Ersetzen Sie in der Datei
.env
den Wertchat_deployment_name
durch den Namen der Bereitstellung aus dem vorherigen Schritt. In diesem Beispiel wird der Bereitstellungsnamegpt-35-turbo-16k
verwendet.Wählen Sie die Schaltfläche<> Code anzeigen aus, und kopieren Sie den Endpunktwert und den API-Versionswert.
Ersetzen Sie in der
.env
-Dateiendpoint_value
mit dem Endpunktwert, und ersetzen Sieapi_version
mit der API-Version, die aus dem Dialogfeld im vorherigen Schritt kopiert wurde (z. B. „2024-02-15-preview“).
Warnung
Die schlüsselbasierte Authentifizierung wird unterstützt, aber von Microsoft nicht empfohlen. Wenn Sie Schlüssel verwenden möchten, können Sie Ihren Schlüssel zu .env
hinzufügen. Stellen Sie jedoch sicher, dass sich .env
in Ihrer .gitignore
-Datei befindet, damit Sie es nicht versehentlich in Ihr Git-Repository einchecken.
Erstellen von einfachen Chatprompts und -Apps
Erstellen Sie zuerst eine Prompty-Datei, bei der es sich um das von Prompt Flow unterstützte Promptvorlagenformat handelt.
Erstellen Sie eine chat.prompty
-Datei, und kopieren Sie den folgenden Code hinein:
---
name: Chat Prompt
description: A basic prompt that uses the chat API to answer questions
model:
api: chat
configuration:
type: azure_openai
parameters:
max_tokens: 256
temperature: 0.2
inputs:
chat_input:
type: string
chat_history:
type: list
is_chat_history: true
default: []
outputs:
response:
type: string
sample:
chat_input: What is the meaning of life?
---
system:
You are an AI assistant who helps people find information.
{% for item in history %}
{{item.role}}:
{{item.content}}
{% endfor %}
user:
{{chat_input}}
Jetzt erstellen wir eine Python-Datei, die diese Promptvorlage verwendet. Erstellen Sie eine chat.py
-Datei, und fügen Sie den folgenden Code ein:
import os
from dotenv import load_dotenv
load_dotenv()
from promptflow.core import Prompty, AzureOpenAIModelConfiguration
model_config = AzureOpenAIModelConfiguration(
azure_deployment=os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)
prompty = Prompty.load("chat.prompty", model={'configuration': model_config})
result = prompty(
chat_history=[
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."}
],
chat_input="Do other Azure AI services support this too?")
print(result)
Führen Sie nun in der Konsole den Python-Code aus:
python chat.py
Nun sollte die Ausgabe der Ausführung von Prompty angezeigt werden:
Yes, other Azure AI services also support various capabilities and features. Some of the Azure AI services include Azure Cognitive Services, Azure Machine Learning, Azure Bot Service, and Azure Databricks. Each of these services offers different AI capabilities and can be used for various use cases. If you have a specific service or capability in mind, feel free to ask for more details.
Nachverfolgen der Ausführung Ihres Chatcodes
Nun sehen wir uns an, wie die Ablaufverfolgung von Prompt Flow Einblicke in die verschiedenen LLM-Aufrufe liefern kann, die in unseren Python-Skripts stattfinden.
Fügen Sie am Anfang Ihrer chat.py
-Datei den folgenden Code hinzu, um die Prompt Flow-Ablaufverfolgung zu aktivieren:
from promptflow.tracing import start_trace
start_trace()
Führen Sie chat.py
erneut aus:
python chat.py
Dieses Mal ist ein Link in der Ausgabe vorhanden, um eine Prompt Flow-Ablaufverfolgung der Ausführung anzuzeigen:
Starting prompt flow service...
Start prompt flow service on port 23333, version: 1.10.1.
You can stop the prompt flow service with the following command:'pf service stop'.
Alternatively, if no requests are made within 1 hours, it will automatically stop.
You can view the trace detail from the following URL:
http://localhost:23333/v1.0/ui/traces/?#collection=aistudio-python-quickstart&uiTraceId=0x59e8b9a3a23e4e8893ec2e53d6e1e521
Wenn Sie diesen Link auswählen, wird die Ablaufverfolgung angezeigt. Diese enthält die Schritte der Programmausführung und was an das LLM und die Antwortausgabe übergeben wurde.
Mit der Prompt Flow-Ablaufverfolgung können Sie auch bestimmte Funktionsaufrufe nachverfolgen und Ablaufverfolgungen in KI Studio protokollieren. Weitere Informationen finden Sie unter Verwenden der Ablaufverfolgung im Prompt Flow-SDK.
Auswerten des Prompts
Nun zeigen wir Ihnen, wie Sie die Bewertungen für Prompt Flow verwenden können, um Metriken zu generieren, die die Qualität der Unterhaltung auf einer Skala von 0 bis 5 bewerten können. Wir führen den Prompt erneut aus, aber diesmal speichern wir die Ergebnisse in einem Array, das die vollständige Unterhaltung enthält, und übergeben sie dann zur Bewertung an ChatEvaluator
.
Installieren Sie zunächst promptflow-evals package
:
pip install promptflow-evals
Kopieren Sie nun den folgenden Code in eine evaluate.py
-Datei:
import os
from dotenv import load_dotenv
load_dotenv()
from promptflow.core import Prompty, AzureOpenAIModelConfiguration
from promptflow.evals.evaluators import ChatEvaluator
model_config = AzureOpenAIModelConfiguration(
azure_deployment=os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)
chat_history=[
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."}
]
chat_input="Do other Azure AI services support this too?"
prompty = Prompty.load("chat.prompty", model={'configuration': model_config})
response = prompty(chat_history=chat_history, chat_input=chat_input)
conversation = chat_history
conversation += [
{"role": "user", "content": chat_input},
{"role": "assistant", "content": response}
]
chat_eval = ChatEvaluator(model_config=model_config)
score = chat_eval(conversation=conversation)
print(score)
Führen Sie das Skript evaluate.py
aus:
python evaluate.py
Es sollte eine Ausgabe angezeigt werden, die wie folgt aussieht:
{'gpt_coherence': 5.0, 'gpt_fluency': 5.0, 'evaluation_per_turn': {'gpt_coherence': {'score': [5.0, 5.0]}, 'gpt_fluency': {'score': [5.0, 5.0]}}}
Die Bewertung der Kohärenz und Flüssigkeit der LLM-Antworten in dieser Unterhaltung liegt anscheinend bei 5!
Weitere Informationen zur Verwendung von Prompt Flow-Bewertungen, einschließlich der Erstellung benutzerdefinierter Bewertungs- und Protokollauswertungsergebnisse in KI Studio, finden Sie unter Bewerten Ihrer App mithilfe des Prompt Flow-SDK.