Vorbereiten
Sie aktualisieren eine vorhandene .NET-Lösung, die über eine Blazor-Anwendung als einziges Projekt verfügt. Dieses Projekt umfasst Dienstklassen für Datenspeicherung und Unterhaltung, die mit Platzhaltern implementiert werden. Hier besprechen wir die Gesamtziele des Projekts und die Implementierung der Datenspeicher- und Unterhaltungsfunktionalität. Darüber hinaus behandeln wir die Einrichtung der benötigten Azure-Ressourcen.
Projektübersicht
Ziel dieses Projekts ist es, zwei Dienstklassen für die Datenspeicherung und -vervollständigungen zu implementieren. Verwenden Sie für die Datenspeicherdienstklasse das Azure Cosmos DB for NoSQL .NET SDK, um mehrere Elemente in einem vorhandenen Container zu erstellen, zu aktualisieren, abzufragen und zu löschen. Verwenden Sie für die Chatvervollständigung das Azure OpenAI .NET SDK, um Anforderungen zu senden und Antworten zu analysieren.
Die Hauptaufgaben, die Sie erledigen müssen, sind:
- Stellen Sie Azure Cosmos DB for NoSQL- und Azure OpenAI-Ressourcen in Azure bereit.
- Rufen Sie die Anmeldeinformationen für die bereitgestellten Azure Cosmos DB for NoSQL- und Azure OpenAI-Ressourcen ab.
- Öffnen Sie die Startlösung in Visual Studio Code.
- Verwenden Sie das .NET SDK, um Azure Cosmos DB for NoSQL als Datenspeicherdienst zu implementieren.
- Verwenden Sie das .NET SDK, um Azure OpenAI als Unterhaltungsschnittstelle zu implementieren.
- Überprüfen Sie den Vorgang der Anwendung.
Setup
Um dieses Projekt abzuschließen, benötigen Sie ein Azure Cosmos DB for NoSQL-Konto und ein Azure OpenAI-Konto. Um diesen Prozess zu optimieren, stellen Sie eine Bicep-Vorlage mit beiden Konten in Azure bereit.
Konfigurieren der Entwicklungsumgebung
Es ist eine Entwicklungscontainerumgebung mit allen Abhängigkeiten verfügbar, die zum Abschließen der Übungen in diesem Projekt erforderlich sind. GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für Web als Benutzeroberfläche aus. Für eine möglichst unkomplizierte Entwicklungsumgebung verwenden Sie GitHub Codespaces. Hiermit sind die benötigten Entwicklertools und Abhängigkeiten vorinstalliert, mit denen Sie dieses Schulungsmodul absolvieren können.
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.
Starten Sie den Prozess, um einen neuen GitHub Codespace zu erstellen, indem Sie die Option "Active Codespaces " am Anfang dieser Einheit auswählen.
Überprüfen Sie auf der Seite Codespace erstellen die Konfigurationseinstellungen für den Codespace und wählen Sie dann Neuen Codespace erstellen.
Warten Sie den Start des Codespaces ab. Dieser Startvorgang kann einige Minuten dauern.
Öffnen Sie ein neues Terminal im Codespace.
Überprüfen Sie, ob die Azure CLI in Ihrer Umgebung installiert ist.
az --version
Überprüfen Sie, ob .NET 8 in Ihrer Umgebung installiert ist.
dotnet --list-sdks
Wechseln Sie in das
src
-Verzeichnis, in dem sich die Projektdatei befindet.cd src
Erstellen des .NET-Projekts.
dotnet build
Schließen Sie das Terminal.
Die restlichen Übungen in diesem Projekt finden im Kontext dieses Entwicklungscontainers statt.
Wichtig
Lassen Sie den GitHub Codespace für den Rest dieses Schulungsmoduls laufen.
Bereitstellen der Infrastruktur aus Vorlage
Dieses Projekt verwendet das GitHub-Repository azure-samples/cosmosdb-chatgpt sowohl für die Azure Resource Manager-Vorlagenbereitstellung als auch für den Anwendungscode. Erstellen Sie in diesem Schritt eine neue Bereitstellung mithilfe der Bicep-Vorlage, um Ihre Ressourcen mithilfe von „Infrastruktur als Code“ bereitzustellen.
Tipp
Diese „Zero-touch“-Bicep-Vorlage enthält auch die endgültige Anwendung, die in Azure App Service ausgeführt wird. Sie können dies jederzeit auschecken, wenn Sie eine voll funktionsfähige Lösung sehen möchten.
Melden Sie sich bei der Azure CLI an.
az login --use-device-code
Erstellen Sie eine neue Shellvariable namens resourceGroupName mit dem Namen der Azure-Ressourcengruppe, die Sie erstellen (
mslearn-cosmos-openai
).resourceGroupName="mslearn-cosmos-openai"
Erstellen Sie mithilfe von
az group create
eine Ressourcengruppe.az group create \ --name $resourceGroupName \ --location "eastus"
Stellen Sie die Vorlagendatei azuredeploy.json mithilfe von
az deployment group create
in der Ressourcengruppe bereit.az deployment group create \ --resource-group $resourceGroupName \ --name zero-touch-deployment \ --template-uri https://raw.githubusercontent.com/Azure-Samples/cosmosdb-chatgpt/start/azuredeploy.json
Warten Sie, bis die Bereitstellung abgeschlossen ist, bevor Sie mit diesem Projekt fortfahren.
Hinweis
Im Durchschnitt kann diese Bereitstellung fünf bis zehn Minuten dauern.
Abrufen von Azure Cosmos DB for NoSQL- und Azure OpenAI-Kontoanmeldeinformationen
Ihre Vorlage hat Azure Cosmos DB for NoSQL- und Azure OpenAI-Konten bereitgestellt und dann ihre Anmeldeinformationen in der Konfiguration der Azure App Service-Web-App gespeichert. Jetzt haben Sie die Wahl, das Azure-Portal oder die Azure CLI zum Abrufen der Anmeldeinformationen für jeden Dienst zu verwenden. Verwenden Sie az webapp config
aus der Azure CLI, um die Azure OpenAI- und Azure Cosmos DB-Anmeldeinformationen abzurufen und sie in Ihrer lokalen Entwicklungsumgebung zu verwenden. In diesem Abschnitt filtern Sie die Ausgabe der verschiedenen Befehle, um Ihren Endpunkt und die Verbindungszeichenfolge zurückzugeben, die mit den .NET SDKs von Azure OpenAI und Azure Cosmos DB for NoSQL verwendet werden soll.
Rufen Sie zunächst eine Liste aller ausgeführten Webanwendungen in Ihrer Ressourcengruppe mithilfe von
az webapp list
ab.az webapp list \ --resource-group $resourceGroupName \ --query "[?state=='Running'].name"
Führen Sie nun die gleiche Abfrage erneut aus, geben aber nur das erste Ergebnis aus dem Array im Format durch Tabstopp getrennter Werte (
tsv
) zurück.webAppName=$( \ az webapp list \ --resource-group $resourceGroupName \ --query "[?state=='Running'].name | [0]" \ --output tsv \ )
Tipp
Wenn Sie nicht sicher sind, dass Ihre Variable den richtigen Wert aufweist, führen Sie einfach im Terminal
echo $webAppName
aus, um den Wert zu überprüfen.Verwenden Sie
az webapp config appsettings list
zum Abrufen einer Liste der Anwendungseinstellungen für die Web-App.az webapp config appsettings list \ --name $webAppName \ --resource-group $resourceGroupName
Hier ist ein abgeschnittenes Beispiel für die Ausgabe, wobei der Name des Azure Cosmos DB for NoSQL-Kontos nybncrsna76fo-cosmos-nosql lautet und der Name des Azure OpenAI-Kontos nybncrsna76fo-openai. Die Schlüssel in diesem Beispiel sind fiktiv.
[ { "setting": "COSMOSDB__ENDPOINT", "value": "https://nybncrsna76fo-cosmos-nosql.documents.azure.com:443/" }, { "setting": "COSMOSDB__KEY", "value": "Aj2OSQqWhXfFzkITIi4MIbocWAAoBCUWnSPzHlQbDYA3TiyZCJlk8A6R1l6WqD45BxAG5vrsyQ4SCXEkPS1pLh==" }, ... { "setting": "OPENAI__ENDPOINT", "value": "https://nybncrsna76fo-openai.openai.azure.com/" }, { "setting": "OPENAI__KEY", "value": "4bf98cb194cdf0f9001eae3259a76ed8" }, ... ]
Notieren Sie den Wert des Endpunkts und des Schlüssels für die Azure Cosmos DB for NoSQL- und Azure OpenAI-Konten. Sie verwenden diese Anmeldeinformationen später in diesem Projekt, um eine Verbindung mit jedem Konto herzustellen.