Page_type | Sprachen | Produkte | urlfragment | Name | Beschreibung | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Probe |
|
| Azure-Search-OpenAI-Demo-Csharp | CHATGPT + ENTERPRISE -DATEN (CSHARP) | Eine CSHARP -Beispiel -App, die mit Ihren Daten mithilfe von OpenAI- und AI -Suche chatisiert. |
Dieses Beispiel zeigt einige Ansätze zum Erstellen von ChatGPT-ähnlichen Erlebnissen über Ihre eigenen Daten mithilfe des Musters für Augmented-Ergänzung. Es verwendet den Azure OpenAI-Service, um auf das ChatGPT-Modell ( gpt-4o-mini
) und die Azure-AI-Suche nach Datenindexierung und -abruf zuzugreifen.
Das Repo enthält Beispieldaten, sodass es bereit ist, End-to-End zu versuchen. In dieser Beispielanwendung verwenden wir ein fiktives Unternehmen namens Contoso Electronics, und die Erfahrung ermöglicht es seinen Mitarbeitern, Fragen zu den Vorteilen, internen Richtlinien sowie zu Jobbeschreibungen und -rollen zu stellen.
Weitere Informationen zur Erstellung dieser Anwendung finden Sie unter:
Wir wollen von Ihnen hören! Sind Sie daran interessiert, intelligente Apps zu bauen oder derzeit aufzubauen? Nehmen Sie sich ein paar Minuten Zeit, um diese Umfrage abzuschließen.
Nehmen Sie die Umfrage
Um dieses Beispiel bereitzustellen und auszuführen, benötigen Sie
Microsoft.Authorization/roleAssignments/write
, wie z. B. Benutzerzugriffsadministrator oder Eigentümer. Warnung
Standardmäßig erstellt dieses Beispiel eine Azure -Container -App und Azure AI -Suchressource mit monatlichen Kosten sowie Azure AI -Dokumenten -Intelligence -Ressource, die die Kosten pro Dokument enthält. Sie können sie auf kostenlose Versionen von jeweils umstellen, wenn Sie diese Kosten vermeiden möchten, indem Sie die Parameterdatei im Infra -Ordner ändern (obwohl es einige Grenzen zu berücksichtigen gibt. Beispielsweise können Sie bis zu 1 kostenlose Azure -AI -Suchressource pro Abonnement und die kostenlose Azure AI -Dokument -Intelligence -Ressource nur die ersten 2 Pagen jedes Dokuments analysieren.)
Die Preisgestaltung variiert je nach Region und Verwendung, sodass es nicht möglich ist, genaue Kosten für Ihre Verwendung vorherzusagen. Sie können jedoch den Azure Pricing -Rechner für die folgenden Ressourcen ausprobieren:
Um die Kosten zu senken, können Sie für verschiedene Dienstleistungen auf kostenlose SKUs wechseln, diese SKUs haben jedoch Einschränkungen. Weitere Informationen finden Sie in dieser Anleitung zum Bereitstellen mit minimalen Kosten.
azd down
.
Sie haben einige Optionen zum Einrichten dieses Projekts. Der einfachste Weg, um loszulegen, sind Github -Codenspace, da alle Tools für Sie eingerichtet werden, aber Sie können es auch lokal einrichten, wenn Sie es gewünscht haben.
Sie können dieses Repo virtuell mit GitHub-Codespazis ausführen, mit denen ein webbasiertes VS-Code in Ihrem Browser geöffnet wird:
Eine zugehörige Option ist VS -Code -Remote -Container, mit denen das Projekt in Ihrem lokalen VS -Code unter Verwendung der Dev Container -Erweiterung geöffnet wird:
Installieren Sie die folgenden Voraussetzungen:
Azure Developer CLI
.NET 8
Git
PowerShell 7+ (PWSH) - Nur für Windows -Benutzer.
Wichtig : Stellen Sie sicher, dass Sie
pwsh.exe
aus einem PowerShell -Befehl ausführen können. Wenn dies fehlschlägt, müssen Sie wahrscheinlich PowerShell verbessern.
Docker
Wichtig : Stellen Sie sicher, dass Docker ausgeführt wird, bevor
azd
-Befehle zur Bereitstellung / Bereitstellung ausgeführt werden.
Führen Sie dann die folgenden Befehle aus, um das Projekt in Ihre lokale Umgebung zu erhalten:
azd auth login
azd init -t azure-search-openai-demo-csharp
azd env new azure-search-openai-demo-csharp
Live -Stream: Bereitstellung von Grund auf neuer Kammern Live -Stream: Bereitstellung von Grund auf Windows 11 bereitzustellen
Wichtig : Stellen Sie sicher, dass Docker ausgeführt wird, bevor
azd
-Befehle zur Bereitstellung / Bereitstellung ausgeführt werden.
Führen Sie den folgenden Befehl aus, wenn Sie keine bereits bestehenden Azure-Dienste haben und von einer neuen Bereitstellung beginnen möchten.
Ausführen azd up
- Dies wird Azure -Ressourcen bereitstellen und dieses Beispiel für diese Ressourcen bereitstellen, einschließlich des Erstellens des Suchindex basierend auf den in dem ./data
gefundenen Dateien.
Hinweis : Diese Anwendung verwendet das
gpt-4o-mini
Modell. Stellen Sie bei der Auswahl der Region sicher, dass sie in dieser Region (dh Eastus) verfügbar sind. Weitere Informationen finden Sie in der Dokumentation von Azure Openai Service.
Nachdem die Anwendung erfolgreich bereitgestellt wurde, wird eine URL in der Konsole gedruckt. Klicken Sie auf diese URL, um mit der Anwendung in Ihrem Browser zu interagieren.
Es wird wie Folgendes aussehen:
[! Hinweis]: Es kann einige Minuten dauern, bis die Anwendung vollständig bereitgestellt wird. Nachdem die Anwendung bereitgestellt wurde, dauert es auch einige Minuten, bis die Dokumente in die Vektordatenbank hinzugefügt werden.
Wenn Sie vorhandene Ressourcen in Azure haben, die Sie verwenden möchten, können Sie azd
so konfigurieren, dass diese die folgenden azd
-Umgebungsvariablen festlegen:
azd env set AZURE_OPENAI_SERVICE {Name of existing OpenAI service}
ausazd env set AZURE_OPENAI_RESOURCE_GROUP {Name of existing resource group that OpenAI service is provisioned to}
azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT {Name of existing ChatGPT deployment}
aus. Nur benötigt, wenn Ihre Chatgpt -Bereitstellung nicht der Standard -Chat ist.azd env set AZURE_OPENAI_EMBEDDING_DEPLOYMENT {Name of existing embedding model deployment}
. Nur erforderlich, wenn Ihre Einbettungsmodellbereitstellung nicht die embedding
ist.azd up
Notiz
Sie können auch vorhandene Such- und Speicherkonten verwenden. azd env set
./infra/main.parameters.json
Wichtig
Stellen Sie sicher, dass Docker ausgeführt wird, bevor azd
-Befehle zur Bereitstellung / Bereitstellung ausgeführt wird.
azd up
Notiz
Stellen Sie sicher, dass Sie AZD-unterstützte Bizeps-Dateien in Ihrem Repository haben, und fügen Sie eine anfängliche Github-Aktions-Workflow-Datei hinzu, die entweder manuell ausgelöst werden kann (für die anfängliche Bereitstellung) oder bei Codeänderung (automatisch neu abzutreten) mit den neuesten Änderungen, um Ihre Repository-kompatibel mit AZD-AZD-AZD-Abschnitten zu ermöglichen.
"resourceGroupName" : {
"value" : " ${AZURE_RESOURCE_GROUP} "
}
"tags" : {
"value" : " ${AZURE_TAGS} "
}
param resourceGroupName string = ''
param tags string = ''
var baseTags = { 'azd-env-name' : environmentName }
var updatedTags = union ( empty ( tags ) ? {} : base64ToJson ( tags ), baseTags )
Make sure to use " updatedTags " when assigning " tags " to resource group created in your bicep file and update the other resources to use " baseTags " instead of " tags ". For example -
``` json
resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
name : ! empty ( resourceGroupName ) ? resourceGroupName : '${ abbrs . resourcesResourceGroups }${ environmentName }'
location : location
tags : updatedTags
}
Wichtig
Stellen Sie sicher, dass Docker ausgeführt wird, bevor azd
-Befehle zur Bereitstellung / Bereitstellung ausgeführt wird.
Führen Sie azd auth login
Setzen Sie nach der Anwendung die Umgebungsvariable AZURE_KEY_VAULT_ENDPOINT
. Sie finden den Wert in der Datei .azure/your-Environmentname/.env oder im Azure-Portal.
Führen Sie den folgenden .NET -CLI -Befehl aus, um den ASP.NET -Kernminimal -API -Server (Client -Host) zu starten:
dotnet run --project ./app/backend/MinimalApi.csproj --urls=http://localhost:7181/
Navigieren Sie zu http: // localhost: 7181 und testen Sie die App.
Dieses Beispiel umfasst einen .NET -Maui -Client, der die Erfahrung als App verpackt, die auf einem Windows/MacOS -Desktop oder auf Android- und iOS -Geräten ausgeführt werden kann. Der MAUI -Client hier wird mit Blazor Hybrid implementiert, sodass er den meisten Code mit der Website -Frontend freigibt.
Öffnen Sie die App/App-maui.sln, um die Lösung zu öffnen, die den MAUI-Client enthält
Bearbeiten Sie App/Maui-Blazor/Mauiprogram.cs , updieren client.BaseAddress
mit der URL für das Backend.
Wenn es in Azure ausgeführt wird, verwenden Sie die URL für das Service -Backend aus den obigen Schritten. Wenn Sie lokal ausgeführt werden, verwenden Sie http: // localhost: 7181.
Stellen Sie Mauiblazor als Startprojekt ein und führen Sie die App aus
Führen Sie Folgendes aus, wenn Sie jemand anderem Zugriff auf die bereitgestellte und vorhandene Umgebung gewähren möchten.
azd init -t azure-search-openai-demo-csharp
azd env refresh -e {environment name}
aus - Beachten Sie, dass sie den AZD -Umgebungsnamen, die Abonnement -ID und den Ort benötigen, um diesen Befehl auszuführen - diese Werte finden Sie in Ihrer ./azure/{env name}/.env
. Dadurch wird die .EnV -Datei der AZD -Umgebung mit allen Einstellungen ausgefüllt, die für die lokale Ausführung der App erforderlich sind.pwsh ./scripts/roles.ps1
aus - Dadurch werden dem Benutzer alle erforderlichen Rollen zugewiesen, damit sie die App lokal ausführen können. Wenn sie nicht über die erforderliche Erlaubnis verfügen, Rollen im Abonnement zu erstellen, müssen Sie dieses Skript möglicherweise für sie ausführen. Stellen Sie einfach sicher, dass die Umgebungsvariable AZURE_PRINCIPAL_ID
in der AZD .EnV -Datei oder in der aktiven Shell in ihre Azure -ID eingerichtet ist, die sie mit az account show
erhalten können. Führen Sie azd down
azd
bereitgestellt wird. Die URL wird ausgedruckt, wenn azd
abgeschlossen ist (als "Endpunkt"), oder Sie können sie im Azure -Portal finden.Einmal in der Web -App:
So setzen Sie die Variable Azure_USE_Application_insights zu true, bevor Sie AZD ausführen, die Variable AZURE_USE_APPLICATION_INSIGHTS
, bevor Sie azd up
ausführen, und die Verfolgung jeder Anforderung zusammen mit der Protokollierung von Fehlern sowie die Verfolgung jeder Anforderung zusammen mit der Protokollierung von Fehlern festlegen
azd env set AZURE_USE_APPLICATION_INSIGHTS true
azd up
Um die Leistungsdaten anzuzeigen, wenden Sie sich in Ihre Ressourcengruppe in die Ressource für Anwendungen. Um die Leistung von Chat-Anfragen zu untersuchen, verwenden Sie die Taste "Drill in die Samples", um End-to-End-Spuren aller API-Anrufe für eine Chat-Anfrage zu sehen:
Um Ausnahmen und Serverfehler anzuzeigen, navigieren Sie zu der Klinge "Untersuchung -> Fehler" und verwenden Sie die Filterwerkzeuge, um eine bestimmte Ausnahme zu finden. Auf der rechten Seite können Sie Python-Stapelspuren sehen.
Standardmäßig verfügt die bereitgestellte Azure -Container -App über keine Authentifizierungs- oder Zugriffsbeschränkungen. Dies bedeutet, dass jeder, der einen routbaren Netzwerkzugriff auf die Container -App hat, mit Ihren indizierten Daten chatten kann. Sie können eine Authentifizierung in Ihrem Azure Active Directory benötigen, indem Sie das Tutorial für Container -App -Authentifizierungs -Tutorial befolgen und gegen die bereitgestellte Container -App einrichten.
Um den Zugriff auf eine bestimmte Reihe von Benutzern oder Gruppen zu beschränken, können Sie die Schritte von der Einschränkung Ihrer Azure -AD -App auf eine Reihe von Benutzern befolgen, indem Sie "Zuweisungen erforderlich" ändern? Option unter der Enterprise -Anwendung und dann zu Zugriff Benutzer/Gruppen zugewiesen. Benutzer haben keinen expliziten Zugriff gewährt, erhält die Fehlermeldung -aAdSts50105: Ihr Administrator hat die Anwendung <APP_NAME> für die Blockierung von Benutzern konfiguriert, es sei denn
Mit GPT-4o-mini
ist es möglich, eine angereicherte, retival erweiterte Generation zu unterstützen, indem sowohl Text als auch Bild als Quellinhalt bereitgestellt werden. Um Visionsunterstützung zu ermöglichen, müssen Sie bei der Bereitstellung USE_VISION
aktivieren und das GPT-4o
oder GPT-4o-mini
Modell verwenden.
Notiz
Sie müssten das Support-Material neu indizieren und die Anwendung neu abgeben, nachdem Sie den GPT-4O-Support aktiviert haben, wenn Sie die Anwendung bereits zuvor bereitgestellt haben. Dies liegt daran, dass das Ermöglichung von GPT-4O-Unterstützung neue Felder zum Suchindex hinzugefügt werden muss.
Führen Sie die folgenden Befehle aus:
azd env set USE_VISION true
azd env set USE_AOAI true
azd env set AZURE_OPENAI_CHATGPT_MODEL_NAME gpt-4o-mini
azd env set AZURE_OPENAI_RESOURCE_LOCATION eastus # Please check the gpt model availability for more details.
azd up
Führen Sie die folgenden Befehle aus:
azd env set USE_VISION true
azd env set USE_AOAI false
azd env set OPENAI_CHATGPT_DEPLOYMENT gpt-4o
azd up
Führen Sie den folgenden Befehl aus, um zuvor bereitgestellte Ressourcen aufzuräumen:
azd down --purge
azd env set AZD_PREPDOCS_RAN false # This is to ensure that the documents are re-indexed with the new fields.
Neben den folgenden Tipps finden Sie eine umfassende Dokumentation im DOCS -Ordner.
Dieses Beispiel ist ein Ausgangspunkt für Ihre eigene Produktionsanwendung. Sie sollten jedoch eine gründliche Überprüfung der Sicherheit und Leistung durchführen, bevor Sie für die Produktion bereitgestellt werden. Hier sind einige Dinge zu beachten:
OpenAI -Kapazität : Die Standard -TPM (Token pro Minute) ist auf 30.000 eingestellt. Dies entspricht ungefähr 30 Gesprächen pro Minute (unter der Annahme von 1K pro Benutzernachricht/Antwort). Sie können die Kapazität erhöhen, indem Sie die chatGptDeploymentCapacity
und die Einbindung von Parametern embeddingDeploymentCapacity
in infra/main.bicep
in die maximale Kapazität Ihres Kontos ändern. Sie können auch die Registerkarte Quotas in Azure Openai Studio anzeigen, um zu verstehen, wie viel Kapazität Sie haben.
Azure -Speicher : Das Standardspeicherkonto verwendet das Standard_LRS
-SKU. Um Ihre Resilienz zu verbessern, empfehlen wir die Verwendung Standard_ZRS
für Produktionsbereitstellungen, die Sie mithilfe der sku
-Eigenschaft unter dem storage
in infra/main.bicep
angeben können.
Azure AI-Suche : Wenn Sie Fehler über die Überschreitung von Suchdienstleistungen sehen, ist es möglicherweise hilfreich, die Anzahl der Replikate zu erhöhen, indem sie replicaCount
in infra/core/search/search-services.bicep
ändern.
Azure Container -Apps : Standardmäßig stellt diese Anwendung Container mit 0,5 CPU -Kernen und 1 GB Speicher bereit. Die minimalen Replikate beträgt 1 und maximal 10. Für diese App können Sie Werte wie containerCpuCoreCount
, containerMaxReplicas
, containerMemory
, containerMinReplicas
in der infra/core/host/container-app.bicep
Datei an Ihre Anforderungen festlegen. Sie können automatische Abfindungsregeln oder geplante Skalierungsregeln verwenden und die maximale/minimale Basis auf der Last skalieren.
Authentifizierung : Standardmäßig ist die bereitgestellte App öffentlich zugänglich. Wir empfehlen, den Zugriff auf authentifizierte Benutzer einzuschränken. Weitere Informationen finden Sie in der oben genannten Authentifizierung, um die Authentifizierung zu aktivieren.
Networking : Wir empfehlen die Bereitstellung in einem virtuellen Netzwerk. Wenn die App nur für die interne Unternehmensanwendung bestimmt ist, verwenden Sie eine private DNS -Zone. Erwägen Sie auch, Azure API Management (APIM) für Firewalls und andere Schutzformen zu verwenden. Weitere Informationen finden Sie unter Azure Openai Landing Zone Referenzarchitektur.
LoadTesting : Wir empfehlen, einen Loadest für Ihre erwartete Anzahl von Benutzern auszuführen.
Azure.AI.OpenAI
Nuget -PaketNotiz
Die in dieser Demo verwendeten PDF -Dokumente enthalten Informationen, die mit einem Sprachmodell (Azure OpenAI -Dienst) generiert wurden. Die in diesen Dokumenten enthaltenen Informationen dienen nur zu Demonstrationszwecken und spiegeln nicht die Meinungen oder Überzeugungen von Microsoft wider. Microsoft gibt keine Zusicherungen oder Garantien jeglicher Art ausdrücklich oder stillschweigend über die Vollständigkeit, Genauigkeit, Zuverlässigkeit, Eignung oder Verfügbarkeit in Bezug auf die in diesem Dokument enthaltenen Informationen aus. Alle Rechte vorbehalten Microsoft.
Frage : Warum müssen wir die PDFs in Stücke zerlegen, wenn die Azure -AI -Suche die Suche nach großen Dokumenten unterstützt?
Antwort : Chunking ermöglicht es uns, die Anzahl der Informationen zu begrenzen, die wir aufgrund von Token -Grenzen an Openai senden. Durch das Aufbrechen des Inhalts können wir leicht potenzielle Textbrocken finden, die wir in OpenAI injizieren können. Die Methode des Chunking Wir verwenden ein Schiebeberfen des Textes, so dass Sätze, die einen Chunk beenden, den nächsten starten. Dies ermöglicht es uns, die Wahrscheinlichkeit zu verringern, den Kontext des Textes zu verlieren.