Erste Schritte mit dem .NET-Unternehmenschatbeispiel mit RAG

In diesem Artikel erfahren Sie, wie Sie das Beispiel für die Unternehmens-Chat-App für .NET bereitstellen und ausführen. In diesem Beispiel wird eine Chat-App mit C#, Azure OpenAI Service und Retrieval Augmented Generation (RAG) in Azure KI-Suche implementiert, um Antworten zu Mitarbeiterleistungen in einem fiktiven Unternehmen zu erhalten. Die Chat-App für Mitarbeitervergünstigungen wird mit PDF-Dateien wie einem Mitarbeiterhandbuch, einem Leistungsdokument und einer Liste von Unternehmensrollen und Erwartungen versehen.

Indem Sie die Anweisungen in diesem Artikel befolgen, werden Sie:

  • Eine Chat-App in Azure bereitstellen.
  • Antworten auf zu den Mitarbeitervergünstigungen erhalten.
  • Einstellungen ändern, um das Verhalten auf Antworten zu ändern.

Nachdem Sie dieses Verfahren abgeschlossen haben, können Sie mit dem Ändern des neuen Projekts mit Ihrem benutzerdefinierten Code beginnen.

Dieser Artikel ist Teil einer Sammlung von Artikeln, die Ihnen zeigen, wie Sie eine Chat-App mit Azure OpenAI Service und Azure KI-Suche erstellen.

Weitere Artikel in der Sammlung sind:

Übersicht über die Architektur

In dieser Beispielanwendung stellt ein fiktives Unternehmen namens Contoso Electronics den Mitarbeitern eine Chat-App zur Verfügung, um Fragen zu den Vorteilen, internen Richtlinien sowie Stellenbeschreibungen und Rollen zu stellen.

Die Architektur der Chat-App wird in der folgenden Abbildung gezeigt:

Abbildung der Architektur der Client-zu-Back-End-App

  • Benutzeroberfläche: Die Chatschnittstelle der App ist eine Blazor WebAssembly-Anwendung. Diese Schnittstelle akzeptiert Benutzerabfragen, leitet Anforderung an das Anwendungs-Back-End weiter und zeigt generierte Antworten an.
  • Back-End: Das Anwendungs-Back-End ist eine minimale ASP.NET Core-API. Das Back-End hostet die statische Blazor-Webanwendung und koordiniert die Interaktionen zwischen den verschiedenen Diensten. Zu den in dieser Anwendung verwendeten Diensten gehören:
    • Azure Cognitive Search indiziert Dokumente aus den Daten, die in einem Azure Storage-Konto gespeichert sind. Dadurch können die Dokumente mithilfe von Vektorsuchfunktionen durchsucht werden.
    • Azure OpenAI Service stellt die großen Sprachmodelle (LLM) bereit, um Antworten zu generieren. Der semantische Kernel wird zusammen mit Azure OpenAI Service verwendet, um die komplexeren KI-Workflows zu koordinieren.

Kosten

Die meisten Ressourcen in dieser Architektur verwenden einen Basic- oder Verbrauchspreistarif. Die Verbrauchspreise basieren auf der Nutzung, was bedeutet, dass Sie nur für ihre Nutzung bezahlen. Um diesen Artikel abzuschließen, gibt es eine Gebühr, aber sie ist gering. Wenn Sie mit dem Artikel fertig sind, können Sie die Ressourcen löschen, um das Entstehen von Gebühren zu beenden.

Weitere Informationen finden Sie unter Azure Beispiele: Kosten im Beispiel-Repository.

Voraussetzungen

Eine Entwicklungscontainerumgebung ist mit allen Abhängigkeiten verfügbar, die zum Abschließen dieses Artikels erforderlich sind. Sie können den Entwicklungscontainer in GitHub Codespaces (in einem Browser) oder lokal mit Visual Studio Code ausführen.

Um diesen Artikel zu befolgen, benötigen Sie die folgenden Voraussetzungen:

  1. Azure-Abonnement: Kostenloses Azure-Konto
  2. Azure-Kontoberechtigungen: Ihr Azure-Konto muss über Microsoft.Authorization/roleAssignments/Schreibberechtigungen verfügen, z. B. Benutzerzugriffsadministrator oder Besitzer.
  3. Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt. Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Problem in diesem Repository, um uns bei einem Problem zu kontaktieren.
  4. GitHub -Konto

Öffnen Sie die Entwicklungsumgebung

Beginnen Sie jetzt mit einer Entwicklungsumgebung, in der alle Abhängigkeiten installiert sind, um diesen Artikel abzuschließen.

GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für Web als Benutzeroberfläche aus. Verwenden Sie für die einfachste Entwicklungsumgebung GitHub Codespaces, damit Sie die richtigen Entwicklertools und Abhängigkeiten vorinstalliert haben, um diesen Artikel abzuschließen.

Wichtig

Alle GitHub-Konten können Codespaces für bis zu 60 Stunden pro Monat mit zwei Kerninstanzen kostenlos verwenden. Weitere Informationen finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.

  1. Starten Sie den Prozess, um einen neuen GitHub Codespace im Branch main des GitHub-Repositorys Azure-Samples/azure-search-openai-demo-csharp zu erstellen.

  2. Klicken Sie mit der rechten Maustaste auf die folgende Schaltfläche, und wählen Sie den Link in neuen Fenstern öffnen aus, damit sowohl die Entwicklungsumgebung als auch die Dokumentation gleichzeitig verfügbar sind.

  3. Überprüfen Sie auf der Seite Codespace erstellen die Codespace-Konfigurationseinstellungen und wählen Sie dann Neuen Codespace erstellen aus:

    Screenshot: Bestätigungsbildschirm vor dem Erstellen eines neuen Codespace.

  4. Warten Sie den Start des Codespaces ab. Dieser Startvorgang kann einige Minuten dauern.

  5. Melden Sie sich am unteren Bildschirmrand am Terminal mit der Azure Developer CLI bei Azure an.

    azd auth login
    
  6. Kopieren Sie den Code vom Terminal und fügen Sie ihn dann in einen Browser ein. Befolgen Sie die Anweisungen zum Authentifizieren mit Ihrem Azure-Konto.

  7. Die verbleibenden Aufgaben in diesem Artikel finden im Kontext dieses Entwicklungscontainers statt.

Bereitstellen und Ausführen

Das Beispiel-Repository enthält alle Code- und Konfigurationsdateien, die Sie zum Bereitstellen einer Chat-App in Azure benötigen. Die folgenden Schritte führen Sie durch den Prozess der Bereitstellung des Beispiels in Azure.

Bereitstellen einer Chat-App in Azure

Wichtig

In diesem Abschnitt erstellte Azure-Ressourcen verursachen sofortige Kosten, in erster Linie durch die Azure KI-Suche-Ressource. Diese Ressourcen können Kosten verursachen, selbst wenn Sie den Befehl unterbrechen, bevor er vollständig ausgeführt wird.

  1. Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen bereitzustellen und den Quellcode bereitzustellen:

    azd up
    
  2. Wenn Sie aufgefordert werden, einen Umgebungsnamen einzugeben, halten Sie ihn kurz und klein geschrieben. Beispiel: myenv. Wird als Teil des Ressourcengruppennamens verwendet.

  3. Wenn Sie dazu aufgefordert werden, wählen Sie ein Abonnement aus, in dem die Ressourcen erstellt werden sollen.

  4. Wenn Sie aufgefordert werden, einen Ort zum ersten Mal auszuwählen, wählen Sie einen Ort in Ihrer Nähe aus. Dieser Speicherort wird für die meisten Ressourcen einschließlich Hosting verwendet.

  5. Wenn Sie zur Eingabe eines Speicherorts für das OpenAI-Modell aufgefordert werden, wählen Sie einen Speicherort aus, der sich in Ihrer Nähe befindet. Wenn derselbe Speicherort wie Ihr erster Speicherort verfügbar ist, wählen Sie diesen Speicherort aus.

  6. Warten Sie, bis die App bereitgestellt wird. Es kann bis zu 20 Minuten dauern, bis die Bereitstellung abgeschlossen ist.

  7. Nachdem die Anwendung erfolgreich bereitgestellt wurde, wird eine URL im Terminal angezeigt.

  8. Wählen Sie diese URL aus, die als Deploying service web beschriftet ist, um die Chatanwendung in einem Browser zu öffnen.

    Screenshot der Chat-App im Browser mit mehreren Vorschlägen für Chateingaben und dem Chattextfeld, um eine Frage einzugeben

Verwenden der Chat-App zum Abrufen von Antworten aus PDF-Dateien

Die Chat-App wird vorab mit Informationen zu den Leistungen für Mitarbeiter aus PDF-Dateien befüllt. Sie können die Chat-App verwenden, um Fragen zu den Leistungen zu stellen. Die folgenden Schritte führen Sie durch den Prozess der Verwendung der Chat-App.

  1. Navigieren Sie im Browser mithilfe der linken Navigation zur Chatseite.

  2. Wählen oder geben Sie im Chattextfeld „Was ist in meinem Northwind Health Plus-Plan enthalten, was nicht im Standard-Plan enthalten ist?" ein.

    Screenshot der ersten Antwort der Chat-App

  3. Wählen Sie in der Antwort ein Zitat aus. Ein Popupfenster wird geöffnet, in dem die Quelle der Informationen angezeigt wird.

    Screenshot der ersten Antwort der Chat-App mit hervorgehobenem Zitat in einem roten Feld

  4. Navigieren Sie zwischen den Registerkarten am oberen Rand des Antwortfelds, um zu verstehen, wie die Antwort generiert wurde.

    Registerkarte Beschreibung
    Gedankenprozess Dies ist ein Skript der Interaktionen im Chat. Sie können die Systemaufforderung (content) und Ihre Benutzerfrage (content) anzeigen.
    Unterstützender Inhalt Dazu gehören die Informationen zur Beantwortung Ihrer Frage und des Quellmaterials. Die Anzahl der Quellenmaterialzitate wird in den Entwicklereinstellungen angegeben. Der Standardwert ist 3.
    Quellenangaben Dadurch wird die Quellseite angezeigt, die das Zitat enthält.
  5. Wenn Sie fertig sind, navigieren Sie zurück zur Registerkarte „Antwort“.

Verwenden von Chat-App-Einstellungen zum Ändern des Verhaltens von Antworten

Die Intelligenz des Chats wird durch das OpenAI-Modell und die Einstellungen bestimmt, die für die Interaktion mit dem Modell verwendet werden.

Screenshot der Chat-Entwicklereinstellungen

Einstellung Beschreibung
Außerkraftsetzen der Eingabeaufforderungsvorlage Dies ist die Eingabeaufforderung, die zum Generieren der Antwort verwendet wird.
Abrufen dieser vielen Suchergebnisse Dies ist die Anzahl der Suchergebnisse, die zum Generieren der Antwort verwendet werden. Sie können diese Quellen sehen, die im Gedankenprozess und den Registerkarten mit Unterstützendem Inhalt zum Zitat zurückgegeben werden.
Kategorie ausschließen Dies ist die Kategorie von Dokumenten, die aus den Suchergebnissen ausgeschlossen sind.
Verwenden des semantischen Rankers für den Abruf Dies ist ein Feature von Azure KI-Suche, das maschinelles Lernen verwendet, um die Relevanz von Suchergebnissen zu verbessern.
Abrufmodus Vektoren + Text bedeutet, dass die Suchergebnisse auf dem Text der Dokumente und den Einbettungen der Dokumente basieren. Vektoren bedeutet, dass die Suchergebnisse auf den Einbettungen der Dokumente basieren. Text bedeutet, dass die Suchergebnisse auf dem Text der Dokumente basieren.
Verwenden von Abfragekontextzusammenfassungen anstelle von ganzen Dokumenten Wenn beide Use semantic ranker und Use query-contextual summaries überprüft werden, verwendet der LLM Beschriftungen, die aus wichtigen Passagen extrahiert wurden, anstelle aller Passagen in den am höchsten bewerteten Dokumenten.
Vorschlagen von Anschlussfragen Lassen Sie die Chat-App Anschlussfragen basierend auf der Antwort vorschlagen.

Die folgenden Schritte führen Sie durch den Prozess der Änderung der Einstellungen.

  1. Wählen Sie im Browser das Zahnradsymbol oben rechts auf der Seite aus.

  2. Aktivieren Sie das Kontrollkästchen Anschlussfragen vorschlagen und stellen Sie die gleiche Frage erneut.

    What is my deductible?
    

    Der Chat gibt Vorschläge für Anschlussfragen wie die folgenden zurück:

    • „Was ist die Kostenbeteiligung für Dienste außerhalb des Netzwerkes?“
    • „Unterliegen präventive Pflegeleistungen dem Abzug?“
    • „Wie funktioniert die Selbstbeteiligung für verschreibungspflichtige Medikamente?“
  3. Deaktivieren Sie auf der Registerkarte Einstellungen die Option Semantischen Ranker zum Abrufen verwenden.

  4. Stellen Sie dieselbe Frage erneut.

    What is my deductible?
    
  5. Was ist der Unterschied in den Antworten?

    Die Antwort, die den semantischen Ranker verwendet hat, lieferte eine einzige Antwort: The deductible for the Northwind Health Plus plan is $2,000 per year.

    Die Antwort ohne semantische Rangfolge hat eine weniger direkte Antwort zurückgegeben: Based on the information provided, it is unclear what your specific deductible is. The Northwind Health Plus plan has different deductible amounts for in-network and out-of-network services, and there is also a separate prescription drug deductible. I would recommend checking with your provider or referring to the specific benefits details for your plan to determine your deductible amount.

Bereinigen von Ressourcen

Bereinigen von Azure-Ressourcen

Die in diesem Artikel erstellten Azure-Ressourcen werden Ihrem Azure-Abonnement in Rechnung gestellt. Wenn Sie nicht erwarten, dass diese Ressourcen in Zukunft benötigt werden, löschen Sie sie, um weitere Gebühren zu vermeiden.

Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen zu löschen und den Quellcode zu entfernen:

azd down --purge

Bereinigen von GitHub-Codespaces

Durch das Löschen der GitHub Codespaces-Umgebung wird sichergestellt, dass Sie die Anzahl der kostenlosen Berechtigungsstunden pro Kern maximieren können, die Sie für Ihr Konto erhalten.

Wichtig

Weitere Informationen zu den Berechtigungen Ihres GitHub-Kontos finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.

  1. Melden Sie sich beim GitHub Codespaces-Dashboard (https://github.com/codespaces) an.

  2. Suchen Sie Ihre aktuell ausgeführten Codespaces, die aus dem Azure-Samples/azure-search-openai-demo-csharp-GitHub-Repository stammen.

    Screenshot: Alle ausgeführten Codespaces mit ihrem jeweiligen Status und Vorlagen.

  3. Öffnen Sie das Kontextmenü für den Codespace, und wählen Sie dann Löschen aus.

    Screenshot: Kontextmenü für einen Codespace mit hervorgehobener Löschoption.

Hilfe erhalten

Dieses Beispiel-Repository bietet Informationen zur Problembehandlung.

Wenn Ihr Problem nicht behoben ist, protokollieren Sie Ihr Problem bei den Problemen des Repositorys.

Nächste Schritte