Teilen über


Erstellen einer benutzerdefinierten Chat-App in Python mithilfe des Prompt Flow-SDK

Wichtig

Einige der in diesem Artikel beschriebenen Features sind möglicherweise nur in der 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

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.

Außerdem müssen Sie über die erforderlichen Berechtigungen verfügen, um Rollenzuweisungen für Speicherkonten in Ihrem Azure-Abonnement hinzuzufü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 IT-Administrator bitten, Zugriff auf Azure OpenAI Service mit Ihrer Identität zu gewähren.

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:

  1. Wechseln Sie in KI Studio zu Ihrem Projekt, und wählen Sie im linken Bereich Einstellungen aus.

  2. Wählen Sie im Abschnitt Verbundene Ressourcen den Verbindungsnamen mit dem Typ AIServices aus.

    Screenshot der Seite „Projekteinstellungen“, auf der hervorgehoben wird, wie die verbundene KI Services-Ressource ausgewählt wird, um sie zu öffnen.

    Hinweis

    Wenn die Verbindung AIServices nicht angezeigt wird, verwenden Sie stattdessen die Azure OpenAI-Verbindung.

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

    Screenshot der KI Services-Verbindungsdetails, der zeigt, wie die Ressource im Azure-Portal geöffnet wird

  4. Wählen Sie links im Azure-Portal Zugriffssteuerung (IAM)>+ Hinzufügen>Rollenzuweisung hinzufügen aus.

  5. Suchen Sie nach der Rolle Cognitive Services OpenAI-Benutzer, und wählen Sie sie aus. Wählen Sie Weiteraus.

    Screenshot der Seite, um die Rolle „Cognitive Services OpenAI-Benutzer“ auszuwählen

  6. Wählen Sie User, group, or service principal (Benutzer, Gruppe oder Dienstprinzipal) aus. Wählen Sie dann Mitglieder auswählen aus.

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

    Screenshot der Seite mit dem Benutzer, dem die neue Rolle zugewiesen wird

  8. Fahren Sie mit dem Assistenten fort, und wählen Sie Überprüfen + zuweisen aus, um die Rollenzuweisung hinzuzufügen.

Installieren der Azure CLI und Anmeldung

Jetzt installieren wir die Azure CLI und die Anmeldung über Ihre lokalen 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:

winget install -e --id Microsoft.AzureCLI

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 CLI mit dem Befehl az login an, und melden Sie sich mit dem 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:

py -3 -m venv .venv
.venv\scripts\activate

Wenn Sie die Python-Umgebung aktivieren, verwenden Sie beim Ausführen 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 wird
  • promptflow-tracing: schlanke Bibliothek, die für das Ausgeben von OpenTelemetry-Ablaufverfolgungen in Standards verwendet wird
  • promptflow-devkit: enthält die Prompt Flow-Tools für die Testumgebung and den Ablaufverfolgungsviewer für lokale Entwicklungsumgebungen
  • openai: Clientbibliotheken für die Verwendung von Azure OpenAI Service
  • python-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.

  1. Erstellen Sie eine .env-Datei, und fügen Sie den folgenden Code ein:

    AZURE_OPENAI_ENDPOINT=endpoint_value
    AZURE_OPENAI_DEPLOYMENT_NAME=deployment_name
    AZURE_OPENAI_API_VERSION=2024-02-15-preview
    
  2. 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.

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

    Screenshot des geöffneten KI Studio-Chatplaygrounds, in dem der Bereitstellungsname und die Schaltfläche „Code anzeigen“ hervorgehoben sind

  4. Ersetzen Sie in der Datei .env den Wert deployment_name durch den Namen der Bereitstellung aus dem vorherigen Schritt. In diesem Beispiel wird der Bereitstellungsname gpt-35-turbo-16k verwendet.

  5. Wählen Sie die Schaltfläche <> Code anzeigen aus, und kopieren Sie den Endpunktwert.

    Screenshot des Popups „Code anzeigen“ mit hervorgehobener Schaltfläche zum Kopieren des Endpunktwerts

  6. Ersetzen Sie in der Datei .env den Wert endpoint_value durch den Endpunktwert, der aus dem Dialogfeld im vorherigen Schritt kopiert wurde.

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 nicht versehentlich in Ihr Git-Repository einchecken.

Erstellen von einfachen Chatprompts und -Apps

Erstellen Sie zunächst eine Promptvorlagendatei. Hierfür verwenden wir Prompty, das von Prompt Flow unterstützte Promptvorlagenformat.

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_DEPLOYMENT_NAME"),
    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.

Screenshot der Ablaufverfolgung mit den Schritten der Programmausführung

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_DEPLOYMENT_NAME"),
    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.