Freigeben über


Verwenden der Azure OpenAI-Web-App

Zusammen mit Azure KI Foundry, Azure OpenAI Studio, APIs und SDKs können Sie die anpassbare eigenständige Web-App verwenden, um über eine grafische Benutzeroberfläche mit Azure OpenAI Service-Modellen zu interagieren. Hauptfeatures sind:

  • Konnektivität mit mehreren Datenquellen zur Unterstützung umfangreicher Abfragen und abrufgestützter Generierung, einschließlich Azure KI-Suche, Prompt Flow und mehr
  • Unterhaltungsverlauf und Sammlung von Benutzerfeedback über Cosmos DB
  • Authentifizierung mit rollenbasierter Zugriffssteuerung über Microsoft Entra ID
  • Anpassung der Benutzeroberfläche, Datenquellen und Features mithilfe von Umgebungsvariablen (ohne Code über das Azure-Portal)
  • Unterstützung für das Ändern des zugrunde liegenden Webanwendungsquellcodes als Open-Source-Repository.

Sie können die App entweder mit Azure KI Foundry oder Azure OpenAI Studio oder über eine manuelle Bereitstellung über das Azure-Portal oder die Azure Developer CLI über Ihren lokalen Computer bereitstellen (Anweisungen sind hier im Repository verfügbar). Je nach Bereitstellungskanal können Sie eine Datenquelle vorab über die Webanwendung in einen Chat laden. Dies kann jedoch nach der Bereitstellung geändert werden.

Für Azure OpenAI-Anfänger, die über die Webanwendung mit ihren Daten chatten möchten, ist Azure KI Foundry das empfohlene Medium für die anfängliche Bereitstellung und Datenquellenkonfiguration.

Screenshot: Web-App-Benutzeroberfläche.

Wichtige Hinweise

  • Diese Webanwendung und viele ihrer Features befinden sich in der Vorschau, was bedeutet, dass möglicherweise Fehler auftreten und nicht alle Features vollständig sind. Wenn Sie einen Fehler finden oder Unterstützung benötigen, melden Sie ein Problem im zugehörigen GitHub-Repository.
  • Durch die Veröffentlichung einer Webanwendung wird eine Azure App Service-Instanz in Ihrem Abonnement erstellt. Je nach dem von Ihnen ausgewählten Preisplan können Kosten anfallen. Wenn Sie mit Ihrer App fertig sind, können Sie die App und alle zugehörigen Ressourcen im Azure-Portal löschen.
  • GPT-4 Turbo mit Vision-Modellen wird derzeit nicht unterstützt.
  • Standardmäßig wird die App mit dem bereits konfigurierten Microsoft-Identitätsanbieter bereitgestellt. Der Identitätsanbieter schränkt den Zugriff auf die App auf Mitglieder Ihres Azure-Mandanten ein. So fügen Sie die Authentifizierung hinzu oder ändern sie:
    1. Wechseln Sie zum Azure-Portal, und suchen Sie nach dem App-Namen, den Sie während der Veröffentlichung angegeben haben. Wählen Sie die Web-App aus, und wählen Sie dann im linken Menü Authentifizierung aus. Wählen Sie dann Identitätsanbieter hinzufügen aus.

      Screenshot: Bereich für die Authentifizierung im Azure-Portal.

    2. Wählen Sie Microsoft als Identitätsanbieter aus. Die Standardeinstellungen auf dieser Seite beschränken die App nur auf Ihren Mandanten, sodass Sie hier nichts ändern müssen. Wählen Sie Hinzufügen.

Jetzt werden Benutzer aufgefordert, sich mit ihrem Microsoft Entra-Konto anzumelden, um auf Ihre App zuzugreifen. Sie können einen ähnlichen Prozess ausführen, um bei Bedarf einen anderen Identitätsanbieter hinzuzufügen. Die App verwendet die Anmeldeinformationen der Benutzer nur, um zu überprüfen, ob sie Mitglied Ihres Mandanten sind. Weitere Informationen zum Verwalten der Authentifizierung finden Sie in diesem Schnellstar zur Authentifizierung für Web-Apps in Azure App Service.

Anpassen der Anwendung mithilfe von Umgebungsvariablen

Sie können die Front-End- und Back-End-Logik der App anpassen. Die App stellt mehrere Umgebungsvariablen für allgemeine Anpassungsszenarien bereit, z. B. das Ändern des Symbols in der App.

Diese Umgebungsvariablen können über das Azure-Portal nach der Bereitstellung der Webanwendung geändert werden.

  1. Suchen Sie im Azure-Portal nach der Seite „App Services“, und wählen Sie diese aus.
  2. Wählen Sie die Web-App aus, die Sie gerade bereitgestellt haben.
  3. Wählen Sie im linken Menü der App „Einstellungen > Umgebungsvariablen“ aus.
  4. Wenn Sie eine vorhandene Umgebungsvariable ändern möchten, klicken Sie auf deren Namen.
  5. Wenn Sie eine einzelne neue Umgebungsvariable hinzufügen möchten, klicken Sie in der oberen Menüleiste des Bereichs auf „Hinzufügen“.
  6. Um den JSON-basierten Editor zum Verwalten von Umgebungsvariablen zu verwenden, klicken Sie auf „Erweiterte Bearbeitung“.

Für das Anpassen der App wird Folgendes empfohlen:

  • Kommunizieren Sie klar und deutlich, wie sich jede Einstellung, die Sie implementieren, auf die Benutzererfahrung auswirkt.

  • Aktualisieren Sie die Einstellungen für jede bereitgestellte App so, dass neue API-Schlüssel verwendet werden, nachdem Sie die Schlüssel für Ihre Azure OpenAI- oder Azure KI-Suche-Ressource ausgetauscht haben.

Beispielquellcode für die Web-App ist auf GitHub verfügbar. Quellcode wird im „Istzustand“ und nur als Beispiel bereitgestellt. Kunden sind für alle Anpassungen und Implementierungen ihrer Web-Apps verantwortlich.

Ändern der Benutzeroberfläche der Anwendung

Folgende Umgebungsvariablen sind für die Anpassung der Benutzeroberfläche relevant:

  • UI_CHAT_DESCRIPTION: Dies ist der kleinere Textabsatz, der beim Laden unterhalb von UI_CHAT_TITLE in der Mitte der Seite angezeigt wird.
    • Datentyp: Text
  • UI_CHAT_LOGO: Dies ist das große Bild, das beim Laden in der Mitte der Seite angezeigt wird.
    • Datentyp: URL zum Bild
  • UI_CHAT_TITLE: Dies ist der große Text, der beim Laden in der Mitte der Seite angezeigt wird.
    • Datentyp: Text
  • UI_FAVICON: Dies ist das Favicon, das im Browserfenster bzw. auf der Registerkarte angezeigt wird.
    • Datentyp: URL zum Bild
  • UI_LOGO: Dieses Logo wird oben links auf der Seite links neben dem Titel angezeigt.
    • Datentyp: URL zum Bild
  • UI_TITLE: Dies ist der Titel, der im Browserfenster bzw. auf der Registerkarte angezeigt wird. Er wird auch oben links auf der Seite neben dem Logo angezeigt.
    • Datentyp: Text
  • UI_SHOW_SHARE_BUTTON: Diese Schaltfläche wird oben rechts auf der Seite angezeigt und ermöglicht es Benutzern, eine URL zur Verknüpfung mit der Web-App zu teilen.
    • Datentyp: boolescher Wert, erfordert die Eingabe von „True“ oder „False“. Standardwert ist „True“, wenn der Wert fehlt oder nicht angegeben wird.
  • UI_SHOW_CHAT_HISTORY_BUTTON: Dies wird oben rechts auf der Seite links neben der Schaltfläche UI_SHOW_SHARE_BUTTON angezeigt.
    • Datentyp: boolescher Wert, erfordert die Eingabe von „True“ oder „False“. Standardwert ist „True“, wenn der Wert fehlt oder nicht angegeben wird.

Um die Benutzeroberfläche der Anwendung zu ändern, befolgen Sie die Anweisungen im vorherigen Schritt, um die Seite mit Umgebungsvariablen für Ihre Web-App zu öffnen. Verwenden Sie dann „Erweiterte Bearbeitung“, um den JSON-basierten Editor zu öffnen. Fügen Sie oben im JSON-Code (nach dem Zeichen [) den folgenden Codeblock ein, und passen Sie die Werte entsprechend an:

  {
    "name": "UI_CHAT_DESCRIPTION",
    "value": "This is an example of a UI Chat Description. Chatbots can make mistakes. Check important info and sensitive info.",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_CHAT_TITLE",
    "value": "This is an example of a UI Chat Title. Start chatting",
    "slotSetting": false
  },
  {
    "name": "UI_FAVICON",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_LOGO",
    "value": "https://learn-bot.azurewebsites.net/assets/Contoso-ff70ad88.svg",
    "slotSetting": false
  },
  {
    "name": "UI_TITLE",
    "value": "This is an example of a UI Title",
    "slotSetting": false
  },

Aktivieren des Chatverlaufs mithilfe von Cosmos DB

Sie können den Chatverlauf für Benutzer der Web-App aktivieren. Wenn Sie die Funktion aktivieren, haben Benutzer Zugriff auf ihre individuellen früheren Abfragen und Antworten.

Um den Chatverlauf zu aktivieren, stellen Sie Ihr Modell mithilfe von Azure OpenAI Studio oder Azure KI Foundry als Web-App bereit bzw. erneut bereit. Wählen Sie dann Chatverlauf in der Web-App aktivieren aus.

Screenshot des Kontrollkästchens zum Aktivieren des Chatverlaufs in Azure OpenAI Studio oder Azure KI Foundry.

Wichtig

Wenn Sie den Chatverlauf aktivieren, wird eine Azure Cosmos DB-Instanz in Ihrer Ressourcengruppe erstellt, und es fallen zusätzliche Gebühren für den Speicher an, den Sie über die kostenlosen Kontingente hinaus nutzen.

Nachdem Sie den Chatverlauf aktiviert haben, können Ihre Benutzer ihn in der oberen rechten Ecke der App ein- oder ausblenden. Wenn Benutzer den Chatverlauf einblenden, können sie Unterhaltungen umbenennen oder löschen. Wie im vorherigen Abschnitt angegeben, können Sie mithilfe der Umgebungsvariablen UI_SHOW_CHAT_HISTORY_BUTTON festlegen, ob Benutzer und Benutzerinnen auf diese Funktion zugreifen können. Da die Benutzer bei der App angemeldet sind, werden Unterhaltungen automatisch von der neuesten zur ältesten sortiert. Unterhaltungen werden nach der ersten Abfrage in der Unterhaltung benannt.

Hinweis

In beliebten Azure-Regionen wie „USA, Osten“ können Zeiträume mit hoher Nachfrage auftreten, in denen es möglicherweise nicht möglich ist, eine neue Instanz von Cosmos DB bereitzustellen. Wählen Sie in diesem Fall die Bereitstellung für eine alternative Region wie „USA, Osten 2“ aus, oder wiederholen Sie die Bereitstellung, bis sie erfolgreich ist. Sollte die Bereitstellung von Cosmos DB fehlschlagen, steht Ihre App unter der angegebenen URL zur Verfügung, doch der Chatverlauf ist nicht verfügbar. Durch Aktivieren des Unterhaltungsverlaufs wird auch die Schaltfläche „Aufgezeichnete Unterhaltungen anzeigen“ oben rechts aktiviert.

Wenn die Bereitstellung mit der ausgewählten Option für den Chatverlauf erfolgt, werden automatisch die folgenden Umgebungsvariablen aufgefüllt, sodass Sie diese nur ändern müssen, wenn Sie Cosmos DB-Instanzen wechseln möchten. Sie lauten wie folgt:

  • AZURE_COSMOSDB_ACCOUNT: Dies ist der Name des Cosmos DB-Kontos, das zusammen mit Ihrer Web-App bereitgestellt wird.
    • Datentyp: Text
  • AZURE_COSMOSDB_ACCOUNT_KEY: Dies ist eine alternative Umgebungsvariable, die nur verwendet wird, wenn Berechtigungen nicht über Microsoft Entra ID erteilt werden und stattdessen die schlüsselbasierte Authentifizierung verwendet wird.
    • Datentyp: Text Ist normalerweise nicht vorhanden oder aufgefüllt.
  • AZURE_COSMOSDB_DATABASE: Dies ist der Name des Datenbankobjekts innerhalb von Cosmos DB, das zusammen mit Ihrer Web-App bereitgestellt wird.
    • Datentyp: Text, sollte db_conversation_history sein
  • AZURE_COSMOSDB_CONTAINER: Dies ist der Name des Datenbankcontainerobjekts innerhalb von Cosmos DB, das zusammen mit Ihrer Web-App bereitgestellt wird.
    • Datentyp: Text, sollte conversations sein
  • AZURE_COSMOSDB_ACCOUNT: Dies ist der Name des Cosmos DB-Kontos, das zusammen mit Ihrer Web-App bereitgestellt wird.
    • Datentyp: Text

Screenshot: Chatverlauf in der Web-App.

Sammeln von Benutzerfeedback

Um Benutzerfeedback zu sammeln, können Sie eine Reihe von „Daumen-hoch“- und „Daumen-runter“-Symbolen aktivieren, die in jeder Antwort des Chatbots angezeigt werden. Auf diese Weise können Benutzer und Benutzerinnen die Qualität einer Antwort bewerten und mithilfe des modalen Fensters „Negatives Feedback“ angeben, wo Fehler auftreten.

Um dieses Feature zu aktivieren, legen Sie die folgende Umgebungsvariable auf „True“ fest:

  • AZURE_COSMOSDB_ENABLE_FEEDBACK: Dies ist der Name des Cosmos DB-Kontos, das zusammen mit Ihrer Web-App bereitgestellt wird.
    • Datentyp: Boolescher Wert, erfordert die Eingabe von „True“ oder „False“

Dies kann mit den Optionen „Erweiterte Bearbeitung“ oder „Einfache Bearbeitung“ erreicht werden, wie zuvor erläutert. Der JSON-Code, der im JSON-Editor für erweiterte Bearbeitung eingefügt werden soll:

  {
    "name": "AZURE_COSMOSDB_ENABLE_FEEDBACK",
    "value": "True",
    "slotSetting": false
  },

Herstellen einer Verbindung mit Azure KI-Suche und hochgeladenen Dateien als Datenquelle

Azure KI Foundry verwenden

Beenden Sie dieses Tutorial zur Integration von Azure KI-Suche in Azure KI Foundry, und stellen Sie Ihre Anwendung erneut bereit.

Verwendung von Azure OpenAI Studio

Befolgen Sie dieses Tutorial zur Integration von Azure KI-Suche in OpenAI Studio, und stellen Sie Ihre Anwendung erneut bereit.

Verwenden von Umgebungsvariablen

Um eine Verbindung mit Azure KI-Suche herzustellen, ohne Ihre App erneut bereitzustellen, können Sie die folgenden obligatorischen Umgebungsvariablen mithilfe einer der zuvor beschriebenen Bearbeitungsoptionen ändern.

  • DATASOURCE_TYPE: Dies bestimmt, welche Datenquelle beim Beantworten der Benutzerabfragen verwendet werden soll.
    • Datentyp: Text Sollte auf AzureCognitiveSearch (früherer Name von Azure KI-Suche) festgelegt werden
  • AZURE_SEARCH_SERVICE: Dies ist der Name Ihrer Instanz von Azure KI-Suche.
    • Datentyp: Text
  • AZURE_SEARCH_INDEX: Dies ist der Name des Indexnamens Ihrer Instanz von Azure KI-Suche.
    • Datentyp: Text
  • AZURE_SEARCH_KEY: Dies ist der Authentifizierungsschlüssel Ihrer Instanz von Azure KI-Suche. Optional bei Verwendung von Microsoft Entra ID zur Authentifizierung.
    • Datentyp: Text

Weitere Anpassungsszenarien mit Umgebungsvariablen

  • AZURE_SEARCH_USE_SEMANTIC_SEARCH: Gibt an, ob die semantische Suche in Azure KI-Suche verwendet werden soll.
    • Datentyp: boolescher Wert, sollte auf False festgelegt werden, wenn die semantische Suche nicht verwendet wird.
  • AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG: Gibt den Namen der semantischen Suchkonfiguration an, die verwendet werden soll, wenn die semantische Suche aktiviert ist.
    • Datentyp: Text, Standardwert ist azureml-default.
  • AZURE_SEARCH_INDEX_TOP_K: Definiert die Anzahl der wichtigsten Dokumente, die aus Azure KI-Suche abgerufen werden sollen.
    • Datentyp: ganze Zahl, sollte auf 5 festgelegt werden.
  • AZURE_SEARCH_ENABLE_IN_DOMAIN: Beschränkt Antworten auf Abfragen, die sich nur auf Ihre Daten beziehen.
    • Datentyp: boolescher Wert, sollte auf True festgelegt werden.
  • AZURE_SEARCH_CONTENT_COLUMNS: Gibt die Liste der Felder in Ihrem Azure KI-Suche-Index an, die den Textinhalt Ihrer Dokumente enthalten und beim Erstellen einer Bot-Antwort verwendet werden.
    • Datentyp: Text, wird standardmäßig auf content festgelegt, wenn die Bereitstellung in Azure KI Foundry oder Azure OpenAI Studio erfolgt,
  • AZURE_SEARCH_FILENAME_COLUMN: Gibt das Feld aus Ihrem Azure KI-Suche-Index an, das einen eindeutigen Bezeichner der Quelldaten bereitstellt, die auf der Benutzeroberfläche angezeigt werden sollen.
    • Datentyp: Text, wird standardmäßig auf filepath festgelegt, wenn die Bereitstellung in Azure KI Foundry oder Azure OpenAI Studio erfolgt,
  • AZURE_SEARCH_TITLE_COLUMN: Gibt das Feld aus Ihrem Azure KI-Suche-Index an, das einen relevanten Titel oder eine Kopfzeile für Ihre Dateninhalte bereitstellt, die auf der Benutzeroberfläche angezeigt werden sollen.
    • Datentyp: Text, wird standardmäßig auf title festgelegt, wenn die Bereitstellung in Azure KI Foundry oder Azure OpenAI Studio erfolgt,
  • AZURE_SEARCH_URL_COLUMN: Gibt das Feld aus Ihrem Azure KI-Suche-Index an, das eine URL für das Dokument enthält.
    • Datentyp: Text, wird standardmäßig auf url festgelegt, wenn die Bereitstellung in Azure KI Foundry oder Azure OpenAI Studio erfolgt,
  • AZURE_SEARCH_VECTOR_COLUMNS: Gibt die Liste der Felder in Ihrem Azure KI-Suche-Index an, die Vektoreinbettungen Ihrer Dokumente enthalten und beim Erstellen einer Bot-Antwort verwendet werden.
    • Datentyp: Text, wird standardmäßig auf contentVector festgelegt, wenn die Bereitstellung in Azure KI Foundry oder Azure OpenAI Studio erfolgt,
  • AZURE_SEARCH_QUERY_TYPE: Gibt den zu verwendenden Abfragetyp an: simple, semantic, vector, vectorSimpleHybrid oder vectorSemanticHybrid. Diese Einstellung hat Vorrang vor AZURE_SEARCH_USE_SEMANTIC_SEARCH.
    • Datentyp: Text, für Tests wird vectorSemanticHybrid empfohlen.
  • AZURE_SEARCH_PERMITTED_GROUPS_COLUMN: Gibt das Feld aus Ihrem Azure KI-Suche-Index an, das Microsoft Entra-Gruppen-IDs enthält und die Zugriffssteuerung auf Dokumentebene bestimmt.
    • Datentyp: Text
  • AZURE_SEARCH_STRICTNESS: Gibt die Genauigkeitsstufe für das Modell an, die die Antworten auf Ihre Daten begrenzt.
    • Datentyp: Ganze Zahl, sollte zwischen 1 und 5 liegen, wobei 3 empfohlen wird.
  • AZURE_OPENAI_EMBEDDING_NAME: Gibt den Namen der eingebetteten Modellimplementierung an, wenn die Vektorsuche verwendet wird.
    • Datentyp: Text

Der JSON-Code, der im JSON-Editor für erweiterte Bearbeitung eingefügt werden soll:

{
    "name": "AZURE_SEARCH_CONTENT_COLUMNS",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_ENABLE_IN_DOMAIN",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_FILENAME_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_INDEX",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_KEY",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_PERMITTED_GROUPS_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_QUERY_TYPE",
    "value": "vectorSemanticHybrid",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG",
    "value": "azureml-default",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_SERVICE",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_STRICTNESS",
    "value": "3",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TITLE_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_TOP_K",
    "value": "5",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_URL_COLUMN",
    "value": "",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_USE_SEMANTIC_SEARCH",
    "value": "true",
    "slotSetting": false
  },
  {
    "name": "AZURE_SEARCH_VECTOR_COLUMNS",
    "value": "contentVector",
    "slotSetting": false
  },

Herstellen einer Verbindung mit Prompt Flow als Datenquelle

Mit Prompt flows können Sie hochgradig anpassbare RAG- und Verarbeitungslogik für Benutzerabfragen definieren.

Erstellen und Bereitstellen ihres Prompt Flow im Azure KI Foundry-Portal

Beenden Sie dieses Tutorial, um einen Rückschlussendpunkt für Ihren Prompt Flow im Azure KI Foundry-Portal zu erstellen, zu testen und bereitzustellen.

Aktivieren von zugrunde liegenden Zitaten aus dem Prompt flow

Wenn Sie den Prompt flow so konfigurieren, dass Zitate angezeigt werden, wenn diese Webanwendung integriert ist, müssen zwei Schlüsselausgaben zurückgegeben werden: eine namens documents (Ihre Zitate) und eine namens reply (Ihre Antwort in natürlicher Sprache).

  1. documents ist ein JSON-Objekt, das die folgenden Elemente enthalten sollte. citations ist eine Liste, die mehrere Elemente, die demselben Schema folgen, enthalten kann. Das documents-Objekt sollte basierend auf dem ausgewählten RAG-Muster generiert und aufgefüllt werden.
{
    "citations": [
        {
                "content": "string",
                "id": 12345,
                "title": "string",
                "filepath": "string",
                "url": "string",
                "metadata": "string",
                "chunk_id": None,
                "reindex_id": None,
                "part_index": None
        }
    ],
    "intent": "Your_string_here"
}
  1. reply besteht aus einer zurückgegebenen Zeichenfolge, die die endgültige Antwort in natürlicher Sprache für eine bestimmte Benutzerabfrage darstellt. Die reply muss Verweise auf jedes der Dokumente (Quellen) im folgenden Format enthalten: [doc1], [doc2] usw. Die Webanwendung analysiert reply und verarbeitet die Verweise, wobei alle Instanzen von [doc1] durch kleine hochgestellte numerische Indikatoren ersetzt werden, die direkt mit den sortierten documents verknüpft sind, die zurückgegeben werden. Daher müssen Sie Ihr LLM, das die endgültige Ausgabe in natürlicher Sprache generiert, auffordern, diese Verweise einzubeziehen, die auch in Ihrem LLM-Aufruf übergeben werden sollten, um sicherzustellen, dass sie ordnungsgemäß ausgerichtet sind. Zum Beispiel:
system:
You are a helpful chat assistant that answers a user's question based on the information retrieved from a data source. 

YOU MUST ALWAYS USE CITATIONS FOR ALL FACTUAL RESPONSES. YOU MUST INCLUDE CITATIONS IN YOUR ANSWER IN THE FORMAT [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.

Provide sort and concise answers with details directly related to the query. 

## Conversation history for context
{% for item in chat_history %}
user:
{{item.inputs.query}}

assistant:
{{item.outputs.reply}}
{% endfor %}

## Current question
user:
### HERE ARE SOME CITED SOURCE INFORMATION FROM A MOCKED API TO ASSIST WITH ANSWERING THE QUESTION BELOW. ANSWER ONLY BASED ON THE TRUTHS PRESENTED HERE.
{{your_input_name_for_documents}}
FOR EACH OF THE CITATIONS ABOVE, YOU MUST INCLUDE IN YOUR ANSWER [doc1], [doc2], ... AND SO FORTH WHEN YOU ARE USING INFORMATION RELATING TO SAID SOURCE. THIS MUST BE RETURNED IN YOUR ANSWER.
### HERE IS THE QUESTION TO ANSWER.
{{question}}
  

Konfigurieren von Umgebungsvariablen zur Integration von Prompt flow

Folgende Umgebungsvariablen sind zu ändern:

  • AZURE_OPENAI_STREAM: Dies bestimmt, ob die Antwort in einem Streamingformat (inkrementelles Laden) geladen wird. Dies wird für Prompt flow nicht unterstützt und muss daher auf False festgelegt werden, damit dieses Feature verwendet werden kann.
    • Datentyp: boolescher Wert, der auf True festgelegt werden sollte, wenn Prompt flow nicht verwendet wird, und auf False, wenn Prompt flow verwendet wird.
  • USE_PROMPTFLOW: Gibt an, ob ein vorhandener bereitgestellter Prompt flow verwendet werden soll. Bei Festlegung auf True, müssen PROMPTFLOW_ENDPOINT und PROMPTFLOW_API_KEY festgelegt werden.
    • Datentyp: boolescher Wert, der auf festgelegt False werden sollte, wenn prompt flow nicht verwendet wird.
  • PROMPTFLOW_ENDPOINT: Gibt die URL des bereitgestellten Prompt flow-Endpunkts an.
    • Datentyp: Text, z. B. https://pf-deployment-name.region.inference.ml.azure.com/score
  • PROMPTFLOW_API_KEY: Der Authentifizierungsschlüssel für den bereitgestellten Prompt flow-Endpunkt. Hinweis: Nur die schlüsselbasierte Authentifizierung wird unterstützt.
    • Datentyp: Text
  • PROMPTFLOW_RESPONSE_TIMEOUT: Definiert den Timeoutwert in Sekunden, innerhalb dessen der Prompt-Flow-Endpunkt reagieren muss.
    • Datentyp: ganze Zahl, sollte auf 120 festgelegt werden.
  • PROMPTFLOW_REQUEST_FIELD_NAME: Der Standardfeldname zum Erstellen der Prompt flow-Anforderung. Hinweis: chat_history wird automatisch auf der Grundlage der Interaktion erstellt. Wenn Ihre API andere Pflichtfelder erwartet, müssen Sie die Anforderungsparameter unter der Funktion promptflow_request ändern.
    • Datentyp: Text, sollte auf query festgelegt werden.
  • PROMPTFLOW_RESPONSE_FIELD_NAME: Der Standardfeldname zum Verarbeiten der Antwort aus der Prompt flow-Anforderung.
    • Datentyp: Text, sollte auf reply festgelegt werden.
  • PROMPTFLOW_CITATIONS_FIELD_NAME: Der Standardfeldname zum Verarbeiten der Ausgabe von Zitaten aus der Prompt flow-Anforderung.
    • Datentyp: Text, sollte auf documents festgelegt werden.

Herstellen einer Verbindung mit anderen Datenquellen

Andere Datenquellen werden unterstützt, darunter:

  • Azure Cosmos DB
  • Elasticsearch
  • Azure SQL Server
  • Pinecone
  • Azure Machine Learning-Index

Weitere Anleitungen zum Aktivieren dieser Datenquellen finden Sie im GitHub-Repository.

Aktualisieren der Web-App zum Einbeziehen der neuesten Änderungen

Hinweis

Ab dem 1. Februar 2024 muss für die Web-App der App-Startbefehl auf python3 -m gunicorn app:app festgelegt werden. Beim Aktualisieren einer App, die vor dem 1. Februar 2024 veröffentlicht wurde, müssen Sie den Startbefehl manuell auf der Seite App Service-Konfiguration hinzufügen.

Wir empfehlen, regelmäßig Änderungen aus der main-Verzweigung für den Quellcode der Web-App abzurufen, um sicherzustellen, dass Sie über die neuesten Fehlerbehebungen, API-Versionen und Verbesserungen verfügen. Darüber hinaus muss die Web-App jedes Mal synchronisiert werden, wenn die verwendete API-Version eingestellt wird. Sie können wahlweise die Schaltfläche Beobachten oder Als Favorit markieren im GitHub-Repository der Web-App auswählen, um über Änderungen und Aktualisierungen des Quellcodes benachrichtigt zu werden.

Wenn Sie die Web-App nicht angepasst haben, können Sie diese Schritte verwenden, um sie zu synchronisieren:

  1. Navigieren Sie im Azure-Portal zu Ihrer Web-App.

  2. Wählen Sie im linken Menü unter Bereitstellung die Option Bereitstellungscenter aus.

  3. Wählen Sie oben im Bereich die Option Synchronisieren aus, und vergewissern Sie sich, dass die App erneut bereitgestellt wird.

    Screenshot: Schaltfläche für die Web-App-Synchronisierung im Azure-Portal.

Wenn Sie den Quellcode der App angepasst oder geändert haben, müssen Sie den Quellcode Ihrer App manuell aktualisieren und die App erneut bereitstellen:

  • Wenn Ihre App auf GitHub gehostet wird, übertragen Sie Ihre Codeänderungen an Ihr Repository, und führen Sie dann die vorherigen Synchronisierungsschritte aus.
  • Wenn Sie die App manuell neu bereitstellen (z. B. mithilfe der Azure CLI), führen Sie die Schritte für Ihre Bereitstellungsstrategie aus.

Löschen Ihrer Cosmos DB-Instanz

Wenn Sie Ihre Web-App löschen, wird Ihre Cosmos DB-Instanz nicht automatisch gelöscht. Um Ihre Cosmos DB-Instanz zusammen mit allen gespeicherten Chats zu löschen, müssen Sie zur zugeordneten Ressource im Azure-Portal navigieren und sie löschen. Wenn Sie die Cosmos DB-Ressource löschen, aber die Option „Chatverlauf“ bei nachfolgenden Updates aus dem Azure OpenAI Studio ausgewählt lassen, benachrichtigt die Anwendung den Benutzer über einen Verbindungsfehler. Der Benutzer kann die Web-App jedoch weiterhin ohne Zugriff auf den Chatverlauf verwenden.

Aktivieren der Microsoft Entra ID-Authentifizierung zwischen Diensten

Führen Sie die folgenden Schritte aus, um die Microsoft Entra-ID für die dienstinterne Authentifizierung für Ihre Web-App zu aktivieren.

Aktivieren der verwalteten Identität für Ihre Azure OpenAI-Ressource und Azure App Service

Sie können verwaltete Identität für die Azure OpenAI-Ressource und den Azure App Service aktivieren, indem Sie zu „Identität“ navigieren und die vom System zugewiesene verwaltete Identität im Azure-Portal für jede Ressource aktivieren.

Screenshot der Anwendungsidentitätskonfiguration im Azure-Portal.

Hinweis

Wenn Sie ein Einbettungsmodell verwenden, das in derselben Ressource bereitgestellt wird, die für die Ableitung verwendet wird, müssen Sie nur verwaltete Identität in einer Azure OpenAI-Ressource aktivieren. Wenn Sie ein in eine andere Ressource bereitgestelltes Einbettungsmodell verwenden, das für die Ableitung verwendet wird, müssen Sie auch die verwaltete Identität in der Azure OpenAI-Ressource aktivieren, die zum Bereitstellen Ihres Einbettungsmodells verwendet wird.

Aktivieren der rollenbasierten Zugriffssteuerung (RBAC) für Ihre Azure Search-Ressource (optional)

Wenn Sie Ihre Daten mit Azure Search verwenden, sollten Sie diesen Schritt ausführen.

Damit Ihre Azure OpenAI-Ressource auf Ihre Azure Search-Ressource zugreifen kann, müssen Sie die rollenbasierte Zugriffssteuerung für Ihre Azure Search-Ressource aktivieren. Erfahren Sie mehr über Aktivieren von RBAC-Rollen für Ihre Ressourcen.

Zuweisen von RBAC-Rollen zur Aktivierung der Intra-Service-Kommunikation

In der folgenden Tabelle sind die RBAC-Rollenzuweisungen zusammengefasst, die für alle Azure-Ressourcen erforderlich sind, die Ihrer Anwendung zugeordnet sind.

Role Zugewiesene Person Resource
Search Index Data Reader Azure OpenAI (Interferenz) Azure KI Search
Search Service Contributor Azure OpenAI (Interferenz) Azure KI Search
Cognitive Services OpenAI User Web-App Azure OpenAI (Interferenz)
Cognitive Services OpenAI User Azure OpenAI (Interferenz) Azure OpenAI (Einbettungen)

Um diese Rollen zuzuweisen, befolgen Sie diese Anweisungen, um die erforderlichen Rollenzuweisungen zu erstellen.

Änderungen der App-Einstellungen

Navigieren Sie in den Webapp-Anwendungseinstellungen zu „Umgebungsvariablen“, und nehmen Sie die folgenden Änderungen vor:

  • Entfernen Sie die Umgebungsvariable AZURE_OPENAI_KEY, da sie nicht mehr benötigt wird.
  • Wenn Sie „On Your Data“ mit Azure Search und die Microsoft Entra ID-Authentifizierung zwischen Azure OpenAI und Azure Search verwenden, sollten Sie auch die AZURE_SEARCH_KEY Umgebungsvariablen für die Datenquellenzugriffsschlüssel löschen.

Wenn Sie ein Einbettungsmodell verwenden, das in derselben Ressource wie Ihr Modell bereitgestellt wurde, das für die Rückleitung verwendet wird, sind keine weiteren Einstellungen erforderlich.

Wenn Sie jedoch ein in eine andere Ressource bereitgestelltes Einbettungsmodell verwenden, nehmen Sie die folgenden zusätzlichen Änderungen an den Umgebungsvariablen Ihrer App vor:

  • Legen Sie AZURE_OPENAI_EMBEDDING_ENDPOINT Variable auf den vollständigen API-Pfad der Einbettungs-API für die Ressource fest, die Sie für Einbettungen verwenden, z. B. https://<your Azure OpenAI Service resource name>.openai.azure.com/openai/deployments/<your embedding deployment name>/embeddings
  • Löschen Sie die AZURE_OPENAI_EMBEDDING_KEY Variable, um die Microsoft Entra ID-Authentifizierung zu verwenden.

Nachdem alle Änderungen der Umgebungsvariable abgeschlossen wurden, starten Sie die Webapp neu, um mit der Verwendung der Microsoft Entra ID-Authentifizierung zwischen Diensten in der Webapp zu beginnen. Es dauert ein paar Minuten nach dem Neustart, bis Änderungen an den Einstellungen wirksam werden.