Quickstart: Chatten met Azure OpenAI-modellen met uw eigen gegevens
In deze quickstart kunt u uw eigen gegevens gebruiken met Azure OpenAI-modellen. Door de modellen van Azure OpenAI op uw gegevens te gebruiken, beschikt u over een krachtig AI-platform voor gesprekken dat snellere en nauwkeurigere communicatie mogelijk maakt.
Vereisten
De volgende resources:
- Azure OpenAI
- Azure Blob-opslag
- Azure AI Search
- Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
- Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Chatspeeltuin
Begin met het verkennen van de mogelijkheden van Azure OpenAI met een no-code-benadering via de chatspeelplaats. Het is gewoon een tekstvak waarin u een prompt kunt indienen om een voltooiing te genereren. Op deze pagina kunt u snel herhalen en experimenteren met de mogelijkheden.
De speeltuin biedt u opties om uw chatervaring aan te passen. Aan de rechterkant kunt u Implementatie selecteren om te bepalen welk model een antwoord genereert met behulp van de zoekresultaten uit uw index. U kiest het aantal eerdere berichten dat u wilt opnemen als gespreksgeschiedenis voor toekomstige gegenereerde antwoorden. Gespreksgeschiedenis geeft context voor het genereren van gerelateerde antwoorden, maar verbruikt ook tokengebruik. De voortgangsindicator van het invoertoken houdt het aantal tokens bij van de vraag die u indient.
De geavanceerde instellingen aan de linkerkant zijn runtimeparameters, waarmee u controle hebt over het ophalen en doorzoeken van relevante informatie uit uw gegevens. Een goed gebruiksvoorbeeld is wanneer u ervoor wilt zorgen dat antwoorden alleen worden gegenereerd op basis van uw gegevens of als u vindt dat het model geen antwoord kan genereren op basis van bestaande informatie over uw gegevens.
Striktheid bepaalt de sterkte van het systeem bij het filteren van zoekdocumenten op basis van hun overeenkomstenscores. Het instellen van striktheid op 5 geeft aan dat het systeem documenten agressief uitfiltert, waarbij een zeer hoge gelijkenisdrempel wordt toegepast. Semantische zoekopdrachten kunnen in dit scenario nuttig zijn, omdat de classificatiemodellen een betere taak hebben om de intentie van de query uit te stellen. Lagere striktheidsniveaus produceren uitgebreidere antwoorden, maar bevatten mogelijk ook informatie die zich niet in uw index bevindt. Dit is standaard ingesteld op 3.
Opgehaalde documenten zijn een geheel getal dat kan worden ingesteld op 3, 5, 10 of 20 en bepaalt het aantal documentsegmenten dat aan het grote taalmodel is verstrekt voor het formuleren van het uiteindelijke antwoord. Dit is standaard ingesteld op 5.
Wanneer antwoorden op uw gegevens beperken is ingeschakeld, probeert het model alleen te vertrouwen op uw documenten voor antwoorden. Dit is standaard ingesteld op true.
Uw eerste query verzenden. De chatmodellen presteren het beste in vraag- en antwoordoefeningen. Bijvoorbeeld 'Wat zijn mijn beschikbare gezondheidsplannen?' of 'Wat is de status plusoptie?'.
Query's waarvoor gegevensanalyse is vereist, mislukken waarschijnlijk, zoals 'Welk statusplan is het populairst?'. Query's waarvoor informatie over al uw gegevens is vereist, mislukken waarschijnlijk ook, zoals 'Hoeveel documenten heb ik geüpload?'. Houd er rekening mee dat de zoekmachine zoekt naar segmenten met exacte of vergelijkbare termen, woordgroepen of constructie voor de query. En hoewel het model de vraag misschien begrijpt, is het niet de juiste informatie om dat soort vragen te beantwoorden als zoekresultaten segmenten uit de gegevensset zijn.
Chats worden beperkt door het aantal documenten (segmenten) dat wordt geretourneerd in het antwoord (beperkt tot 3-20 in azure OpenAI Studio-speeltuin). Zoals u zich kunt voorstellen, is het stellen van een vraag over 'alle titels' een volledige scan van het hele vectorarchief vereist.
Uw model implementeren
Zodra u tevreden bent met de ervaring in Azure OpenAI Studio, kunt u rechtstreeks vanuit Studio een web-app implementeren door de knop Implementeren te selecteren.
Dit biedt u de mogelijkheid om te implementeren in een zelfstandige webtoepassing of een copilot in Copilot Studio (preview) als u uw eigen gegevens op het model gebruikt.
Als u er bijvoorbeeld voor kiest om een web-app te implementeren:
De eerste keer dat u een web-app implementeert, selecteert u Een nieuwe web-app maken. Kies een naam voor de app, die deel gaat uitmaken van de APP-URL. Bijvoorbeeld: https://<appname>.azurewebsites.net
.
Selecteer uw abonnement, resourcegroep, locatie en prijsplan voor de gepubliceerde app. Als u een bestaande app wilt bijwerken, selecteert u Publiceren naar een bestaande web-app en kiest u de naam van uw vorige app in de vervolgkeuzelijst.
Als u ervoor kiest om een web-app te implementeren, raadpleegt u de belangrijke overwegingen voor het gebruik ervan.
Vereisten
De volgende resources:
- Azure OpenAI
- Azure Blob-opslag
- Azure AI Search
- Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
- Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
- De .NET 8 SDK
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Vereiste variabelen ophalen
Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie Uw gegevens toevoegen met Behulp van Azure AI Studio
Naam van de variabele | Weergegeven als |
---|---|
AZURE_OPENAI_ENDPOINT |
Deze waarde vindt u in de sectie Sleutels en eindpunten bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt ook de waarde vinden in de codeweergave voor chatspeeltuinen>van Azure AI Studio>. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Deze waarde vindt u in de sectie Sleutels en eindpunten voor resourcebeheer>bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt KEY1 of KEY2 gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_OPENAI_DEPLOYMENT_ID |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. Deze waarde vindt u onder ResourceBeheer-implementaties> in Azure Portal of ook onder Beheerimplementaties> in Azure AI Studio. |
AZURE_AI_SEARCH_ENDPOINT |
Deze waarde vindt u in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Deze waarde vindt u in de sectie Instellingensleutels> bij het controleren van uw Azure AI Search-resource vanuit Azure Portal. U kunt de primaire beheerderssleutel of secundaire beheerderssleutel gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_AI_SEARCH_INDEX |
Deze waarde komt overeen met de naam van de index die u hebt gemaakt om uw gegevens op te slaan. U vindt deze in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
Omgevingsvariabelen
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-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
Een nieuwe .NET Core-app maken
Gebruik in een consolevenster (zoals cmd, PowerShell of Bash) de opdracht dotnet new
om een nieuwe console-app te maken met de naam azure-openai-quickstart
. Met deze opdracht maakt u een eenvoudig 'Hallo wereld'-project met één C#-bronbestand: Program.cs.
dotnet new console -n azure-openai-quickstart
Wijzig uw map in de zojuist gemaakte app-map. U kunt de toepassing maken met:
dotnet build
De build-uitvoer mag geen waarschuwingen of fouten bevatten.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Installeer de OpenAI .NET-clientbibliotheek met:
dotnet add package Azure.AI.OpenAI --prerelease
Open in de projectmap het Program.cs-bestand en vervang de inhoud door de volgende code:
Zonder antwoordstreaming
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}");
}
Belangrijk
Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het artikel over beveiliging van Azure AI-services voor meer informatie over referentiebeveiliging.
dotnet run program.cs
Uitvoer
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
Dit wacht totdat het model het volledige antwoord heeft gegenereerd voordat de resultaten worden afgedrukt. Als u het antwoord asynchroon wilt streamen en de resultaten wilt afdrukken, kunt u de inhoud van Program.cs vervangen door de code in het volgende voorbeeld.
Asynchroon met 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}");
}
Vereisten
De volgende resources:
- Azure OpenAI
- Azure Blob-opslag
- Azure AI Search
- Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
- Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Vereiste variabelen ophalen
Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie Uw gegevens toevoegen met Behulp van Azure AI Studio voor meer informatie.
Naam van de variabele | Weergegeven als |
---|---|
AZURE_OPENAI_ENDPOINT |
U vindt deze waarde in de sectie Sleutels en eindpunten wanneer u uw Azure OpenAI-resource bekijkt vanuit Azure Portal. U kunt ook de waarde vinden in de codeweergave voor chatspeeltuinen>van Azure AI Studio>. Een voorbeeldeindpunt is: https://my-resource.openai.azure.com . |
AZURE_OPENAI_API_KEY |
U vindt deze waarde in de sectie Sleutels en eindpunten voor resourcebeheer>wanneer u uw Azure OpenAI-resource bekijkt vanuit Azure Portal. U kunt KEY1 of KEY2 gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. U vindt deze waarde onder Resource Management-implementaties> in Azure Portal of ook onder Beheerimplementaties> in Azure AI Studio. |
AZURE_AI_SEARCH_ENDPOINT |
U vindt deze waarde in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
U vindt deze waarde in de sectie Instellingensleutels> wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. U kunt de primaire beheerderssleutel of secundaire beheerderssleutel gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_AI_SEARCH_INDEX |
Deze waarde komt overeen met de naam van de index die u hebt gemaakt om uw gegevens op te slaan. U vindt deze in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
Omgevingsvariabelen
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.
Notitie
In Spring AI wordt de modelnaam standaard ingesteld op gpt-35-turbo
. Het is alleen nodig om de SPRING_AI_AZURE_OPENAI_MODEL
waarde op te geven als u een model met een andere naam hebt geïmplementeerd.
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
Een nieuwe Spring-toepassing maken
Spring AI biedt momenteel geen ondersteuning voor de AzureCognitiveSearchChatExtensionConfiguration
opties waarmee een Azure AI-query de rag-methode (Retrieval Augmented Generation) kan inkapselen en de details van de gebruiker kan verbergen. Als alternatief kunt u de RAG-methode nog steeds rechtstreeks in uw toepassing aanroepen om gegevens in uw Azure AI Search-index op te vragen en opgehaalde documenten te gebruiken om uw query te verbeteren.
Spring AI ondersteunt een VectorStore-abstractie en u kunt Azure AI Search verpakken in een Spring AI VectorStore-implementatie om query's uit te voeren op uw aangepaste gegevens. In het volgende project wordt een aangepaste VectorStore geïmplementeerd die wordt ondersteund door Azure AI Search en worden RAG-bewerkingen rechtstreeks uitgevoerd.
Maak in een Bash-venster een nieuwe map voor uw app en navigeer ernaartoe.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
Voer de opdracht spring init
uit vanuit uw werkmap. Met deze opdracht maakt u een standaardmapstructuur voor uw Spring-project, inclusief het belangrijkste Bronbestand van Java-klasse en het pom.xml-bestand dat wordt gebruikt voor het beheren van op Maven gebaseerde projecten.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
De gegenereerde bestanden en mappen lijken op de volgende structuur:
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-toepassing bewerken
Bewerk het pom.xml bestand.
Open vanuit de hoofdmap van de projectmap het pom.xml-bestand in de gewenste editor of IDE en overschrijf het bestand met de volgende inhoud:
<?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>
Open in de map src/main/java/com/example/aicustomdatademo AiCustomDataApplication.java in de gewenste editor of IDE en plak de volgende code:
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; } }
Belangrijk
Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het artikel over beveiliging van Azure AI-services voor meer informatie over referentiebeveiliging.
Ga terug naar de hoofdmap van het project en voer de app uit met behulp van de volgende opdracht:
./mvnw spring-boot:run
Uitvoer
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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.
Vereisten
Een Azure-abonnement: maak er gratis een.
Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Voorbeelden van broncodepakket (npm) | referentiedocumentatie | |
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Vereiste variabelen ophalen
Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie Uw gegevens toevoegen met Behulp van Azure AI Studio
Naam van de variabele | Weergegeven als |
---|---|
AZURE_OPENAI_ENDPOINT |
Deze waarde vindt u in de sectie Sleutels en eindpunten bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt ook de waarde vinden in de codeweergave voor chatspeeltuinen>van Azure AI Studio>. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Deze waarde vindt u in de sectie Sleutels en eindpunten voor resourcebeheer>bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt KEY1 of KEY2 gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_OPENAI_DEPLOYMENT_ID |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. Deze waarde vindt u onder ResourceBeheer-implementaties> in Azure Portal of ook onder Beheerimplementaties> in Azure AI Studio. |
AZURE_AI_SEARCH_ENDPOINT |
Deze waarde vindt u in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Deze waarde vindt u in de sectie Instellingensleutels> bij het controleren van uw Azure AI Search-resource vanuit Azure Portal. U kunt de primaire beheerderssleutel of secundaire beheerderssleutel gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_AI_SEARCH_INDEX |
Deze waarde komt overeen met de naam van de index die u hebt gemaakt om uw gegevens op te slaan. U vindt deze in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
Omgevingsvariabelen
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-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
Een Node-toepassing maken
Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor de app, en navigeer naar deze map. Voer vervolgens de npm init
opdracht uit om een knooppunttoepassing te maken met een package.json-bestand .
npm init
De clientbibliotheek installeren
Installeer de Azure OpenAI-client en Azure Identity-bibliotheken voor JavaScript met npm:
npm install openai @azure/identity @azure/openai
De @azure/openai/types
afhankelijkheid is opgenomen om het Azure OpenAI-model voor de data_sources
eigenschap uit te breiden. Deze import is alleen nodig voor TypeScript.
Het package.json-bestand van uw app wordt bijgewerkt met de afhankelijkheden.
Een voorbeeldtoepassing maken
Open een opdrachtprompt waar u het nieuwe project wilt en maak een nieuw bestand met de naam
ChatWithOwnData.ts
. Kopieer de volgende code naar hetChatWithOwnData.ts
bestand.import "dotenv/config"; import { AzureOpenAI } from "openai"; import "@azure/openai/types"; // Set the Azure and AI Search values from environment variables const endpoint = process.env["AZURE_OPENAI_ENDPOINT"]; const apiKey = process.env["AZURE_OPENAI_API_KEY"]; const searchEndpoint = process.env["AZURE_AI_SEARCH_ENDPOINT"]; const searchKey = process.env["AZURE_AI_SEARCH_API_KEY"]; const searchIndex = process.env["AZURE_AI_SEARCH_INDEX"]; // 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, apiKey, 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); });
Bouw de toepassing met de volgende opdracht:
tsc
Voer de toepassing uit met de volgende opdracht:
node ChatWithOwnData.js
Belangrijk
Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het artikel over beveiliging van Azure AI-services voor meer informatie over referentiebeveiliging.
Uitvoer
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.
Vereisten
De volgende resources:
- Azure OpenAI
- Azure Blob-opslag
- Azure AI Search
- Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
- Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Voorbeelden van referentiebroncodepakket | | (pypi) |
Deze koppelingen verwijzen naar de OpenAI-API voor Python. Er is geen Azure-specifieke OpenAI Python SDK. Meer informatie over het schakelen tussen de OpenAI-services en Azure OpenAI-services.
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Vereiste variabelen ophalen
Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie Uw gegevens toevoegen met Behulp van Azure AI Studio
Naam van de variabele | Weergegeven als |
---|---|
AZURE_OPENAI_ENDPOINT |
Deze waarde vindt u in de sectie Sleutels en eindpunten bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt ook de waarde vinden in de codeweergave voor chatspeeltuinen>van Azure AI Studio>. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Deze waarde vindt u in de sectie Sleutels en eindpunten voor resourcebeheer>bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt KEY1 of KEY2 gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_OPENAI_DEPLOYMENT_ID |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. Deze waarde vindt u onder ResourceBeheer-implementaties> in Azure Portal of ook onder Beheerimplementaties> in Azure AI Studio. |
AZURE_AI_SEARCH_ENDPOINT |
Deze waarde vindt u in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Deze waarde vindt u in de sectie Instellingensleutels> bij het controleren van uw Azure AI Search-resource vanuit Azure Portal. U kunt de primaire beheerderssleutel of secundaire beheerderssleutel gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_AI_SEARCH_INDEX |
Deze waarde komt overeen met de naam van de index die u hebt gemaakt om uw gegevens op te slaan. U vindt deze in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
Omgevingsvariabelen
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-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
Een Python-omgeving maken
- Maak een nieuwe map met de naam openai-python voor uw project en een nieuw Python-codebestand met de naam main.py. Ga naar die map:
mkdir openai-python
cd openai-python
- Installeer de volgende Python-bibliotheken:
pip install openai
pip install python-dotenv
De Python-app maken
- Open in de projectmap het main.py-bestand en voeg de volgende code toe:
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))
Belangrijk
Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het artikel over beveiliging van Azure AI-services voor meer informatie over referentiebeveiliging.
- Voer de volgende opdracht uit:
python main.py
De toepassing drukt het antwoord af in een JSON-indeling die geschikt is voor gebruik in veel scenario's. Het bevat zowel antwoorden op uw query als bronvermeldingen uit uw geüploade bestanden.
Vereisten
De volgende resources:
- Azure OpenAI
- Azure Blob-opslag
- Azure AI Search
- Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
- Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Vereiste variabelen ophalen
Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie Uw gegevens toevoegen met Behulp van Azure AI Studio
Naam van de variabele | Weergegeven als |
---|---|
AZURE_OPENAI_ENDPOINT |
Deze waarde vindt u in de sectie Sleutels en eindpunten bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt ook de waarde vinden in de codeweergave voor chatspeeltuinen>van Azure AI Studio>. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Deze waarde vindt u in de sectie Sleutels en eindpunten voor resourcebeheer>bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt KEY1 of KEY2 gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_OPENAI_DEPLOYMENT_ID |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. Deze waarde vindt u onder ResourceBeheer-implementaties> in Azure Portal of ook onder Beheerimplementaties> in Azure AI Studio. |
AZURE_AI_SEARCH_ENDPOINT |
Deze waarde vindt u in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Deze waarde vindt u in de sectie Instellingensleutels> bij het controleren van uw Azure AI Search-resource vanuit Azure Portal. U kunt de primaire beheerderssleutel of secundaire beheerderssleutel gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_AI_SEARCH_INDEX |
Deze waarde komt overeen met de naam van de index die u hebt gemaakt om uw gegevens op te slaan. U vindt deze in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
Omgevingsvariabelen
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-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
Voorbeelden van PowerShell-opdrachten
De Azure OpenAI-chatmodellen zijn geoptimaliseerd voor gebruik met invoer die is opgemaakt als een gesprek. De messages
variabele geeft een matrix van woordenlijsten door met verschillende rollen in het gesprek dat is uitgelijnd door systeem, gebruiker, hulpprogramma en assistent. De dataSources
variabele maakt verbinding met uw Azure Cognitive Search-index en stelt Azure OpenAI-modellen in staat om te reageren met behulp van uw gegevens.
Als u een reactie van het model wilt activeren, moet u eindigen met een gebruikersbericht dat aangeeft dat het de beurt is van de assistent om te reageren.
Tip
Er zijn verschillende parameters die u kunt gebruiken om het antwoord van het model te wijzigen, zoals temperature
of top_p
. Raadpleeg de referentiedocumentatie voor meer informatie.
# 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
Voorbeelduitvoer
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Belangrijk
Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Het PowerShell-geheimbeheer met Azure Key Vault. Zie het artikel over beveiliging van Azure AI-services voor meer informatie over referentiebeveiliging.
Chatten met uw model met behulp van een web-app
Als u wilt chatten met het Azure OpenAI-model dat gebruikmaakt van uw gegevens, kunt u een web-app implementeren met behulp van Azure OpenAI Studio of voorbeeldcode die we op GitHub bieden. Deze app wordt geïmplementeerd met behulp van Azure App Service en biedt een gebruikersinterface voor het verzenden van query's. Deze app kan worden gebruikt met Azure OpenAI-modellen die gebruikmaken van uw gegevens of modellen die uw gegevens niet gebruiken. Zie het leesmij-bestand in de opslagplaats voor instructies over vereisten, installatie en implementatie. U kunt desgewenst de front-end- en back-endlogica van de web-app aanpassen door wijzigingen aan te brengen in de broncode.
Vereisten
De volgende resources:
- Azure OpenAI
- Azure Blob-opslag
- Azure AI Search
- Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
- Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Voorbeelden van broncodepakket | (Go) | -referentie |
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Vereiste variabelen ophalen
Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie Uw gegevens toevoegen met Behulp van Azure AI Studio
Naam van de variabele | Weergegeven als |
---|---|
AZURE_OPENAI_ENDPOINT |
Deze waarde vindt u in de sectie Sleutels en eindpunten bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt ook de waarde vinden in de codeweergave voor chatspeeltuinen>van Azure AI Studio>. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Deze waarde vindt u in de sectie Sleutels en eindpunten voor resourcebeheer>bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt KEY1 of KEY2 gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_OPENAI_DEPLOYMENT_ID |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. Deze waarde vindt u onder ResourceBeheer-implementaties> in Azure Portal of ook onder Beheerimplementaties> in Azure AI Studio. |
AZURE_AI_SEARCH_ENDPOINT |
Deze waarde vindt u in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Deze waarde vindt u in de sectie Instellingensleutels> bij het controleren van uw Azure AI Search-resource vanuit Azure Portal. U kunt de primaire beheerderssleutel of secundaire beheerderssleutel gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_AI_SEARCH_INDEX |
Deze waarde komt overeen met de naam van de index die u hebt gemaakt om uw gegevens op te slaan. U vindt deze in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
Omgevingsvariabelen
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-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
Een Go-omgeving maken
Maak een nieuwe map met de naam openai-go voor uw project en een nieuw Go-codebestand met de naam sample.go. Ga naar die map:
mkdir openai-go cd openai-go
Installeer de volgende Go-pakketten:
go get github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai
Schakel het bijhouden van afhankelijkheden in voor uw code.
go mod init example/azure-openai
De Go-app maken
Open in de projectmap het bestand sample.go en voeg de volgende code toe:
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, ) }
Belangrijk
Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het artikel over beveiliging van Azure AI-services voor meer informatie over referentiebeveiliging.
Voer de volgende opdracht uit:
go run sample.go
De toepassing drukt het antwoord af, inclusief antwoorden op uw query en bronvermeldingen uit uw geüploade bestanden.
Vereisten
De volgende resources:
- Azure OpenAI
- Azure Blob-opslag
- Azure AI Search
- Een Azure OpenAI-resource die is geïmplementeerd in een ondersteunde regio en met een ondersteund model.
- Zorg ervoor dat u ten minste de rol Cognitive Services-inzender voor de Azure OpenAI-resource hebt toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Uw gegevens toevoegen met Behulp van Azure OpenAI Studio
Tip
U kunt de Azure Developer CLI gebruiken om programmatisch de resources te maken die nodig zijn voor Azure OpenAI op uw gegevens
Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens of na de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Selecteer de tegel Bring Your Own Data
Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe
Selecteer bestanden uploaden (preview) onder Gegevensbron selecteren in het deelvenster dat wordt weergegeven. Azure OpenAI heeft zowel een opslagresource als een zoekresource nodig om uw gegevens te kunnen openen en indexeren.
Tip
- Zie de volgende resource voor meer informatie:
- Voor documenten en gegevenssets met lange tekst raden we u aan het beschikbare script voor gegevensvoorbereiding te gebruiken.
Voor toegang tot uw opslagaccount moet u Cross-Origin Resource Sharing (CORS) inschakelen voor Azure OpenAI. Als CORS nog niet is ingeschakeld voor de Azure Blob Storage-resource, selecteert u CORS inschakelen.
Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat er gebruik wordt gemaakt voor uw account. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload in de sectie Vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Selecteer Volgende.
In het deelvenster Gegevensbeheer kunt u kiezen of u semantische zoekopdrachten of vectorzoekopdrachten voor uw index wilt inschakelen.
Belangrijk
- Semantische zoekopdrachten en vectorzoekopdrachten zijn onderhevig aan aanvullende prijzen. U moet Basic of hoger SKU kiezen om semantische zoekopdrachten of vectorzoekopdrachten in te schakelen. Zie het verschil in prijscategorieën en servicelimieten voor meer informatie.
- Om de kwaliteit van het ophalen van gegevens en modelreacties te verbeteren, raden we u aan semantische zoekopdrachten in te schakelen voor de volgende gegevensbrontalen: Engels, Frans, Spaans, Portugees, Italiaans, Duitsland, Chinees (Zh), Japans, Koreaans, Russisch en Arabisch.
Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.
Vereiste variabelen ophalen
Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie Uw gegevens toevoegen met Behulp van Azure AI Studio
Naam van de variabele | Weergegeven als |
---|---|
AZURE_OPENAI_ENDPOINT |
Deze waarde vindt u in de sectie Sleutels en eindpunten bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt ook de waarde vinden in de codeweergave voor chatspeeltuinen>van Azure AI Studio>. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
AZURE_OPENAI_API_KEY |
Deze waarde vindt u in de sectie Sleutels en eindpunten voor resourcebeheer>bij het onderzoeken van uw Azure OpenAI-resource vanuit Azure Portal. U kunt KEY1 of KEY2 gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_OPENAI_DEPLOYMENT_ID |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. Deze waarde vindt u onder ResourceBeheer-implementaties> in Azure Portal of ook onder Beheerimplementaties> in Azure AI Studio. |
AZURE_AI_SEARCH_ENDPOINT |
Deze waarde vindt u in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
AZURE_AI_SEARCH_API_KEY |
Deze waarde vindt u in de sectie Instellingensleutels> bij het controleren van uw Azure AI Search-resource vanuit Azure Portal. U kunt de primaire beheerderssleutel of secundaire beheerderssleutel gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder een serviceonderbreking te veroorzaken. |
AZURE_AI_SEARCH_INDEX |
Deze waarde komt overeen met de naam van de index die u hebt gemaakt om uw gegevens op te slaan. U vindt deze in de sectie Overzicht wanneer u uw Azure AI Search-resource bekijkt vanuit Azure Portal. |
Omgevingsvariabelen
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Als u een API-sleutel gebruikt, slaat u deze veilig op ergens anders op, zoals in Azure Key Vault. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar.
Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-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
Voorbeeld van cURL-opdrachten
De Azure OpenAI-chatmodellen zijn geoptimaliseerd voor gebruik met invoer die is opgemaakt als een gesprek. De messages
variabele geeft een matrix van woordenlijsten door met verschillende rollen in het gesprek dat is uitgelijnd door systeem, gebruiker, hulpprogramma en assistent. De dataSources
variabele maakt verbinding met uw Azure AI Search-index en stelt Azure OpenAI-modellen in staat om te reageren met behulp van uw gegevens.
Als u een reactie van het model wilt activeren, moet u eindigen met een gebruikersbericht dat aangeeft dat het de beurt is van de assistent om te reageren.
Tip
Er zijn verschillende parameters die u kunt gebruiken om het antwoord van het model te wijzigen, zoals temperature
of top_p
. Raadpleeg de referentiedocumentatie voor meer informatie.
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?"
}
]
}
'
Voorbeelduitvoer
{
"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 met uw model met behulp van een web-app
Als u wilt chatten met het Azure OpenAI-model dat gebruikmaakt van uw gegevens, kunt u een web-app implementeren met behulp van Azure OpenAI Studio of voorbeeldcode die we op GitHub bieden. Deze app wordt geïmplementeerd met behulp van Azure App Service en biedt een gebruikersinterface voor het verzenden van query's. Deze app kan worden gebruikt met Azure OpenAI-modellen die gebruikmaken van uw gegevens of modellen die uw gegevens niet gebruiken. Zie het leesmij-bestand in de opslagplaats voor instructies over vereisten, installatie en implementatie. U kunt desgewenst de front-end- en back-endlogica van de web-app aanpassen door wijzigingen aan te brengen in de broncode.
Resources opschonen
Als u een Azure OpenAI- of Azure AI Search-resource wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle bijbehorende resources verwijderd.
Volgende stappen
- Meer informatie over het gebruik van uw gegevens in Azure OpenAI Service
- Voorbeeldcode van chat-app op GitHub.