Lezen in het Engels

Delen via


Quickstart: Chatten met Azure OpenAI-modellen met uw eigen gegevens

Kies de gewenste gebruiksmethode

In deze quickstart kunt u uw eigen gegevens gebruiken met Azure OpenAI-modellen. Door de modellen van Azure OpenAI op uw gegevens te gebruiken, beschikt u over een krachtig AI-platform voor gesprekken dat snellere en nauwkeurigere communicatie mogelijk maakt.

Vereisten

De volgende resources:

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Selecteer uw Azure AI Search-resource en erken dat het verbinden ervan gebruikskosten op uw account met zich meebrengt. Selecteer Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.

Chatspeeltuin

Begin met het verkennen van de mogelijkheden van Azure OpenAI met een no-code-benadering via de chatspeelplaats. Het is gewoon een tekstvak waarin u een prompt kunt indienen om een voltooiing te genereren. Op deze pagina kunt u snel itereren en experimenteren met de mogelijkheden.

Schermopname van de pagina speeltuin van de Azure AI Foundry-portal met secties gemarkeerd.

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.

Schermopname van de geavanceerde instellingen.

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.

Uw model implementeren

Zodra u tevreden bent met de gebruikservaring, kunt u een webapp rechtstreeks vanuit de portalinterface implementeren door de knop Implementeren naar te selecteren.

Een schermopname van de knop voor modelimplementatie in de portal.

Dit biedt u de mogelijkheid om te implementeren in een zelfstandige webtoepassing of een copilot in Copilot Studio (preview) als u uw eigen gegevens op het model gebruikt.

Als u er bijvoorbeeld voor kiest om een web-app te implementeren:

De eerste keer dat u een web-app implementeert, selecteert u Een nieuwe web-app maken. Kies een naam voor de app, die deel gaat uitmaken van de APP-URL. Bijvoorbeeld: https://<appname>.azurewebsites.net.

Selecteer uw abonnement, resourcegroep, locatie en prijsplan voor de gepubliceerde app. Als u een bestaande app wilt bijwerken, selecteert u Publiceren naar een bestaande web-app en kiest u de naam van uw vorige app in de vervolgkeuzelijst.

Als u ervoor kiest om een web-app te implementeren, raadpleegt u de belangrijke overwegingen voor het gebruik ervan.

Vereisten

De volgende resources:

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Selecteer uw Azure AI Search-resources en bevestig dat het koppelen gebruikskosten op uw account met zich meebrengt. Selecteer Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. 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.

Resourcegegevens ophalen

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

Uitvoer

Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].

Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]

Citation:
Contoso Electronics plan and benefit packages

Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to

learn more about the various options available to you...// Omitted for brevity

Dit wacht totdat het model het volledige antwoord heeft gegenereerd voordat de resultaten worden afgedrukt.

Broncodevoorbeeld| |

Vereisten

De volgende resources:

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Selecteer uw Azure AI Search-resource en bevestig dat het koppelen hiervan gebruikskosten op uw account zal veroorzaken. Klik op Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. Controleer de gegevens die u hebt ingevoerd en selecteer Opslaan en sluiten. U kunt nu chatten met het model en er worden gegevens uit uw gegevens gebruikt om het antwoord samen te stellen.

Vereiste variabelen ophalen

Als u azure OpenAI wilt aanroepen, hebt u de volgende variabelen nodig. In deze quickstart wordt ervan uitgegaan dat u uw gegevens hebt geüpload naar een Azure Blob Storage-account en een Azure AI Search-index hebt gemaakt. Zie 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.

Omgevingsvariabelen

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

Een nieuwe Spring-toepassing maken

Spring AI biedt momenteel geen ondersteuning voor de AzureCognitiveSearchChatExtensionConfiguration opties waarmee een Azure AI-query de rag-methode (Retrieval Augmented Generation) kan inkapselen en de details van de gebruiker kan verbergen. Als alternatief kunt u de RAG-methode nog steeds rechtstreeks in uw toepassing aanroepen om gegevens in uw Azure AI Search-index op te vragen en opgehaalde documenten te gebruiken om uw query te verbeteren.

Spring AI ondersteunt een VectorStore-abstractie en u kunt Azure AI Search verpakken in een Spring AI VectorStore-implementatie om query's uit te voeren op uw aangepaste gegevens. In het volgende project wordt een aangepaste VectorStore geïmplementeerd die wordt ondersteund door Azure AI Search en worden RAG-bewerkingen rechtstreeks uitgevoerd.

Maak in een Bash-venster een nieuwe map voor uw app en navigeer ernaartoe.

mkdir ai-custom-data-demo && cd ai-custom-data-demo

Voer de opdracht spring init uit vanuit uw werkmap. Met deze opdracht maakt u een standaardmapstructuur voor uw Spring-project, inclusief het belangrijkste Bronbestand van Java-klasse en het pom.xml-bestand dat wordt gebruikt voor het beheren van op Maven gebaseerde projecten.

spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x

De gegenereerde bestanden en mappen lijken op de volgende structuur:

ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
    |-- main/
    |   |-- resources/
    |   |   |-- application.properties
    |   |-- java/
    |       |-- com/
    |           |-- example/
    |               |-- aicustomdatademo/
    |                   |-- AiCustomDataApplication.java
    |-- test/
        |-- java/
            |-- com/
                |-- example/
                    |-- aicustomdatademo/
                        |-- AiCustomDataApplicationTests.java

De Spring-toepassing bewerken

  1. 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>
    
  2. 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.

  3. Ga terug naar de hoofdmap van het project en voer de app uit met behulp van de volgende opdracht:

    ./mvnw spring-boot:run
    

Uitvoer

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.5)

2023-11-07T14:40:45.250-06:00  INFO 18557 --- [           main] c.e.a.AiCustomDataApplication            : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00  INFO 18557 --- [           main] c.e.a.AiCustomDataApplication            : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to AI service. One moment please...

Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Referentiedocumentatie | Broncode | Pakket (npm) | Voorbeelden

Vereisten

Vereisten voor Microsoft Entra-id

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.

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. 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.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. 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.

Resourcegegevens ophalen

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.

Inrichten

  1. Maak een nieuwe map use-data-quickstart en ga naar de snelstartmap met de volgende opdracht:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Maak de package.json opdracht met de volgende opdracht:

    npm init -y
    
  3. Installeer de OpenAI-clientbibliotheek voor JavaScript met:

    npm install openai
    
  4. Voor de aanbevolen verificatie zonder wachtwoord:

    npm install @azure/identity
    

De JavaScript-code toevoegen

  1. 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);
    });
    
  2. Meld u aan bij Azure met de volgende opdracht:

    az login
    
  3. Voer het JavaScript-bestand uit.

    node index.js
    

Uitvoer

Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Referentiedocumentatie | Broncode | Pakket (npm) | Voorbeelden

Vereisten

Vereisten voor Microsoft Entra-id

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.

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Selecteer uw Azure AI Search-resource en selecteer de bevestiging dat het verbinden ervan gebruikskosten op uw account met zich meebrengt. Selecteer Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. 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.

Resourcegegevens ophalen

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.

Inrichten

  1. Maak een nieuwe map use-data-quickstart en ga naar de snelstartmap met de volgende opdracht:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Maak de package.json opdracht met de volgende opdracht:

    npm init -y
    
  3. Werk de package.json bij naar ECMAScript met het volgende commando:

    npm pkg set type=module
    
  4. Installeer de OpenAI-clientbibliotheek voor JavaScript met:

    npm install openai
    
  5. Voor de aanbevolen verificatie zonder wachtwoord:

    npm install @azure/identity
    

De TypeScript-code toevoegen

  1. 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);
    });
    
  2. 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"]
    }
    
  3. Transpile van TypeScript naar JavaScript.

    tsc
    
  4. Meld u aan bij Azure met de volgende opdracht:

    az login
    
  5. 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.

Uitvoer

Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Vereisten

De volgende resources:

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.

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Selecteer uw Azure AI Search-resource en bevestig dat het koppelen ervan gebruikskosten voor uw account met zich meebrengt. Selecteer Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. 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.

Resourcegegevens ophalen

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.

Een Python-omgeving maken

  1. 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
  1. Installeer de volgende Python-bibliotheken:
pip install openai
pip install python-dotenv

De Python-app maken

  1. 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.

  1. Voer de volgende opdracht uit:
python main.py

De toepassing drukt het antwoord af in een JSON-indeling die geschikt is voor gebruik in veel scenario's. Het bevat zowel antwoorden op uw query als bronvermeldingen uit uw geüploade bestanden.

Vereisten

De volgende resources:

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Kies uw Azure AI Search-resource en selecteer de bevestiging dat het koppelen hiervan gebruikskosten met zich meebrengt voor uw account. Vervolgens selecteer Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. 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.

Resourcegegevens ophalen

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.

Voorbeelden van PowerShell-opdrachten

De Azure OpenAI-chatmodellen zijn geoptimaliseerd voor gebruik met invoer die is opgemaakt als een gesprek. De messages variabele geeft een matrix van woordenlijsten door met verschillende rollen in het gesprek dat is uitgelijnd door systeem, gebruiker, hulpprogramma en assistent. De dataSources variabele maakt verbinding met uw Azure Cognitive Search-index en stelt Azure OpenAI-modellen in staat om te reageren met behulp van uw gegevens.

Als u een reactie van het model wilt activeren, moet u eindigen met een gebruikersbericht dat aangeeft dat het de beurt is van de assistent om te reageren.

Tip

Er zijn verschillende parameters die u kunt gebruiken om het antwoord van het model te wijzigen, zoals temperature of top_p. Raadpleeg de referentiedocumentatie voor meer informatie.

# Azure OpenAI metadata variables
   $openai = @{
       api_key     = $Env:AZURE_OPENAI_API_KEY
       api_base    = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
       api_version = '2023-07-01-preview' # this may change in the future
       name        = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
   }

   $acs = @{
       search_endpoint     = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
       search_key    = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
       search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
   }

   # Completion text
   $body = @{
    dataSources = @(
        @{
            type = 'AzureCognitiveSearch'
            parameters = @{
                    endpoint = $acs.search_endpoint
                    key = $acs.search_key
                    indexName = $acs.search_index
                }
        }
    )
    messages = @(
            @{
                role = 'user'
                content = 'What are my available health plans?'
            }
    )
   } | convertto-json -depth 5

   # Header for authentication
   $headers = [ordered]@{
       'api-key' = $openai.api_key
   }

   # Send a completion call to generate an answer
   $url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"

   $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
   return $response.choices.messages[1].content

Voorbeelduitvoer

The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.

Belangrijk

Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Het PowerShell-geheimbeheer met Azure Key Vault. Zie het artikel over beveiliging van Azure AI-services voor meer informatie over referentiebeveiliging.

Chatten met uw model met behulp van een web-app

Als u wilt chatten met het Azure OpenAI-model dat gebruikmaakt van uw gegevens, kunt u een web-app implementeren met behulp van 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.

Vereisten

De volgende resources:

Referentie | Broncode | Pakket (Go) | Voorbeelden

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Selecteer uw Azure AI Search-resource en bevestig dat het aansluiten kosten op uw account met zich meebrengt. Kies vervolgens Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. 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.

Vereisten voor Microsoft Entra-id

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.

Inrichten

  1. Maak een nieuwe map dall-e-quickstart en ga naar de snelstartmap met de volgende opdracht:

     mkdir dall-e-quickstart && cd dall-e-quickstart
    
  2. Meld u met de volgende opdracht aan bij Azure voor de aanbevolen sleutelloze verificatie met Microsoft Entra ID:

     az login
    

Resourcegegevens ophalen

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 quickstart uitvoeren

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:

  1. 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,
     )
    }
    
  2. Voer de volgende opdracht uit om een nieuwe Go-module te maken:

     go mod init quickstart.go
    
  3. Voer deze opdracht uit go mod tidy om de vereiste afhankelijkheden te installeren:

     go mod tidy
    
  4. 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.

Vereisten

De volgende resources:

Uw gegevens toevoegen met behulp van de Azure AI Foundry-portal

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.

  1. 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.

    Een schermopname van de landingspagina van de Azure AI Foundry-portal.

  2. Selecteer Chatten onder Speeltuinen in het linkernavigatiemenu en selecteer uw modelimplementatie.

  3. Selecteer Uw gegevens toevoegen in de chatspeeltuin en voeg vervolgens een gegevensbron toe

    Een schermopname van de chatspeelplaats in Azure AI Foundry.

  4. 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

    1. 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.

    2. Selecteer uw Azure AI Search-resource en bevestig dat het verbinden ervan kosten op uw account met zich meebrengt. Klik op Volgende.

    Een schermopname met opties voor het selecteren van een gegevensbron in de Azure AI Foundry-portal.

  5. 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.

  6. 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.
  7. 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.

Resourcegegevens ophalen

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.

Voorbeeld van cURL-opdrachten

De Azure OpenAI-chatmodellen zijn geoptimaliseerd voor gebruik met invoer die is opgemaakt als een gesprek. De messages variabele geeft een matrix van woordenlijsten door met verschillende rollen in het gesprek dat is uitgelijnd door systeem, gebruiker, hulpprogramma en assistent. De dataSources variabele maakt verbinding met uw Azure AI Search-index en stelt Azure OpenAI-modellen in staat om te reageren met behulp van uw gegevens.

Als u een reactie van het model wilt activeren, moet u eindigen met een gebruikersbericht dat aangeeft dat het de beurt is van de assistent om te reageren.

Tip

Er zijn verschillende parameters die u kunt gebruiken om het antwoord van het model te wijzigen, zoals temperature of top_p. Raadpleeg de referentiedocumentatie voor meer informatie.

curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_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?"
        }
    ]
}
'

Voorbeelduitvoer

{
    "id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
    "model": "gpt-4",
    "created": 1709835345,
    "object": "extensions.chat.completion",
    "choices": [
        {
            "index": 0,
            "finish_reason": "stop",
            "message": {
                "role": "assistant",
                "content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
                "end_turn": true,
                "context": {
                    "citations": [
                        {
                            "content": "...",
                            "title": "...",
                            "url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
                            "filepath": "001.txt",
                            "chunk_id": "0"
                        }
                    ],
                    "intent": "[\"Available health plans\"]"
                }
            }
        }
    ],
    "usage": {
        "prompt_tokens": 3779,
        "completion_tokens": 105,
        "total_tokens": 3884
    },
    "system_fingerprint": "fp_65792305e4"
}

Chatten met uw model met behulp van een web-app

Als u wilt chatten met het Azure OpenAI-model dat gebruikmaakt van uw gegevens, kunt u een web-app implementeren met behulp van 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.

Middelen opschonen

Als u een Azure OpenAI- of Azure AI Search-resource wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle bijbehorende resources verwijderd.

Volgende stappen