Schnellstart: Chatten mit Azure OpenAI-Modellen mithilfe Ihrer eigenen Daten
In diesem Schnellstart können Sie Ihre eigenen Daten mit Azure OpenAI-Modellen verwenden. Wenn Sie Azure OpenAI-Modelle für Ihre Daten verwenden, erhalten Sie eine leistungsstarke Konversations-KI-Plattform, die eine schnellere und präzisere Kommunikation ermöglicht.
Voraussetzungen
Die folgenden Ressourcen:
- Azure OpenAI
- Azure Blob Storage
- Azure KI Cognitive Search
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
- Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
- Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Playground für Chats
Beginnen Sie mit der Erkundung der Azure OpenAI-Funktionen mit einem No-Code-Ansatz mithilfe des Chatplaygrounds. Es handelt sich ganz einfach um ein Textfeld, in das Sie einen Befehlstext eingeben, um eine Vervollständigung zu generieren. Auf dieser Seite können Sie die Funktionen ganz einfach schrittweise erkunden und mit ihnen experimentieren.
Der Playground bietet Ihnen Optionen, um Ihre Chaterfahrung anzupassen. Im Menü oben können Sie Bereitstellen auswählen, um zu bestimmen, welches Modell mithilfe der Suchergebnisse aus Ihrem Index eine Antwort generiert. Sie wählen die Anzahl der vergangenen Nachrichten aus, die als Unterhaltungsverlauf für zukünftige generierte Antworten eingeschlossen werden sollen. Der Unterhaltungsverlauf gibt Kontext zum Generieren verwandter Antworten, nutzt aber auch die Tokenverwendung. Die Statusanzeige des Eingabetokens verfolgt die Tokenanzahl der von Ihnen übermittelten Frage.
Die erweiterten Einstellungen auf der linken Seite sind Laufzeitparameter, die Ihnen die Kontrolle über das Abrufen und Durchsuchen relevanter Informationen aus Ihren Daten ermöglichen. Ein guter Anwendungsfall ist, wenn Sie sicherstellen möchten, dass Antworten nur basierend auf Ihren Daten generiert werden, oder Sie finden, dass das Modell keine Antwort basierend auf vorhandenen Informationen zu Ihren Daten generieren kann.
Die Strenge bestimmt die Aggressivität des Systems beim Filtern von Suchdokumenten auf der Grundlage ihrer Ähnlichkeitswerte. Wenn Sie die Strenge auf 5 setzen, filtert das System die Dokumente aggressiv heraus und wendet eine sehr hohe Ähnlichkeitsschwelle an. Die semantische Suche kann in diesem Szenario hilfreich sein, da die Ranking-Modelle besser in der Lage sind, die Absicht der Suchanfrage zu erkennen. Eine geringere Strenge liefert ausführlichere Antworten, kann aber auch Informationen enthalten, die sich nicht in Ihrem Index befinden. Dieser Wert ist standardmäßig auf 3 eingestellt.
Abgerufene Dokumente ist eine ganze Zahl, die auf 3, 5, 10 oder 20 gesetzt werden kann und die Anzahl der Dokumentenstücke steuert, die dem großen Sprachmodell zur Formulierung der endgültigen Antwort zur Verfügung gestellt werden. Standardmäßig ist dieser Wert auf 5 festgelegt.
Wenn Antworten auf Ihre Daten einschränken aktiviert ist, versucht das Modell, sich nur auf Ihre Dokumente für Antworten zu verlassen. Dies ist standardmäßig auf true gesetzt.
Senden Sie Ihre erste Abfrage. Die Chatmodelle funktionieren am besten mit Fragen und Antworten wie Beispiel: Was sind meine verfügbaren Gesundheitspläne? oder Was ist die Option Gesundheit plus?.
Abfragen, die eine Datenanalyse erfordern, würden wahrscheinlich fehlschlagen, z. B. Welcher Integritätsplan ist am beliebtesten?. Abfragen, die Informationen zu allen Daten erfordern, schlagen wahrscheinlich auch fehl, z. B. Wie viele Dokumente habe ich hochgeladen?. Denken Sie daran, dass die Suchmaschine nach Blöcken sucht, die exakte oder ähnliche Begriffe, Phrasen oder Konstruktionen wie die Suchanfrage enthalten. Das Modell mag zwar die Frage verstehen, aber wenn es sich bei den Suchergebnissen um Teile des Datensatzes handelt, sind das nicht die richtigen Informationen, um diese Art von Frage zu beantworten.
Außerdem werden Chats durch die Anzahl von Dokumenten (Blöcke) eingeschränkt, die in der Antwort zurückgegeben werden (beschränkt auf drei bis 20 im Playground von Azure OpenAI Studio). Wie Sie sich vorstellen können, erfordert das Stellen einer Frage zu „alle Titel“ einen vollständigen Scan des gesamten Vektorspeichers.
Bereitstellen Ihres Modells
Sobald Sie mit der Erfahrung im Azure OpenAI-Studio zufrieden sind, können Sie eine Web-App direkt aus dem Studio bereitstellen, indem Sie die Schaltfläche Bereitstellen in auswählen.
Dadurch können Sie entweder eine eigenständige Webanwendung oder einen Copilot in Copilot Studio (Vorschau) bereitstellen, wenn Sie ihre eigenen Daten im Modell verwenden.
Beispiel: Wenn Sie sich für die Bereitstellung einer Webanwendung entscheiden:
Wenn Sie zum ersten Mal eine Web-App bereitstellen, sollten Sie Neue Web-App erstellen auswählen. Geben Sie der App einen Namen, der Teil der App-URL wird. Beispiel: https://<appname>.azurewebsites.net
.
Wählen Sie Ihr Abonnement, Ihre Ressourcengruppe, Ihren Standort und Ihren Preisplan für die veröffentlichte App aus. Um eine bestehende App zu aktualisieren, wählen Sie In einer vorhandenen Web-App veröffentlichen aus, und wählen Sie den Namen Ihrer vorherigen App aus dem Dropdownmenü.
Wenn Sie sich für die Bereitstellung einer Webanwendung entscheiden, lesen Sie diese wichtigen Überlegungen zur Verwendung.
Voraussetzungen
Die folgenden Ressourcen:
- Azure OpenAI
- Azure Blob Storage
- Azure KI Cognitive Search
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
- Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
- Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
- Das .NET 8 SDK
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Siehe Hinzufügen Ihrer Daten mithilfe von Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPENAI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Erstellen einer neuen .NET Core-Anwendung
Verwenden Sie in einem Konsolenfenster (z. B. cmd, PowerShell oder Bash) den Befehl dotnet new
zum Erstellen einer neuen Konsolen-App mit dem Namen azure-openai-quickstart
. Dieser Befehl erstellt ein einfaches „Hallo Welt“-Projekt mit einer einzigen C#-Quelldatei: Program.cs.
dotnet new console -n azure-openai-quickstart
Wechseln Sie zum Ordner der neu erstellten App. Sie können die Anwendung mit folgendem Befehl erstellen:
dotnet build
Die Buildausgabe sollte keine Warnungen oder Fehler enthalten.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Installieren Sie die OpenAI .NET-Clientbibliothek mit:
dotnet add package Azure.AI.OpenAI --prerelease
Öffnen Sie im Projektverzeichnis die Datei Program.cs, und ersetzen Sie den Inhalt durch den folgenden Code:
Ohne Antwortstreaming
using Azure;
using Azure.AI.OpenAI;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using System.Text.Json;
using static System.Environment;
string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_ID");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
#pragma warning disable AOAI001
AzureOpenAIClient azureClient = new(
new Uri(azureOpenAIEndpoint),
new AzureKeyCredential(azureOpenAIKey));
ChatClient chatClient = azureClient.GetChatClient(deploymentName);
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
ChatCompletion completion = chatClient.CompleteChat(
[
new UserChatMessage("What are my available health plans?"),
], options);
Console.WriteLine(completion.Content[0].Text);
AzureChatMessageContext onYourDataContext = completion.GetAzureMessageContext();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (AzureChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.WriteLine($"Citation: {citation.Content}");
}
Wichtig
Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.
dotnet run program.cs
Ausgabe
Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].
Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]
Citation:
Contoso Electronics plan and benefit packages
Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to
learn more about the various options available to you...// Omitted for brevity
Dadurch wird gewartet, bis das Modell seine gesamte Antwort generiert hat, bevor die Ergebnisse gedruckt werden. Wenn Sie die Antwort asynchron streamen und die Ergebnisse drucken möchten, können Sie alternativ den Inhalt von Program.cs durch den Code im nächsten Beispiel ersetzen.
Asynchron mit Streaming
using Azure;
using Azure.AI.OpenAI;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using static System.Environment;
string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_ID");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
#pragma warning disable AOAI001
AzureOpenAIClient azureClient = new(
new Uri(azureOpenAIEndpoint),
new AzureKeyCredential(azureOpenAIKey));
ChatClient chatClient = azureClient.GetChatClient(deploymentName);
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
var chatUpdates = chatClient.CompleteChatStreamingAsync(
[
new UserChatMessage("What are my available health plans?"),
], options);
AzureChatMessageContext onYourDataContext = null;
await foreach (var chatUpdate in chatUpdates)
{
if (chatUpdate.Role.HasValue)
{
Console.WriteLine($"{chatUpdate.Role}: ");
}
foreach (var contentPart in chatUpdate.ContentUpdate)
{
Console.Write(contentPart.Text);
}
if (onYourDataContext == null)
{
onYourDataContext = chatUpdate.GetAzureMessageContext();
}
}
Console.WriteLine();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (AzureChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.Write($"Citation: {citation.Content}");
}
Quellcode| Quellcode | Beispiel
Voraussetzungen
Die folgenden Ressourcen:
- Azure OpenAI
- Azure Blob Storage
- Azure KI Cognitive Search
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
- Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
- Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Weitere Informationen finden Sie unter Hinzufügen Ihrer Daten mit Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resource.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
Hinweis
Spring KI setzt den Modellnamen standardmäßig auf gpt-35-turbo
. Es ist nur erforderlich, den SPRING_AI_AZURE_OPENAI_MODEL
Wert bereitzustellen, wenn Sie ein Modell mit einem anderen Namen bereitgestellt haben.
export SPRING_AI_AZURE_OPENAI_ENDPOINT=REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
export SPRING_AI_AZURE_OPENAI_API_KEY=REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_ENDPOINT=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_API_KEY=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_INDEX=REPLACE_WITH_YOUR_INDEX_NAME_HERE
export SPRING_AI_AZURE_OPENAI_MODEL=REPLACE_WITH_YOUR_MODEL_NAME_HERE
Erstellen einer neuen Spring-Anwendung
Spring KI unterstützt derzeit nicht die Optionen, mit AzureCognitiveSearchChatExtensionConfiguration
denen eine Azure KI-Abfrage die Methode Retrieval Augmented Generation (RAG) kapselt und die Details vom Benutzer ausblenden kann. Alternativ können Sie die RAG-Methode weiterhin direkt in Ihrer Anwendung aufrufen, um Daten in Ihrem Azure KI-Such-Index abzufragen und abgerufene Dokumente zur Erweiterung Ihrer Abfrage zu verwenden.
Spring AI unterstützt eine VectorStore-Abstraktion, und Sie können Azure AI Search in eine Spring AI VectorStore-Implementierung verpacken, um Ihre benutzerdefinierten Daten abzufragen. Das folgende Projekt implementiert einen benutzerdefinierten VectorStore, der von Azure AI Search unterstützt wird, und führt direkt RAG-Operationen aus.
Erstellen Sie in einem Bash-Fenster ein neues Verzeichnis für Ihre App und navigieren Sie dorthin.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
Führen Sie den Befehl spring init
in Ihrem Arbeitsverzeichnis aus. Dieser Befehl erstellt eine Standardverzeichnisstruktur für Ihr Spring-Projekt, einschließlich der Hauptquelldatei der Java-Klassen und der Datei pom.xml, die für die Verwaltung von Maven-basierten Projekten verwendet wird.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Die generierten Dateien und Ordner ähneln der folgenden Struktur:
ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
|-- main/
| |-- resources/
| | |-- application.properties
| |-- java/
| |-- com/
| |-- example/
| |-- aicustomdatademo/
| |-- AiCustomDataApplication.java
|-- test/
|-- java/
|-- com/
|-- example/
|-- aicustomdatademo/
|-- AiCustomDataApplicationTests.java
Spring-Anwendung bearbeiten
Bearbeiten Sie die pom.xml-Datei.
Öffnen Sie im Stammverzeichnis des Projektverzeichnisses die Datei pom.xml in Ihrem bevorzugten Editor oder ihrer IDE, und überschreiben Sie die Datei mit folgendem Inhalt:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>ai-custom-data-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>AICustomData</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-search-documents</artifactId> <version>11.6.0-beta.10</version> <exclusions> <!-- exclude this to avoid changing the default serializer and the null-value behavior --> <exclusion> <groupId>com.azure</groupId> <artifactId>azure-core-serializer-json-jackson</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> </project>
Öffnen Sie im Ordner src/main/java/com/example/aicustomdatademo AiCustomDataApplication.java in Ihrem bevorzugten Editor oder ihrer IDE, und fügen Sie den folgenden Code ein:
package com.example.aicustomdatademo; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; import org.springframework.ai.client.AiClient; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.prompt.Prompt; import org.springframework.ai.prompt.SystemPromptTemplate; import org.springframework.ai.prompt.messages.MessageType; import org.springframework.ai.prompt.messages.UserMessage; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Context; import com.azure.search.documents.SearchClient; import com.azure.search.documents.SearchClientBuilder; import com.azure.search.documents.models.IndexingResult; import com.azure.search.documents.models.SearchOptions; import com.azure.search.documents.models.RawVectorQuery; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.extern.jackson.Jacksonized; @SpringBootApplication public class AiCustomDataApplication implements CommandLineRunner { private static final String ROLE_INFO_KEY = "role"; private static final String template = """ You are a helpful assistant. Use the information from the DOCUMENTS section to augment answers. DOCUMENTS: {documents} """; @Value("${spring.ai.azure.cognitive-search.endpoint}") private String acsEndpoint; @Value("${spring.ai.azure.cognitive-search.api-key}") private String acsApiKey; @Value("${spring.ai.azure.cognitive-search.index}") private String acsIndexName; @Autowired private AiClient aiClient; @Autowired private EmbeddingClient embeddingClient; public static void main(String[] args) { SpringApplication.run(AiCustomDataApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(String.format("Sending custom data prompt to AI service. One moment please...\r\n")); final var store = vectorStore(embeddingClient); final String question = "What are my available health plans?"; final var candidateDocs = store.similaritySearch(question); final var userMessage = new UserMessage(question); final String docPrompts = candidateDocs.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n")); final SystemPromptTemplate promptTemplate = new SystemPromptTemplate(template); final var systemMessage = promptTemplate.createMessage(Map.of("documents", docPrompts)); final var prompt = new Prompt(List.of(systemMessage, userMessage)); final var resps = aiClient.generate(prompt); System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size())); resps.getGenerations().stream() .forEach(gen -> { final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue()); System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText())); }); } @Bean public VectorStore vectorStore(EmbeddingClient embeddingClient) { final SearchClient searchClient = new SearchClientBuilder() .endpoint(acsEndpoint) .credential(new AzureKeyCredential(acsApiKey)) .indexName(acsIndexName) .buildClient(); return new AzureCognitiveSearchVectorStore(searchClient, embeddingClient); } public static class AzureCognitiveSearchVectorStore implements VectorStore { private static final int DEFAULT_TOP_K = 4; private static final Double DEFAULT_SIMILARITY_THRESHOLD = 0.0; private SearchClient searchClient; private final EmbeddingClient embeddingClient; public AzureCognitiveSearchVectorStore(SearchClient searchClient, EmbeddingClient embeddingClient) { this.searchClient = searchClient; this.embeddingClient = embeddingClient; } @Override public void add(List<Document> documents) { final var docs = documents.stream().map(document -> { final var embeddings = embeddingClient.embed(document); return new DocEntry(document.getId(), "", document.getContent(), embeddings); }).toList(); searchClient.uploadDocuments(docs); } @Override public Optional<Boolean> delete(List<String> idList) { final List<DocEntry> docIds = idList.stream().map(id -> DocEntry.builder().id(id).build()) .toList(); var results = searchClient.deleteDocuments(docIds); boolean resSuccess = true; for (IndexingResult result : results.getResults()) if (!result.isSucceeded()) { resSuccess = false; break; } return Optional.of(resSuccess); } @Override public List<Document> similaritySearch(String query) { return similaritySearch(query, DEFAULT_TOP_K); } @Override public List<Document> similaritySearch(String query, int k) { return similaritySearch(query, k, DEFAULT_SIMILARITY_THRESHOLD); } @Override public List<Document> similaritySearch(String query, int k, double threshold) { final var searchQueryVector = new RawVectorQuery() .setVector(toFloatList(embeddingClient.embed(query))) .setKNearestNeighborsCount(k) .setFields("contentVector"); final var searchResults = searchClient.search(null, new SearchOptions().setVectorQueries(searchQueryVector), Context.NONE); return searchResults.stream() .filter(r -> r.getScore() >= threshold) .map(r -> { final DocEntry entry = r.getDocument(DocEntry.class); final Document doc = new Document(entry.getId(), entry.getContent(), Collections.emptyMap()); doc.setEmbedding(entry.getContentVector()); return doc; }) .collect(Collectors.toList()); } private List<Float> toFloatList(List<Double> doubleList) { return doubleList.stream().map(Double::floatValue).toList(); } } @Data @Builder @Jacksonized @AllArgsConstructor @NoArgsConstructor static class DocEntry { private String id; private String hash; private String content; private List<Double> contentVector; } }
Wichtig
Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.
Navigieren Sie zurück zum Projektstammordner, und führen Sie die App mithilfe des folgenden Befehls aus:
./mvnw spring-boot:run
Output
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.5)
2023-11-07T14:40:45.250-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to AI service. One moment please...
Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Voraussetzungen
Azure-Abonnement – kostenloses Abonnement erstellen.
Die Azure CLI wird für die kennwortlose Authentifizierung in einer lokalen Entwicklungsumgebung verwendet. Erstellen Sie den erforderlichen Kontext, indem Sie sich mit der Azure CLI anmelden.
Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Referenzdokumentation | Quellcode | Paket (NPM) | Beispiele
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Siehe Hinzufügen Ihrer Daten mithilfe von Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPENAI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Initialisieren einer Node.js Anwendung
Erstellen Sie in einem Konsolenfenster (etwa cmd, PowerShell oder Bash) ein neues Verzeichnis für Ihre App, und rufen Sie es auf. Führen Sie dann den Befehl npm init
aus, um eine Knotenanwendung mit einer Datei des Typs package.json zu erstellen.
npm init
Installieren der Clientbibliothek
Installieren Sie den Azure OpenAI-Client und die Azure Identity-Bibliotheken für JavaScript mit npm:
npm install @azure/openai @azure/identity
Die Datei package.json Ihrer App wird mit den Abhängigkeiten aktualisiert.
Hinzufügen des JavaScript-Codes
Öffnen Sie am gewünschten Speicherort für das neue Projekt eine Eingabeaufforderung, und erstellen Sie eine neue Datei mit dem Namen
ChatWithOwnData.js
. Kopieren Sie den folgenden Code in dieChatWithOwnData.js
-Datei.const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); const { AzureOpenAI } = require("openai"); // Set the Azure and AI Search values from environment variables const endpoint = process.env["AZURE_OPENAI_ENDPOINT"]; const searchEndpoint = process.env["AZURE_AI_SEARCH_ENDPOINT"]; const searchIndex = process.env["AZURE_AI_SEARCH_INDEX"]; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = "gpt-4"; const apiVersion = "2024-07-01-preview"; function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });
Führen Sie die Anwendung mit dem folgenden Befehl aus:
node ChatWithOwnData.js
Wichtig
Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.
Ausgabe
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Voraussetzungen
Azure-Abonnement – kostenloses Abonnement erstellen.
Die Azure CLI wird für die kennwortlose Authentifizierung in einer lokalen Entwicklungsumgebung verwendet. Erstellen Sie den erforderlichen Kontext, indem Sie sich mit der Azure CLI anmelden.
Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Referenzdokumentation | Quellcode | Paket (NPM) | Beispiele
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Siehe Hinzufügen Ihrer Daten mithilfe von Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPENAI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Initialisieren einer Node.js Anwendung
Erstellen Sie in einem Konsolenfenster (etwa cmd, PowerShell oder Bash) ein neues Verzeichnis für Ihre App, und rufen Sie es auf. Führen Sie dann den Befehl npm init
aus, um eine Knotenanwendung mit einer Datei des Typs package.json zu erstellen.
npm init
Installieren der Clientbibliothek
Installieren Sie den Azure OpenAI-Client und die Azure Identity-Bibliotheken für JavaScript mit npm:
npm install openai @azure/identity @azure/openai
Die Abhängigkeit @azure/openai/types
ist enthalten, um das Azure OpenAI-Modell für die data_sources
-Eigenschaft zu erweitern. Dieser Import ist nur für TypeScript erforderlich.
Die Datei package.json Ihrer App wird mit den Abhängigkeiten aktualisiert.
Hinzufügen des TypeScript-Codes
Öffnen Sie am gewünschten Speicherort für das neue Projekt eine Eingabeaufforderung, und erstellen Sie eine neue Datei mit dem Namen
ChatWithOwnData.ts
. Kopieren Sie den folgenden Code in dieChatWithOwnData.ts
-Datei.import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import "@azure/openai/types"; // Set the Azure and AI Search values from environment variables const endpoint = process.env["AZURE_OPENAI_ENDPOINT"]; const searchEndpoint = process.env["AZURE_AI_SEARCH_ENDPOINT"]; const searchIndex = process.env["AZURE_AI_SEARCH_INDEX"]; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = "gpt-4"; const apiVersion = "2024-07-01-preview"; function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });
Erstellen Sie die Anwendung mit dem folgenden Befehl:
tsc
Führen Sie die Anwendung mit dem folgenden Befehl aus:
node ChatWithOwnData.js
Wichtig
Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.
Output
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Voraussetzungen
Die folgenden Ressourcen:
- Azure OpenAI
- Azure Blob Storage
- Azure KI Cognitive Search
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
- Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
- Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Referenz | Quellcode | Paket (pypi) | Beispiele
Diese Links verweisen auf die OpenAI-API für Python. Es gibt kein Azure-spezifisches OpenAI Python-SDK. Erfahren Sie, wie Sie zwischen den OpenAI-Diensten und Azure OpenAI-Diensten wechseln.
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Siehe Hinzufügen Ihrer Daten mithilfe von Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPENAI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Erstellen einer Python-Umgebung
- Erstellen Sie einen neuen Ordner namens openai-python für Ihr Projekt und eine neue Python-Codedatei mit dem Namen main.py. In dieses Verzeichnis wechseln:
mkdir openai-python
cd openai-python
- Installieren Sie die folgenden Python-Bibliotheken:
pip install openai
pip install python-dotenv
Erstellen der Python-App
- Öffnen Sie über das Projektverzeichnis die Datei main.py, und fügen Sie Folgendes hinzu:
import os
import openai
import dotenv
dotenv.load_dotenv()
endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
api_key = os.environ.get("AZURE_OPENAI_API_KEY")
deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_ID")
client = openai.AzureOpenAI(
azure_endpoint=endpoint,
api_key=api_key,
api_version="2024-02-01",
)
completion = client.chat.completions.create(
model=deployment,
messages=[
{
"role": "user",
"content": "What are my available health plans?",
},
],
extra_body={
"data_sources":[
{
"type": "azure_search",
"parameters": {
"endpoint": os.environ["AZURE_AI_SEARCH_ENDPOINT"],
"index_name": os.environ["AZURE_AI_SEARCH_INDEX"],
"authentication": {
"type": "api_key",
"key": os.environ["AZURE_AI_SEARCH_API_KEY"],
}
}
}
],
}
)
print(completion.model_dump_json(indent=2))
Wichtig
Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.
- Führen Sie den folgenden Befehl aus:
python main.py
Die Anwendung druckt die Antwort in einem JSON-Format, das für die Verwendung in vielen Szenarien geeignet ist. Sie enthält sowohl Antworten auf Ihre Abfrage als auch Zitate aus Ihren hochgeladenen Dateien.
Voraussetzungen
Die folgenden Ressourcen:
- Azure OpenAI
- Azure Blob Storage
- Azure KI Cognitive Search
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
- Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
- Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Siehe Hinzufügen Ihrer Daten mithilfe von Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPENAI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
PowerShell-Beispielbefehle
Die Azure OpenAI Optimieren-Chatmodelle sind für die Verwendung von Eingaben optimiert, die als Unterhaltung formatiert sind. Die Variable messages
übergibt ein Array von Wörterbüchern mit verschiedenen Rollen in der Unterhaltung, die nach System, Benutzer, Tool und Assistent abgegrenzt sind. Die dataSources
Variable stellt eine Verbindung mit Ihrem Azure Cognitive Search-Index her und ermöglicht es Azure OpenAI-Modellen, mithilfe Ihrer Daten zu reagieren.
Um eine Antwort des Modells auszulösen, sollte Sie mit einer Benutzernachricht enden, die angibt, dass nun der Assistent reagieren muss.
Tipp
Es gibt mehrere Parameter, mit denen Sie die Antwort des Modells ändern können, z. B. temperature
oder top_p
. Weitere Informationen finden Sie in der Referenzdokumentation.
# Azure OpenAI metadata variables
$openai = @{
api_key = $Env:AZURE_OPENAI_API_KEY
api_base = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
api_version = '2023-07-01-preview' # this may change in the future
name = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
}
$acs = @{
search_endpoint = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
search_key = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
}
# Completion text
$body = @{
dataSources = @(
@{
type = 'AzureCognitiveSearch'
parameters = @{
endpoint = $acs.search_endpoint
key = $acs.search_key
indexName = $acs.search_index
}
}
)
messages = @(
@{
role = 'user'
content = 'What are my available health plans?'
}
)
} | convertto-json -depth 5
# Header for authentication
$headers = [ordered]@{
'api-key' = $openai.api_key
}
# Send a completion call to generate an answer
$url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
return $response.choices.messages[1].content
Beispielausgabe
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Wichtig
Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie die PowerShell-Geheimnisverwaltung mit Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.
Chatten mit Ihrem Modell mithilfe einer Web-App
Um mit dem Azure OpenAI-Modell zu chatten, das Ihre Daten verwendet, können Sie eine Web-App mithilfe von Azure OpenAI Studio oder mithilfe von Beispielcode bereitstellen, den wir auf GitHub bereitstellen. Diese App wird mithilfe von Azure App Service bereitgestellt und bietet eine Benutzeroberfläche zum Senden von Abfragen. Diese App kann mit Azure OpenAI-Modellen verwendet werden, die Ihre Daten verwenden, oder mit Modellen, die Ihre Daten nicht verwenden. Anweisungen zu Anforderungen, zum Setup und zur Bereitstellung finden Sie in der Infodatei im Repository. Optional können Sie die Front-End- und Back-End-Logik der Web-App anpassen, indem Sie Änderungen am Quellcode vornehmen.
Voraussetzungen
Die folgenden Ressourcen:
- Azure OpenAI
- Azure Blob Storage
- Azure KI Cognitive Search
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
- Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
- Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Referenz | Quellcode | Paket (Go) | Beispiele
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Siehe Hinzufügen Ihrer Daten mithilfe von Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPENAI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
Erstellen einer Go-Umgebung
Erstellen Sie einen neuen Ordner namens openai-go für Ihr Projekt und eine neue Go-Codedatei mit dem Namen sample.go. In dieses Verzeichnis wechseln:
mkdir openai-go cd openai-go
Installieren Sie die folgenden Go-Pakete:
go get github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai
Aktivieren Sie die Abhängigkeitsnachverfolgung für Ihren Code.
go mod init example/azure-openai
Erstellen der Go-App
Öffnen Sie im Projektverzeichnis die Datei sample.go, und fügen Sie den folgenden Code hinzu:
package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" ) func main() { azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY") modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_ID") // Ex: "https://<your-azure-openai-host>.openai.azure.com" azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") // Azure AI Search configuration searchIndex := os.Getenv("AZURE_AI_SEARCH_INDEX") searchEndpoint := os.Getenv("AZURE_AI_SEARCH_ENDPOINT") searchAPIKey := os.Getenv("AZURE_AI_SEARCH_API_KEY") if azureOpenAIKey == "" || modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" { fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n") return } keyCredential := azcore.NewKeyCredential(azureOpenAIKey) // In Azure OpenAI you must deploy a model before you can use it in your client. For more information // see here: https://learn.microsoft.com/azure/cognitive-services/openai/how-to/create-resource client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil) if err != nil { // TODO: Update the following line with your application specific error handling logic log.Fatalf("ERROR: %s", err) } resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{ Messages: []azopenai.ChatRequestMessageClassification{ &azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What are my available health plans?")}, }, MaxTokens: to.Ptr[int32](512), AzureExtensionsOptions: []azopenai.AzureChatExtensionConfigurationClassification{ &azopenai.AzureSearchChatExtensionConfiguration{ // This allows Azure OpenAI to use an Azure AI Search index. // // > Because the model has access to, and can reference specific sources to support its responses, answers are not only based on its pretrained knowledge // > but also on the latest information available in the designated data source. This grounding data also helps the model avoid generating responses // > based on outdated or incorrect information. // // Quote from here: https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/use-your-data Parameters: &azopenai.AzureSearchChatExtensionParameters{ Endpoint: &searchEndpoint, IndexName: &searchIndex, Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{ Key: &searchAPIKey, }, }, }, }, DeploymentName: &modelDeploymentID, }, nil) if err != nil { // TODO: Update the following line with your application specific error handling logic log.Fatalf("ERROR: %s", err) } fmt.Fprintf(os.Stderr, "Extensions Context Role: %s\nExtensions Context (length): %d\n", *resp.Choices[0].Message.Role, len(*resp.Choices[0].Message.Content)) fmt.Fprintf(os.Stderr, "ChatRole: %s\nChat content: %s\n", *resp.Choices[0].Message.Role, *resp.Choices[0].Message.Content, ) }
Wichtig
Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.
Führen Sie den folgenden Befehl aus:
go run sample.go
Die Anwendung druckt die Antwort, einschließlich der Antworten auf Ihre Abfrage und Zitate aus Ihren hochgeladenen Dateien.
Voraussetzungen
Die folgenden Ressourcen:
- Azure OpenAI
- Azure Blob Storage
- Azure KI Cognitive Search
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region mit einem unterstützten Modell bereitgestellt wurde.
- Stellen Sie sicher, dass Ihnen mindestens die Rolle Mitwirkender für Cognitive Services für die Azure OpenAI-Ressource zugewiesen ist.
- Laden Sie die Beispieldaten von GitHub herunter, wenn Sie keine eigenen Daten haben.
Hinzufügen Ihrer Daten mithilfe von Azure OpenAI Studio
Tipp
Sie können die Azure Developer CLI verwenden, um programmgesteuert die erforderlichen Ressourcen für Azure OpenAI für Ihre Daten zu erstellen.
Navigieren Sie zu Azure KI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre Azure OpenAI-Ressource haben.
Sie können entweder ein KI Studio-Projekt erstellen, indem Sie auf Projekt erstellen klicken oder direkt fortfahren, indem Sie auf den Button auf der Kachel Fokus auf Azure OpenAI Service klicken.
Wählen Sie Chat unter Playgrounds im linken Navigationsmenü aus, und wählen Sie Ihre Modellimplementierung aus.
Wählen Sie im Chat-Playground die Option Daten hinzufügen und dann Datenquelle hinzufügen aus.
Wählen Sie im daraufhin angezeigten Bereich unter Datenquelle auswählen die Option Dateien hochladen (Vorschau) aus. Azure OpenAI benötigt sowohl eine Speicherressource als auch eine Suchressource, um auf Ihre Daten zuzugreifen und diese zu indizieren.
Tipp
- Weitere Informationen finden Sie in der folgenden Ressource:
- Für Dokumente und Datasets mit langem Text empfehlen wir die Verwendung des verfügbaren Datenaufbereitungsskripts.
Damit Azure OpenAI auf Ihr Speicherkonto zugreifen kann, müssen Sie die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) aktivieren. Wenn CORS für die Azure Blob Storage-Ressource noch nicht aktiviert ist, wählen Sie CORS aktivieren aus.
Wählen Sie Ihre Azure KI Search-Ressource und dann die Bestätigung, dass die Verbindung für Ihr Konto genutzt wird, aus. Wählen Sie Weiteraus.
Wählen Sie im Bereich Dateien hochladen die Option Nach einer Datei suchen aus, und wählen Sie die Dateien aus, die Sie aus dem Abschnitt Voraussetzungen oder Ihren eigenen Daten heruntergeladen haben. Wählen Sie dann Dateien hochladen aus. Wählen Sie Weiteraus.
Im Bereich Datenverwaltung können Sie auswählen, ob die semantische Suche oder die Vektorsuche für Ihren Index aktiviert werden soll.
Wichtig
- Für die semantische Suche und die Vektorsuche fallen zusätzliche Gebühren an. Sie müssen die SKU "Basic" oder eine höhere SKU auswählen, um die semantische Suche oder die Vektorsuche zu aktivieren. Weitere Informationen finden Sie unter Tarifdifferenz und Diensteinschränkungen.
- Um die Qualität des Informationsabrufs und der Modellantwort zu verbessern, wird empfohlen, die semantische Suche für die folgenden Datenquellensprachen zu aktivieren: Englisch, Französisch, Spanisch, Portugiesisch, Italienisch, Deutsch, Chinesisch (Zh), Japanisch, Koreanisch, Russisch und Arabisch.
Überprüfen Sie die eingegebenen Details, und wählen Sie Speichern und schließen aus. Sie können jetzt mit dem Modell chatten, und es verwendet Informationen aus Ihren Daten, um Antworten zu erstellen.
Abrufen erforderlicher Variablen
Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie folgende Variablen. In diesem Schnellstart wird davon ausgegangen, dass Sie Ihre Daten in ein Azure Blob Storage-Konto hochgeladen und einen Azure KI Search-Index erstellt haben. Siehe Hinzufügen Ihrer Daten mithilfe von Azure KI Studio.
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure KI Studio>Chatplayground>Codeansicht. Ein Beispielendpunkt ist https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Diesen Wert finden Sie im Abschnitt Ressourcenverwaltung>Schlüssel und Endpunkt, wenn Sie die Azure OpenAI-Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_OPENAI_DEPLOYMENT_ID |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure KI Studio unter Verwaltung>Bereitstellungen. |
AZURE_AI_SEARCH_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. |
AZURE_AI_SEARCH_API_KEY |
Diesen Wert finden Sie im Abschnitt Einstellungen>Schlüssel, wenn Sie die Azure KI Search-Ressource über das Azure-Portal untersuchen. Sie können entweder den primären oder den sekundären Administratorschlüssel verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen. |
AZURE_AI_SEARCH_INDEX |
Dieser Wert entspricht dem Namen des Indexes, den Sie zum Speichern Ihrer Daten erstellt haben. Sie finden ihn im Abschnitt Übersicht, wenn Sie die Azure KI Search-Ressource aus dem Azure-Portal untersuchen. |
Umgebungsvariablen
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_ENDPOINT REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
setx AZURE_OPENAI_API_KEY REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
setx AZURE_OPENAI_DEPLOYMENT_ID REPLACE_WITH_YOUR_AOAI_DEPLOYMENT_VALUE_HERE
setx AZURE_AI_SEARCH_ENDPOINT REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
setx AZURE_AI_SEARCH_API_KEY REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
setx AZURE_AI_SEARCH_INDEX REPLACE_WITH_YOUR_INDEX_NAME_HERE
CURL-Beispielbefehl
Die Azure OpenAI Optimieren-Chatmodelle sind für die Verwendung von Eingaben optimiert, die als Unterhaltung formatiert sind. Die Variable messages
übergibt ein Array von Wörterbüchern mit verschiedenen Rollen in der Unterhaltung, die nach System, Benutzer, Tool und Assistent abgegrenzt sind. Die Variable dataSources
stellt eine Verbindung mit Ihrem Azure KI Search-Index her und ermöglicht es Azure OpenAI-Modellen, mithilfe Ihrer Daten zu reagieren.
Um eine Antwort des Modells auszulösen, sollte Sie mit einer Benutzernachricht enden, die angibt, dass nun der Assistent reagieren muss.
Tipp
Es gibt mehrere Parameter, mit denen Sie die Antwort des Modells ändern können, z. B. temperature
oder top_p
. Weitere Informationen finden Sie in der Referenzdokumentation.
curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_ID/chat/completions?api-version=2024-02-15-preview \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"key": "'$AZURE_AI_SEARCH_API_KEY'",
"index_name": "'$AZURE_AI_SEARCH_INDEX'"
}
}
],
"messages": [
{
"role": "user",
"content": "What are my available health plans?"
}
]
}
'
Beispielausgabe
{
"id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
"model": "gpt-4",
"created": 1709835345,
"object": "extensions.chat.completion",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
"end_turn": true,
"context": {
"citations": [
{
"content": "...",
"title": "...",
"url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
"filepath": "001.txt",
"chunk_id": "0"
}
],
"intent": "[\"Available health plans\"]"
}
}
}
],
"usage": {
"prompt_tokens": 3779,
"completion_tokens": 105,
"total_tokens": 3884
}
}
Chatten mit Ihrem Modell mithilfe einer Web-App
Um mit dem Azure OpenAI-Modell zu chatten, das Ihre Daten verwendet, können Sie eine Web-App mithilfe von Azure OpenAI Studio oder mithilfe von Beispielcode bereitstellen, den wir auf GitHub bereitstellen. Diese App wird mithilfe von Azure App Service bereitgestellt und bietet eine Benutzeroberfläche zum Senden von Abfragen. Diese App kann mit Azure OpenAI-Modellen verwendet werden, die Ihre Daten verwenden, oder mit Modellen, die Ihre Daten nicht verwenden. Anweisungen zu Anforderungen, zum Setup und zur Bereitstellung finden Sie in der Infodatei im Repository. Optional können Sie die Front-End- und Back-End-Logik der Web-App anpassen, indem Sie Änderungen am Quellcode vornehmen.
Bereinigen von Ressourcen
Wenn Sie eine Azure OpenAI- oder Azure KI-Suche-Ressource bereinigen und entfernen möchten, können Sie die Ressource selbst oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.
Nächste Schritte
- Weitere Informationen zur Verwendung Ihrer Daten in Azure OpenAI Service
- Beispielcode für die Chat-App auf GitHub