gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
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.
De volgende resources:
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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
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. In het bovenste menu kunt u Implementeren 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. Gespreksgeschiedenisgeeft 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 de azure AI Foundry Portal-speeltuin). Zoals u zich kunt voorstellen, is het stellen van een vraag over 'alle titels' een volledige scan van het hele vectorarchief vereist.
Zodra u tevreden bent met de ervaring, kunt u een web-app rechtstreeks vanuit de portal implementeren door de knop Implementeren naar 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.
De volgende resources:
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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
U moet de volgende informatie ophalen om uw toepassing te verifiëren met uw Azure OpenAI-resource. 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 de Azure AI Foundry-portal.
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. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
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. |
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_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. |
Meer informatie over sleutelloze verificatie en het instellen van omgevingsvariabelen.
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:
using System;
using Azure.AI.OpenAI;
using System.ClientModel;
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");
AzureOpenAIClient azureClient = new(
new Uri(azureOpenAIEndpoint),
new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = azureClient.GetChatClient(deploymentName);
// Extension methods to use data sources with options are subject to SDK surface changes. Suppress the
// warning to acknowledge and this and use the subject-to-change AddDataSource method.
#pragma warning disable AOAI001
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
ChatCompletion completion = chatClient.CompleteChat(
[
new UserChatMessage("What health plans are available?"),
],
options);
ChatMessageContext onYourDataContext = completion.GetMessageContext();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (ChatCitation 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
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.
De volgende resources:
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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
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 Foundry 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 de Azure AI Foundry>Chat-speeltuin>. 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 ResourceBeheer-implementaties> in Azure Portal of ook onder Beheerimplementaties> in de Azure AI Foundry-portal. |
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. |
Maak en wijs permanente omgevingsvariabelen toe voor uw sleutel en eindpunt.
Belangrijk
Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u een API-sleutel gebruikt, slaat u deze veilig op in Azure Key Vault. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.
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
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
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
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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.
Voorbeelden van broncodepakket (npm) | referentiedocumentatie | |
Een Azure-abonnement: maak er gratis een.
Azure CLI die wordt gebruikt voor verificatie zonder wachtwoord in een lokale ontwikkelomgeving, maakt de benodigde context door u aan te melden met de Azure CLI.
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.
Voor de aanbevolen sleutelloze verificatie met Microsoft Entra-id moet u het volgende doen:
Cognitive Services User
rol toe aan uw gebruikersaccount. U kunt rollen toewijzen in Azure Portal onder Toegangsbeheer (IAM)>Roltoewijzing toevoegen.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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
U moet de volgende informatie ophalen om uw toepassing te verifiëren met uw Azure OpenAI-resource. 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 de Azure AI Foundry-portal.
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. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
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. |
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_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. |
Meer informatie over sleutelloze verificatie en het instellen van omgevingsvariabelen.
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
Installeer de Azure OpenAI-client en Azure Identity-bibliotheken voor JavaScript met npm:
npm install openai @azure/identity
Het package.json-bestand van uw app wordt bijgewerkt met de afhankelijkheden.
Open een opdrachtprompt waar u het nieuwe project wilt en maak een nieuw bestand met de naam ChatWithOwnData.js
. Kopieer de volgende code naar het ChatWithOwnData.js
bestand.
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-10-21";
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);
});
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.
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.
Voorbeelden van broncodepakket (npm) | referentiedocumentatie | |
Een Azure-abonnement: maak er gratis een.
Azure CLI die wordt gebruikt voor verificatie zonder wachtwoord in een lokale ontwikkelomgeving, maakt de benodigde context door u aan te melden met de Azure CLI.
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.
Voor de aanbevolen sleutelloze verificatie met Microsoft Entra-id moet u het volgende doen:
Cognitive Services User
rol toe aan uw gebruikersaccount. U kunt rollen toewijzen in Azure Portal onder Toegangsbeheer (IAM)>Roltoewijzing toevoegen.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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
U moet de volgende informatie ophalen om uw toepassing te verifiëren met uw Azure OpenAI-resource. 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 de Azure AI Foundry-portal.
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. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
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. |
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_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. |
Meer informatie over sleutelloze verificatie en het instellen van omgevingsvariabelen.
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
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.
Open een opdrachtprompt waar u het nieuwe project wilt en maak een nieuw bestand met de naam ChatWithOwnData.ts
. Kopieer de volgende code naar het ChatWithOwnData.ts
bestand.
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);
});
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.
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.
De volgende resources:
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.
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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
U moet de volgende informatie ophalen om uw toepassing te verifiëren met uw Azure OpenAI-resource. 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 de Azure AI Foundry-portal.
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. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
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. |
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_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. |
Meer informatie over sleutelloze verificatie en het instellen van omgevingsvariabelen.
mkdir openai-python
cd openai-python
pip install openai
pip install python-dotenv
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-10-21",
)
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(f"{completion.choices[0].message.role}: {completion.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.
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.
De volgende resources:
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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
U moet de volgende informatie ophalen om uw toepassing te verifiëren met uw Azure OpenAI-resource. 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 de Azure AI Foundry-portal.
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. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
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. |
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_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. |
Meer informatie over sleutelloze verificatie en het instellen van omgevingsvariabelen.
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
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.
Als u wilt chatten met het Azure OpenAI-model dat gebruikmaakt van uw gegevens, kunt u een web-app implementeren met behulp van de Azure AI Foundry-portal 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.
De volgende resources:
Voorbeelden van broncodepakket | (Go) | -referentie |
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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
U moet de volgende informatie ophalen om uw toepassing te verifiëren met uw Azure OpenAI-resource. 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 de Azure AI Foundry-portal.
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. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
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. |
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_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. |
Meer informatie over sleutelloze verificatie en het instellen van omgevingsvariabelen.
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
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.
Open nu een opdrachtprompt en voer het volgende uit:
go mod init sample.go
Volgende uitvoering:
go mod tidy
go run sample.go
De toepassing drukt het antwoord af, inclusief antwoorden op uw query en bronvermeldingen uit uw geüploade bestanden.
De volgende resources:
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 de Azure AI Foundry-portal en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.
U kunt een Azure AI Foundry-project maken door op Project maken te klikken of door rechtstreeks door te klikken op de knop op de tegel Prioriteit op Azure OpenAI Service.
Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.
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
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
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.
U moet de volgende informatie ophalen om uw toepassing te verifiëren met uw Azure OpenAI-resource. 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 de Azure AI Foundry-portal.
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. Een voorbeeldeindpunt is: https://my-resoruce.openai.azure.com . |
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. |
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_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. |
Meer informatie over sleutelloze verificatie en het instellen van omgevingsvariabelen.
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-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"index_name": "'$AZURE_AI_SEARCH_INDEX'",
"authentication": {
"type": "api_key",
"key": "'$AZURE_AI_SEARCH_API_KEY'"
}
}
}
],
"messages": [
{
"role": "user",
"content": "What are my available health plans?"
}
]
}
'
{
"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
},
"system_fingerprint": "fp_65792305e4"
}
Als u wilt chatten met het Azure OpenAI-model dat gebruikmaakt van uw gegevens, kunt u een web-app implementeren met behulp van de Azure AI Foundry-portal 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.
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.
gebeurtenis
17 mrt, 21 - 21 mrt, 10
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenTraining
Module
Deploy a Spring Boot app to Azure Container Apps - Training
In this module, you learn how to deploy a Spring Boot app to Azure Container Apps. You deploy a Spring Boot application to Azure Container Apps and maintain it using the built-in Java stack.
Certificering
Microsoft Certified: Azure AI Engineer Associate - Certifications
Design and implement an Azure AI solution using Azure AI services, Azure AI Search, and Azure Open AI.
Documentatie
Using your data with Azure OpenAI Service - Azure OpenAI
Use this article to learn about using your data for better text generation in Azure OpenAI.
Best practices for using Azure OpenAI On Your Data - Azure OpenAI Service
Learn about the best practices for using Azure OpenAI On Your Data, along with how to fix common problems.
Use the Azure OpenAI web app - Azure OpenAI Service
Use this article to learn about using the available web app to chat with Azure OpenAI models.