Dela via


Snabbstart: Chatta med Azure OpenAI-modeller med dina egna data

I den här snabbstarten använder du dina egna data med Azure OpenAI-modeller för att skapa en kraftfull, konversations-AI-plattform som möjliggör snabbare och mer exakt kommunikation.

Viktigt!

Det finns nya sätt att skapa konversationslösningar med dina egna data. Den senaste rekommenderade metoden finns i Snabbstart: Använda agentisk hämtning i Azure AI Search.

Förutsättningar

  • Ladda ned exempeldata från GitHub om du inte har egna data.

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Chattlekplats

Börja utforska Azure OpenAI-funktioner med en metod utan kod via chattlekplatsen. Det är bara en textruta där du kan skicka en uppmaning för att generera ett slutförande. Från den här sidan kan du snabbt iterera och experimentera med funktionerna.

Skärmbild av lekplatssidan i Azure AI Foundry-portalen med avsnitt markerade.

Lekplatsen ger dig alternativ för att skräddarsy din chattupplevelse. På den översta menyn kan du välja Distribuera för att avgöra vilken modell som genererar ett svar med hjälp av sökresultaten från ditt index. Du väljer antalet tidigare meddelanden som ska inkluderas som konversationshistorik för framtida genererade svar. Konversationshistorik ger kontext för att generera relaterade svar men förbrukar även tokenanvändning. Förloppsindikatorn för indatatoken håller reda på antalet token för den fråga som du skickar.

Avancerade inställningar till vänster är körningsparametrar som ger dig kontroll över hämtning och sökning efter relevant information från dina data. Ett bra användningsfall är när du vill se till att svar endast genereras baserat på dina data eller om du upptäcker att modellen inte kan generera ett svar baserat på befintlig information om dina data.

  • Strikthet avgör systemets aggressivitet vid filtrering av sökdokument baserat på deras likhetspoäng. Att ange strikthet till 5 anger att systemet aggressivt filtrerar bort dokument och tillämpar ett mycket högt tröskelvärde för likhet. Semantisk sökning kan vara till hjälp i det här scenariot eftersom rangordningsmodellerna gör ett bättre jobb med att härleda frågans avsikt. Lägre nivåer av strikthet ger mer utförliga svar, men kan också innehålla information som inte finns i ditt index. Detta är inställt på 3 som standard.

  • Hämtade dokument är ett heltal som kan anges till 3, 5, 10 eller 20 och styr antalet dokumentsegment som tillhandahålls till den stora språkmodellen för att formulera det slutliga svaret. Som standard är detta inställt på 5.

  • När Begränsa svar på dina data är aktiverat försöker modellen bara förlita sig på dina dokument för svar. Detta är inställt på true som standard.

Skärmbild av de avancerade inställningarna.

Skicka din första fråga. Chattmodellerna fungerar bäst i fråge- och svarsövningar. Till exempel "Vad är mina tillgängliga hälsoplaner?" eller "Vad är alternativet hälsa plus?".

Frågor som kräver dataanalys skulle förmodligen misslyckas, till exempel "Vilken hälsoplan är mest populär?". Frågor som kräver information om alla dina data kommer sannolikt också att misslyckas, till exempel "Hur många dokument har jag laddat upp?". Kom ihåg att sökmotorn letar efter segment med exakta eller liknande termer, fraser eller konstruktion till frågan. Och även om modellen kan förstå frågan, är det inte rätt information för att besvara den typen av frågor om sökresultaten är segment från datauppsättningen.

Chattar begränsas av antalet dokument (segment) som returneras i svaret (begränsat till 3–20 i Azure AI Foundry Portal Playground). Som du kan föreställa dig, kräver det att ställa en fråga om "alla titlar" en fullständig genomsökning av hela vektorlagret.

Distribuera din modell

När du är nöjd med upplevelsen kan du distribuera en webbapp direkt från portalen genom att välja knappen Distribuera till .

En skärmbild som visar knappen för modelldistribution i portalen.

Detta ger dig möjlighet att antingen distribuera till en fristående webbapplikation eller en Copilot i Copilot Studio (förhandsversion) när du brukar dina egna data i modellen.

Om du till exempel väljer att distribuera en webbapp:

Första gången du distribuerar en webbapp bör du välja Skapa en ny webbapp. Välj ett namn för appen, som blir en del av appens URL. Till exempel https://<appname>.azurewebsites.net.

Välj din prenumeration, resursgrupp, plats och prisplan för den publicerade appen. Om du vill uppdatera en befintlig app väljer du Publicera till en befintlig webbapp och väljer namnet på din tidigare app på den nedrullningsbara menyn.

Om du väljer att distribuera en webbapp kan du läsa de viktiga övervägandena för att använda den.

Förutsättningar

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Se Lägg till dina data genom Azure AI Foundry-portalen.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns under Resurshanteringsdistributioner> i Azure Portal.
AZURE_AI_SEARCH_ENDPOINT Det här värdet finns i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Öppna filen Program.cs från projektkatalogen och ersätt dess innehåll med följande kod:

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}");
}

Viktigt!

För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information om säkerhet för autentiseringsuppgifter finns i den här säkerhetsartikeln .

dotnet run Program.cs

Utgång

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

Detta väntar tills modellen har genererat hela svaret innan resultatet skrivs ut.

Förutsättningar

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Hämta nödvändiga variabler

För att kunna göra ett anrop mot Azure OpenAI behöver du följande variabler. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Mer information finns i Lägg till dina data med hjälp av Azure AI Foundry.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Du hittar det här värdet i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. Du kan också hitta värdet i Azure AI Foundry>Chat playground>Code view. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_API_KEY Du hittar det här värdet i avsnittet Resurshanteringsnycklar>och slutpunkt när du undersöker din Azure OpenAI-resurs från Azure Portal. Du kan använda antingen KEY1 eller KEY2. Om du alltid har två nycklar kan du rotera och återskapa nycklar på ett säkert sätt utan att orsaka avbrott i tjänsten.
AZURE_OPEN_AI_DEPLOYMENT_ID Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Du hittar det här värdet under Resurshanteringsdistributioner> i Azure Portal eller under Hanteringsdistributioner> i Azure AI Foundry-portalen.
AZURE_AI_SEARCH_ENDPOINT Du hittar det här värdet i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_API_KEY Du hittar det här värdet i avsnittet Inställningar>nycklar när du undersöker din Azure AI Search-resurs från Azure Portal. Du kan använda antingen den primära administratörsnyckeln eller den sekundära administratörsnyckeln. Om du alltid har två nycklar kan du rotera och återskapa nycklar på ett säkert sätt utan att orsaka avbrott i tjänsten.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Miljövariabler

Skapa och tilldela beständiga miljövariabler för din nyckel och slutpunkt.

Viktigt!

Använd API-nycklar med försiktighet. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt. Om du använder en API-nyckel lagrar du den på ett säkert sätt i Azure Key Vault. Mer information om hur du använder API-nycklar på ett säkert sätt i dina appar finns i API-nycklar med Azure Key Vault.

Mer information om säkerhet för AI-tjänster finns i Autentisera begäranden till Azure AI-tjänster.

Anmärkning

Spring AI förinställer modellnamnet till gpt-35-turbo. Det är bara nödvändigt att ange SPRING_AI_AZURE_OPENAI_MODEL värdet om du har distribuerat en modell med ett annat namn.

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

Skapa ett nytt Spring-program

Spring AI stöder för närvarande inte de AzureCognitiveSearchChatExtensionConfiguration alternativ som tillåter en Azure AI-fråga att kapsla in metoden för Retrieval Augmented Generation (RAG) och dölja detaljerna för användaren. Alternativt kan du fortfarande anropa RAG-metoden direkt i ditt program för att köra frågor mot data i ditt Azure AI Search-index och använda hämtade dokument för att utöka frågan.

Spring AI har stöd för en VectorStore-abstraktion, och du kan omsluta Azure AI Search i en Spring AI VectorStore-implementering för att köra frågor mot dina anpassade data. Följande projekt implementerar en anpassad VectorStore som backas upp av Azure AI Search och kör DIREKT RAG-åtgärder.

I ett Bash-fönster skapar du en ny katalog för din app och navigerar till den.

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

Kör kommandot från arbetskatalogen spring init . Det här kommandot skapar en standardkatalogstruktur för ditt Spring-projekt, inklusive huvudkällfilen för Java-klassen och den pom.xml fil som används för att hantera Maven-baserade projekt.

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

De genererade filerna och mapparna liknar följande struktur:

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

Redigera Spring-program

  1. Redigera filen pom.xml .

    Öppna filen pom.xml i önskad redigerare eller IDE från roten i projektkatalogen och skriv över filen med följande innehåll:

    <?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. Från mappen src/main/java/com/example/aicustomdatademo öppnar du AiCustomDataApplication.java i önskad redigerare eller IDE och klistrar in följande kod:

    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;
        }
    
    }
    

    Viktigt!

    För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information om säkerhet för autentiseringsuppgifter finns i den här säkerhetsartikeln .

  3. Gå tillbaka till projektrotmappen och kör appen med hjälp av följande kommando:

    ./mvnw spring-boot:run
    

Utgång

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: 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.

Referensdokumentation | Källkod | Paket (npm) | Exempel

Förutsättningar

Krav för Microsoft Entra-ID

För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID måste du:

  • Installera Azure CLI som används för nyckellös autentisering med Microsoft Entra-ID.
  • Cognitive Services User Tilldela rollen till ditt användarkonto. Du kan tilldela roller i Azure-portalen under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Se Lägg till dina data genom Azure AI Foundry-portalen.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns under Resurshanteringsdistributioner> i Azure Portal.
AZURE_AI_SEARCH_ENDPOINT Det här värdet finns i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Ställ in

  1. Skapa en ny mapp use-data-quickstart och gå till snabbstartsmappen med följande kommando:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Skapa package.json med följande kommando:

    npm init -y
    
  3. Installera OpenAI-klientbiblioteket för JavaScript med:

    npm install openai
    
  4. För den rekommenderade lösenordslösa autentiseringen:

    npm install @azure/identity
    

Lägg till JavaScript-koden

  1. index.js Skapa filen med följande kod:

    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. Logga in på Azure med följande kommando:

    az login
    
  3. Kör JavaScript-filen.

    node index.js
    

Utgång

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.

Referensdokumentation | Källkod | Paket (npm) | Exempel

Förutsättningar

Krav för Microsoft Entra-ID

För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID måste du:

  • Installera Azure CLI som används för nyckellös autentisering med Microsoft Entra-ID.
  • Cognitive Services User Tilldela rollen till ditt användarkonto. Du kan tilldela roller i Azure-portalen under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Se Lägg till dina data genom Azure AI Foundry-portalen.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns under Resurshanteringsdistributioner> i Azure Portal.
AZURE_AI_SEARCH_ENDPOINT Det här värdet finns i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Ställ in

  1. Skapa en ny mapp use-data-quickstart och gå till snabbstartsmappen med följande kommando:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Skapa package.json med följande kommando:

    npm init -y
    
  3. package.json Uppdatera till ECMAScript med följande kommando:

    npm pkg set type=module
    
  4. Installera OpenAI-klientbiblioteket för JavaScript med:

    npm install openai
    
  5. För den rekommenderade lösenordslösa autentiseringen:

    npm install @azure/identity
    

Lägg till TypeScript-koden

  1. index.ts Skapa filen med följande kod:

    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. tsconfig.json Skapa filen för att transpilera TypeScript-koden och kopiera följande kod för 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. Transpilera från TypeScript till JavaScript.

    tsc
    
  4. Logga in på Azure med följande kommando:

    az login
    
  5. Kör koden med följande kommando:

    node index.js
    

Viktigt!

För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information om säkerhet för autentiseringsuppgifter finns i den här säkerhetsartikeln .

Utgång

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.

Förutsättningar

Referens | Källkod | Paket (pypi) | Exempel

Dessa länkar refererar till OpenAI API för Python. Det finns ingen Azure-specifik OpenAI Python SDK. Lär dig hur du växlar mellan OpenAI-tjänsterna och Azure OpenA.

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Se Lägg till dina data genom Azure AI Foundry-portalen.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns under Resurshanteringsdistributioner> i Azure Portal.
AZURE_AI_SEARCH_ENDPOINT Det här värdet finns i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Skapa en Python-miljö

  1. Skapa en ny mapp med namnet openai-python för projektet och en ny Python-kodfil med namnet main.py. Byt till den katalogen:
mkdir openai-python
cd openai-python
  1. Installera följande Python-bibliotek:
pip install openai
pip install python-dotenv

Skapa Python-appen

  1. Öppna filen main.py från projektkatalogen och lägg till följande kod:
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}")

Viktigt!

För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information om säkerhet för autentiseringsuppgifter finns i den här säkerhetsartikeln .

  1. Kör följande kommando:
python main.py

Programmet skriver ut svaret i ett JSON-format som är lämpligt för användning i många scenarier. Den innehåller både svar på din fråga och citat från dina uppladdade filer.

Förutsättningar

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Se Lägg till dina data genom Azure AI Foundry-portalen.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns under Resurshanteringsdistributioner> i Azure Portal.
AZURE_AI_SEARCH_ENDPOINT Det här värdet finns i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Exempel på PowerShell-kommandon

Azure OpenAI-chattmodellerna är optimerade för att fungera med indata som är formaterade som en konversation. Variabeln messages skickar en matris med ordlistor med olika roller i konversationen som avgränsas av system, användare, verktyg och assistent. Variabeln dataSources ansluter till ditt Azure Cognitive Search-index och gör att Azure OpenAI-modeller kan svara med dina data.

Om du vill utlösa ett svar från modellen bör du sluta med ett användarmeddelande som anger att det är assistentens tur att svara.

Tips/Råd

Det finns flera parametrar som du kan använda för att ändra modellens svar, till exempel temperature eller top_p. Mer information finns i referensdokumentationen.

# 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

Exempel på utdata

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

Viktigt!

För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som PowerShell Secret Management med Azure Key Vault. Mer information om säkerhet för autentiseringsuppgifter finns i den här säkerhetsartikeln .

Chatta med din modell med hjälp av en webbapp

Om du vill börja chatta med Azure OpenAI-modellen som använder dina data kan du distribuera en webbapp med hjälp av Azure AI Foundry-portalen eller exempelkod som vi tillhandahåller på GitHub. Den här appen driftsätts med hjälp av Azure App Service och tillhandahåller ett användargränssnitt för att skicka frågor. Den här appen kan användas med Azure OpenAI-modeller som använder dina data eller modeller som inte använder dina data. Mer information om krav, konfiguration och distribution finns i readme-filen på lagringsplatsen. Du kan också anpassa klientdels- och serverdelslogik för webbappen genom att göra ändringar i källkoden.

Förutsättningar

Referens | Källkod | Paket (Go) | Exempel

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Krav för Microsoft Entra-ID

För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID måste du:

  • Installera Azure CLI som används för nyckellös autentisering med Microsoft Entra-ID.
  • Cognitive Services User Tilldela rollen till ditt användarkonto. Du kan tilldela roller i Azure-portalen under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Ställ in

  1. Skapa en ny mapp dall-e-quickstart och gå till snabbstartsmappen med följande kommando:

     mkdir dall-e-quickstart && cd dall-e-quickstart
    
  2. För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID loggar du in på Azure med följande kommando:

     az login
    

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Se Lägg till dina data genom Azure AI Foundry-portalen.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns under Resurshanteringsdistributioner> i Azure Portal.
AZURE_AI_SEARCH_ENDPOINT Det här värdet finns i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Kör snabbstarten

Exempelkoden i den här snabbstarten använder Microsoft Entra-ID för rekommenderad nyckellös autentisering. Om du föredrar att använda en API-nyckel kan du ersätta NewDefaultAzureCredential-implementeringen med NewKeyCredential.

azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)

Så här kör du exemplet:

  1. Skapa en ny fil med namnet quickstart.go. Kopiera följande kod till filen 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. Kör följande kommando för att skapa en ny Go-modul:

     go mod init quickstart.go
    
  3. Kör go mod tidy för att installera nödvändiga beroenden:

     go mod tidy
    
  4. Kör följande kommando för att köra exemplet:

     go run quickstart.go
    

Programmet skriver ut svaret med både svar på din fråga och citat från dina uppladdade filer.

Förutsättningar

Lägg till dina data med hjälp av Azure AI Foundry-portalen

Tips/Råd

Du kan också använda Azure Developer CLI för att programmatiskt skapa de resurser som behövs för Azure OpenAI På dina data.

Så här lägger du till dina data med hjälp av portalen:

  1. Logga in på Azure AI Foundry-portalen och välj din Azure OpenAI-resurs. Om du har en Azure AI Foundry-resurs kan du skapa ett Azure AI Foundry-projekt.

  2. Välj Playgrounds>Chat i den vänstra rutan.

  3. I fönstret Installation väljer du din modelldistribution.

  4. Välj Lägg till dina data>Lägg till en datakälla.

    En skärmbild av chattlekplatsen i Azure AI Foundry.

  5. På sidan Datakälla :

    1. Under Välj datakälla väljer du Ladda upp filer (förhandsversion).

      Tips/Råd

    2. Resursdelning mellan ursprung (CORS) krävs för att Azure OpenAI ska få åtkomst till ditt lagringskonto. Om CORS inte redan är aktiverat för din Azure Blob Storage-resurs väljer du Aktivera CORS.

    3. Välj din Azure AI Search-resurs.

    4. Ange ett namn för det nya indexet.

    5. Markera kryssrutan som bekräftar faktureringseffekterna av att använda Azure AI Search.

    6. Välj Nästa.

    En skärmbild som visar alternativ för att välja en datakälla i Azure AI Foundry-portalen.

  6. På sidan Ladda upp filer :

    1. Välj Bläddra efter en fil och välj sedan dina egna data eller exempeldata som du laddade ned från förhandskraven.

    2. Välj Ladda upp filer.

    3. Välj Nästa.

  7. På sidan Datahantering :

    1. Välj om du vill aktivera semantisk sökning eller vektorsökning för ditt index.

      Viktigt!

      • Semantisk sökning och vektorsökning omfattas av ytterligare priser. Azure AI Search-resursen måste vara på basic-nivån eller högre för att aktivera semantisk sökning eller vektorsökning. Mer information finns i Välj en nivå och tjänstbegränsningar.
      • För att förbättra kvaliteten på svar på informationshämtning och modell rekommenderar vi att du aktiverar semantisk sökning efter följande datakällspråk: engelska, franska, spanska, portugisiska, italienska, Tyskland, kinesiska(Zh), japanska, koreanska, ryska och arabiska.
    2. Välj Nästa.

  8. På sidan Dataanslutning :

    1. Välj om du vill autentisera med hjälp av en systemtilldelad hanterad identitet eller en API-nyckel.

    2. Välj Nästa.

  9. Granska konfigurationerna och välj sedan Spara och stäng.

    Nu kan du chatta med modellen, som använder dina data för att konstruera svaret.

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs. Den här snabbstarten förutsätter att du har laddat upp dina data till ett Azure Blob Storage-konto och har skapat ett Azure AI Search-index. Se Lägg till dina data genom Azure AI Foundry-portalen.

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din Azure OpenAI-resurs från Azure Portal. En exempelslutpunkt är: https://my-resource.openai.azure.com.
AZURE_OPENAI_DEPLOYMENT_NAME Det här värdet motsvarar det anpassade namn som du valde för distributionen när du distribuerade en modell. Det här värdet finns under Resurshanteringsdistributioner> i Azure Portal.
AZURE_AI_SEARCH_ENDPOINT Det här värdet finns i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.
AZURE_AI_SEARCH_INDEX Det här värdet motsvarar namnet på det index som du skapade för att lagra dina data. Du hittar den i avsnittet Översikt när du undersöker din Azure AI Search-resurs från Azure Portal.

Läs mer om nyckellös autentisering och inställning av miljövariabler.

Exempel på cURL-kommandon

Azure OpenAI-chattmodellerna är optimerade för att fungera med indata som är formaterade som en konversation. Variabeln messages skickar en matris med ordlistor med olika roller i konversationen som avgränsas av system, användare, verktyg och assistent. Variabeln dataSources ansluter till ditt Azure AI Search-index och gör att Azure OpenAI-modeller kan svara med dina data.

Om du vill utlösa ett svar från modellen bör du sluta med ett användarmeddelande som anger att det är assistentens tur att svara.

Tips/Råd

Det finns flera parametrar som du kan använda för att ändra modellens svar, till exempel temperature eller top_p. Mer information finns i referensdokumentationen.

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?"
        }
    ]
}
'

Exempel på utdata

{
    "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"
}

Chatta med din modell med hjälp av en webbapp

Om du vill börja chatta med Azure OpenAI-modellen som använder dina data kan du distribuera en webbapp med hjälp av Azure AI Foundry-portalen eller exempelkod som vi tillhandahåller på GitHub. Den här appen driftsätts med hjälp av Azure App Service och tillhandahåller ett användargränssnitt för att skicka frågor. Den här appen kan användas med Azure OpenAI-modeller som använder dina data eller modeller som inte använder dina data. Mer information om krav, konfiguration och distribution finns i readme-filen på lagringsplatsen. Du kan också anpassa klientdels- och serverdelslogik för webbappen genom att göra ändringar i källkoden.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI- eller Azure AI Search-resurs kan du ta bort resursen eller resursgruppen. Att ta bort resursgruppen innebär också att alla andra resurser som är kopplade till den tas bort.

Nästa steg