Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
- Azure OpenAI
- Azure Blob Storage
- 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-bijdrager hebt bij de Azure OpenAI-resource.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
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
- 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 erken dat het verbinden ervan gebruikskosten op uw account met zich meebrengt. Selecteer Volgende.
Selecteer in het venster Upload bestanden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload uit de sectie Vereisten of gebruik uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Vervolgens 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.
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 itereren 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 omgeving). Zoals u zich kunt voorstellen, vereist het stellen van een vraag over 'alle titels' een volledige scan van de hele vectorwinkel.
Zodra u tevreden bent met de gebruikservaring, kunt u een webapp rechtstreeks vanuit de portalinterface 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:
- 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 Contributor bij de Azure OpenAI-resource bent toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
- De .NET 8 SDK
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
- 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-resources en bevestig dat het koppelen gebruikskosten op uw account met zich meebrengt. Selecteer Volgende.
Selecteer in het deelvenster Bestanden uploaden de optie Verken naar een bestand en selecteer de bestanden die u hebt gedownload uit 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.
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 | Waarde |
---|---|
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_NAME |
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 de 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.
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_NAME");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
AzureOpenAIClient openAIClient = new(
new Uri(azureOpenAIEndpoint),
new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = openAIClient.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:
- 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 minimaal de rol van Cognitive Services Contributor voor de Azure OpenAI-resource aan u is toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
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
- 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 bevestig dat het koppelen hiervan gebruikskosten op uw account zal veroorzaken. Klik op Volgende.
Selecteer in het Upload deelvensterBladeren naar een bestand en kies de bestanden die je hebt gedownload uit de vereisten sectie of je eigen gegevens. Selecteer vervolgens Bestanden uploaden. Dan 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.
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 voor meer informatie Uw gegevens toevoegen met behulp van Azure AI Foundry.
Naam van de variabele | Waarde |
---|---|
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>> 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>Deployments in de Azure-portal of alternatief onder Beheer>Deployments 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 het bestand AiCustomDataApplication.java in de map src/main/java/com/example/aicustomdatademo in je favoriete 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.
Referentiedocumentatie | Broncode | Pakket (npm) | Voorbeelden
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 Contributor toegewezen krijgt voor de Azure OpenAI-resource.
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:
- Installeer de Azure CLI die wordt gebruikt voor sleutelloze verificatie met Microsoft Entra-id.
- Wijs de
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
- 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 bevestig dat door de verbinding te maken, er kosten in rekening worden gebracht op uw account. Selecteer Volgende.
Selecteer op het deelvenster Bestanden uploadenBladeren naar bestanden en selecteer de bestanden die u hebt gedownload uit de vereisten-sectie of gebruik uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Dan 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.
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 | Waarde |
---|---|
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_NAME |
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 ResourceBeheerImplementaties in de 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
use-data-quickstart
en ga naar de snelstartmap met de volgende opdracht:mkdir use-data-quickstart && cd use-data-quickstart
Maak de
package.json
opdracht met de volgende opdracht:npm init -y
Installeer de OpenAI-clientbibliotheek voor JavaScript met:
npm install openai
Voor de aanbevolen verificatie zonder wachtwoord:
npm install @azure/identity
Maak het
index.js
bestand met de volgende code: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 || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your 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 = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "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); });
Meld u aan bij Azure met de volgende opdracht:
az login
Voer het JavaScript-bestand uit.
node index.js
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.
Referentiedocumentatie | Broncode | Pakket (npm) | Voorbeelden
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-bijdrager hebt voor de Azure OpenAI-resource.
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:
- Installeer de Azure CLI die wordt gebruikt voor sleutelloze verificatie met Microsoft Entra-id.
- Wijs de
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
- 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 het verbinden ervan gebruikskosten op uw account met zich meebrengt. Selecteer Volgende.
Selecteer in het venster Bestanden uploaden de optie Bestand zoeken en selecteer de bestanden die u hebt gedownload in vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Dan 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.
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 | Waarde |
---|---|
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_NAME |
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 Resource Management>Implementaties in de 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
use-data-quickstart
en ga naar de snelstartmap met de volgende opdracht:mkdir use-data-quickstart && cd use-data-quickstart
Maak de
package.json
opdracht met de volgende opdracht:npm init -y
Werk de
package.json
bij naar ECMAScript met het volgende commando:npm pkg set type=module
Installeer de OpenAI-clientbibliotheek voor JavaScript met:
npm install openai
Voor de aanbevolen verificatie zonder wachtwoord:
npm install @azure/identity
Maak het
index.ts
bestand met de volgende code: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 || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your 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 = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "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); });
Maak het
tsconfig.json
bestand om de TypeScript-code te transpileren en kopieer de volgende code voor ECMAScript.{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }
Transpile van TypeScript naar JavaScript.
tsc
Meld u aan bij Azure met de volgende opdracht:
az login
Voer de code uit met de volgende opdracht:
node index.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:
- 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 Contributor voor de Azure OpenAI-resource is toegekend.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Referentie | Broncode | Pakket (pypi) | Voorbeelden
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
- 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 bevestig dat het koppelen ervan gebruikskosten voor uw account met zich meebrengt. Selecteer Volgende.
Selecteer in het deelvenster uploaden van bestanden de optie Zoeken 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.
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 | Waarde |
---|---|
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_NAME |
Deze waarde komt overeen met de aangepaste naam die u voor uw implementatie hebt gekozen bij het implementeren van een model. Deze waarde kan worden gevonden onder Resource Management>Implementaties in de 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-python voor uw project en een nieuw Python-codebestand met de naam main.py. Verander naar die directory
mkdir openai-python
cd openai-python
- Installeer de volgende Python-bibliotheken:
pip install openai
pip install python-dotenv
- 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_NAME")
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.
- 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.
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-bijdrager voor de Azure OpenAI-resource bent toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
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
- 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.
Kies uw Azure AI Search-resource en selecteer de bevestiging dat het koppelen hiervan gebruikskosten met zich meebrengt voor uw account. Vervolgens 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.
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 | Waarde |
---|---|
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_NAME |
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 de 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 repository met instructies voor de 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:
- 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 Contributor hebt toegewezen gekregen voor de Azure OpenAI-resource.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
Referentie | Broncode | Pakket (Go) | Voorbeelden
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
- 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 bevestig dat het aansluiten kosten op uw account met zich meebrengt. Kies vervolgens 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. Klik op 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.
Voor de aanbevolen sleutelloze verificatie met Microsoft Entra-id moet u het volgende doen:
- Installeer de Azure CLI die wordt gebruikt voor sleutelloze verificatie met Microsoft Entra-id.
- Wijs de
Cognitive Services User
rol toe aan uw gebruikersaccount. U kunt rollen toewijzen in Azure Portal onder Toegangsbeheer (IAM)>Roltoewijzing toevoegen.
Maak een nieuwe map
dall-e-quickstart
en ga naar de snelstartmap met de volgende opdracht:mkdir dall-e-quickstart && cd dall-e-quickstart
Meld u met de volgende opdracht aan bij Azure voor de aanbevolen sleutelloze verificatie met Microsoft Entra ID:
az login
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 | Waarde |
---|---|
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_NAME |
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 Resource Management>Deployments in de 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 voorbeeldcode in deze quickstart maakt gebruik van Microsoft Entra-id voor de aanbevolen sleutelloze verificatie. Als u liever een API-sleutel gebruikt, kunt u de NewDefaultAzureCredential
implementatie vervangen door NewKeyCredential
.
azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
Het voorbeeld uitvoeren:
Maak een nieuw bestand met de naam quickstart.go. Kopieer de volgende code naar het bestand quickstart.go .
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() { azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") credential, err := azidentity.NewDefaultAzureCredential(nil) client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil) modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME") // 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 modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" { fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n") return } client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, credential, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } 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. // Answers are based on the model's pretrained knowledge // and the latest information available in the designated data source. Parameters: &azopenai.AzureSearchChatExtensionParameters{ Endpoint: &searchEndpoint, IndexName: &searchIndex, Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{ Key: &searchAPIKey, }, }, }, }, DeploymentName: &modelDeploymentID, }, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } 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, ) }
Voer de volgende opdracht uit om een nieuwe Go-module te maken:
go mod init quickstart.go
Voer deze opdracht uit
go mod tidy
om de vereiste afhankelijkheden te installeren:go mod tidy
Voer de volgende opdracht uit om het voorbeeld uit te voeren:
go run quickstart.go
De toepassing drukt het antwoord af, inclusief antwoorden op uw query en bronvermeldingen uit uw geüploade bestanden.
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-bijdrager voor de Azure OpenAI-resource is toegewezen.
- Download de voorbeeldgegevens van GitHub als u geen eigen gegevens hebt.
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
- 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 bevestig dat het verbinden ervan kosten op uw account met zich meebrengt. Klik op Volgende.
Selecteer in het uploadvenster bestanden de optie Bladeren naar een bestand en selecteer de bestanden die u hebt gedownload uit de sectie vereisten of uw eigen gegevens. Selecteer vervolgens Bestanden uploaden. Dan 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.
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 | Waarde |
---|---|
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_NAME |
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 de 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_NAME/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 repository voor een handleiding over vereisten, inrichting 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.
- Meer informatie over het gebruik van uw gegevens in Azure OpenAI Service
- Voorbeeldcode van chat-app op GitHub.