Dela via


Snabbstart: Börja använda chattkomplettering med Azure OpenAI-tjänsten

Använd den här artikeln för att komma igång med Azure OpenAI.

Förutsättningar

  • En Azure-prenumeration – Skapa en kostnadsfritt.
  • En Azure OpenAI Service-resurs med antingen gpt-4o eller gpt-4o-mini modellerna distribuerade. Vi rekommenderar att du använder standard- eller globala standardmodelldistributionstyper för inledande utforskning. För mer information om modellutplacering, se guiden för resursdistribution.

Gå till Azure AI Foundry

Gå till Azure AI Foundry-portalen och logga in med autentiseringsuppgifter som har åtkomst till din Azure OpenAI-resurs. Under eller efter inloggningsarbetsflödet väljer du lämplig katalog, Azure-prenumeration och Azure OpenAI-resurs.

Från Azure AI Foundry väljer du Chattlekplats.

Lekplats

Börja utforska Azure OpenAI Service-funktioner med en metod utan kod via Azure AI Foundry Chat Playground. Från den här sidan kan du snabbt iterera och experimentera med funktionerna.

Skärmbild av sidan Chattlekplats.

Inställningar

Du kan använda listrutan *Prompt samples för att välja några förinlästa systemmeddelandeexempel för att komma igång.

Systemmeddelanden ger modellen instruktioner om hur den ska bete sig och vilken kontext den ska referera till när ett svar genereras. Du kan beskriva assistentens personlighet, berätta vad den ska och inte ska svara på och tala om för den hur svar ska formateras.

När du använder chattlekplatsen kan du välja Visa kod för att se Python-, curl- och json-kodexempel som är förifyllda baserat på dina aktuella val av chattsession och inställningar. Du kan sedan ta den här koden och skriva ett program för att slutföra samma uppgift som du för närvarande utför med lekplatsen.

Chattsession

Om du väljer knappen Retur eller om du väljer högerpilsikonen skickas den angivna texten till API:et för chattens slutförande och resultatet returneras tillbaka till textrutan.

Välj knappen Rensa chatt för att ta bort den aktuella konversationshistoriken.

Nyckelinställningar

Namn Beskrivning
Implementeringar Ditt distributionsnamn som är associerat med en specifik modell.
Lägga till dina data
Parametrar Anpassade parametrar som ändrar modellsvaren. När du börjar rekommenderar vi att du använder standardvärdena för de flesta parametrar
Temperatur Styr slumpmässighet. Att sänka temperaturen innebär att modellen ger mer repetitiva och deterministiska svar. Att öka temperaturen resulterar i mer oväntade eller kreativa svar. Prova att justera temperaturen eller Top P men inte båda.
Maximalt svar (token) Ange en gräns för antalet token per modellsvar. API:et för de senaste modellerna stöder högst 128 000 token som delas mellan prompten (inklusive systemmeddelande, exempel, meddelandehistorik och användarfråga) och modellens svar. En token är ungefär fyra tecken för typisk engelsk text.
Övre p På samma sätt som temperatur styr detta slumpmässighet men använder en annan metod. Genom att sänka Top P begränsas modellens val av token till mer sannolika alternativ. Om du ökar topp P kan modellen välja mellan token med både hög och låg sannolikhet. Prova att justera temperaturen eller Top P men inte båda.
Stoppa sekvenser Stoppsekvensen gör att modellen avslutar sitt svar vid en önskad punkt. Modellsvaret slutar före den angivna sekvensen, så den innehåller inte stoppsekvenstexten. För GPT-35-Turbo säkerställer användning <|im_end|> att modellsvaret inte genererar en uppföljande användarfråga. Du kan inkludera så många som fyra stoppsekvenser.

Visa kod

När du har experimenterat med att chatta med modellen väljer du <knappen /> Visa kod . Detta ger dig en repris av koden bakom hela konversationen hittills:

Skärmbild av visning av kodupplevelse.

Förstå promptstrukturen

Om du undersöker exemplet från Visa kodassistant Varje gång du skickar ett meddelande till modellen sänds hela konversationshistoriken tills dess igen. När du använder API:et för chattens slutförande har modellen inget riktigt minne av det du har skickat till den tidigare, så du anger konversationshistoriken för kontext så att modellen kan svara korrekt.

Instruktionsguiden för chattens slutförande ger en djupgående introduktion till den nya promptstrukturen och hur du använder modeller för chattavslut på ett effektivt sätt.

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 ett fristående webbprogram eller en andrepilot i Copilot Studio (förhandsversion) om du använder 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. 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.

Rensa resurser

När du är klar med att testa chattlekplatsen kan du ta bort resursen eller resursgruppen om du vill rensa och ta bort en Azure OpenAI-resurs. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

Källkod | Paket (NuGet) | Exempel| Mall för företagschatt med Retrieval Augmented Generation (RAG) |

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 Portal under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Konfigurera

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

    mkdir chat-quickstart && cd chat-quickstart
    
  2. Skapa ett nytt konsolprogram med följande kommando:

    dotnet new console
    
  3. Installera OpenAI .NET-klientbiblioteket med kommandot dotnet add package:

    dotnet add package Azure.AI.OpenAI --prerelease
    
  4. För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID installerar du Azure.Identity-paketet med:

    dotnet add package Azure.Identity
    
  5. 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:

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din resurs från Azure Portal.
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 Resurshanteringsmodelldistributioner> i Azure Portal.
OPENAI_API_VERSION Läs mer om API-versioner.

Du kan ändra versionen i koden eller använda en miljövariabel.

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 DefaultAzureCredential-objektet med ett AzureKeyCredential objekt.

AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 

Du kan använda direktuppspelning eller icke-direktuppspelning för att slutföra chatten. Följande kodexempel visar hur du använder båda metoderna. Det första exemplet visar hur du använder metoden för icke-direktuppspelning, och det andra exemplet visar hur du använder strömningsmetoden.

Utan strömning av svar

Följ dessa steg för att köra snabbstarten:

  1. Ersätt innehållet i Program.cs med följande kod och uppdatera platshållarvärdena med dina egna.

    using Azure;
    using Azure.Identity;
    using OpenAI.Assistants;
    using Azure.AI.OpenAI;
    using OpenAI.Chat;
    using static System.Environment;
    
    string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? "https://<your-resource-name>.openai.azure.com/";
    string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "<your-key>";
    
    // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 
    //AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
    
    // This must match the custom deployment name you chose for your model
    ChatClient chatClient = openAIClient.GetChatClient("gpt-4o");
    
    ChatCompletion completion = chatClient.CompleteChat(
        [
            new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
            new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
            new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
            new UserChatMessage("Do other Azure AI services support this too?")
        ]);
    
    Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");
    
  2. Kör programmet med följande kommando:

    dotnet run
    

Utgång

Assistant: Arrr, ye be askin’ a fine question, matey! Aye, several Azure AI services support customer-managed keys (CMK)! This lets ye take the wheel and secure yer data with encryption keys stored in Azure Key Vault. Services such as Azure Machine Learning, Azure Cognitive Search, and others also offer CMK fer data protection. Always check the specific service's documentation fer the latest updates, as features tend to shift swifter than the tides, aye!

Detta väntar tills modellen har genererat hela svaret innan resultatet skrivs ut. Om du vill strömma svaret asynkront och skriva ut resultatet kan du ersätta innehållet i Program.cs med koden i nästa exempel.

Asynk med strömning

Följ dessa steg för att köra snabbstarten:

  1. Ersätt innehållet i Program.cs med följande kod och uppdatera platshållarvärdena med dina egna.

    using Azure;
    using Azure.Identity;
    using OpenAI.Assistants;
    using Azure.AI.OpenAI;
    using OpenAI.Chat;
    using static System.Environment;
    
    string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? "https://<your-resource-name>.openai.azure.com/";
    string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? "<your-key>";
    
    // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 
    //AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
    
    // This must match the custom deployment name you chose for your model
    ChatClient chatClient = openAIClient.GetChatClient("gpt-4o");
    
    var chatUpdates = chatClient.CompleteChatStreamingAsync(
        [
            new SystemChatMessage("You are a helpful assistant that talks like a pirate."),
            new UserChatMessage("Does Azure OpenAI support customer managed keys?"),
            new AssistantChatMessage("Yes, customer managed keys are supported by Azure OpenAI"),
            new UserChatMessage("Do other Azure AI services support this too?")
        ]);
    
    await foreach(var chatUpdate in chatUpdates)
    {
        if (chatUpdate.Role.HasValue)
        {
            Console.Write($"{chatUpdate.Role} : ");
        }
    
        foreach(var contentPart in chatUpdate.ContentUpdate)
        {
            Console.Write(contentPart.Text);
        }
    }
    
  2. Kör programmet med följande kommando:

    dotnet run
    

Utdata

Assistant: Arrr, ye be askin’ a fine question, matey! Aye, several Azure AI services support customer-managed keys (CMK)! This lets ye take the wheel and secure yer data with encryption keys stored in Azure Key Vault. Services such as Azure Machine Learning, Azure Cognitive Search, and others also offer CMK fer data protection. Always check the specific service's documentation fer the latest updates, as features tend to shift swifter than the tides, aye!

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

Källkod | Paket (Go)| 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 Portal under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Konfigurera

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

    mkdir chat-quickstart && cd chat-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:

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din resurs från Azure Portal.
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 Resurshanteringsmodelldistributioner> i Azure Portal.
OPENAI_API_VERSION Läs mer om API-versioner.

Du kan ändra versionen i koden eller använda en miljövariabel.

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 chat_completions_keyless.go. Kopiera följande kod till filen chat_completions_keyless.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/azidentity"
    )
    
    func main() {
    	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
    	modelDeploymentID := "gpt-4o"
        maxTokens:= int32(400)
    
    	credential, err := azidentity.NewDefaultAzureCredential(nil)
    	if err != nil {
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	client, err := azopenai.NewClient(
    		azureOpenAIEndpoint, credential, nil)
    	if err != nil {
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	// This is a conversation in progress.
    	// All messages, regardless of role, count against token usage for this API.
    	messages := []azopenai.ChatRequestMessageClassification{
    		// System message sets the tone and rules of the conversation.
    		&azopenai.ChatRequestSystemMessage{
    			Content: azopenai.NewChatRequestSystemMessageContent(
    				"You are a helpful assistant."),
    		},
    
    		// The user asks a question
    		&azopenai.ChatRequestUserMessage{
    			Content: azopenai.NewChatRequestUserMessageContent(
    				"Can I use honey as a substitute for sugar?"),
    		},
    
    		// The reply would come back from the model. You
    		// add it to the conversation so we can maintain context.
    		&azopenai.ChatRequestAssistantMessage{
    			Content: azopenai.NewChatRequestAssistantMessageContent(
    				"Yes, you can use use honey as a substitute for sugar."),
    		},
    
    		// The user answers the question based on the latest reply.
    		&azopenai.ChatRequestUserMessage{
    			Content: azopenai.NewChatRequestUserMessageContent(
    				"What other ingredients can I use as a substitute for sugar?"),
    		},
    
    		// From here you can keep iterating, sending responses back from the chat model.
    	}
    
    	gotReply := false
    
    	resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{
    		// This is a conversation in progress.
    		// All messages count against token usage for this API.
    		Messages: messages,
    		DeploymentName: &modelDeploymentID,
    		MaxTokens: &maxTokens,
    	}, nil)
    
    	if err != nil {
    		// Implement application specific error handling logic.
    		log.Printf("ERROR: %s", err)
    		return
    	}
    
    	for _, choice := range resp.Choices {
    		gotReply = true
    
    		if choice.ContentFilterResults != nil {
    			fmt.Fprintf(os.Stderr, "Content filter results\n")
    
    			if choice.ContentFilterResults.Error != nil {
    				fmt.Fprintf(os.Stderr, "  Error:%v\n", choice.ContentFilterResults.Error)
    			}
    
    			fmt.Fprintf(os.Stderr, "  Hate: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Hate.Severity, *choice.ContentFilterResults.Hate.Filtered)
    			fmt.Fprintf(os.Stderr, "  SelfHarm: sev: %v, filtered: %v\n", *choice.ContentFilterResults.SelfHarm.Severity, *choice.ContentFilterResults.SelfHarm.Filtered)
    			fmt.Fprintf(os.Stderr, "  Sexual: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Sexual.Severity, *choice.ContentFilterResults.Sexual.Filtered)
    			fmt.Fprintf(os.Stderr, "  Violence: sev: %v, filtered: %v\n", *choice.ContentFilterResults.Violence.Severity, *choice.ContentFilterResults.Violence.Filtered)
    		}
    
    		if choice.Message != nil && choice.Message.Content != nil {
    			fmt.Fprintf(os.Stderr, "Content[%d]: %s\n", *choice.Index, *choice.Message.Content)
    		}
    
    		if choice.FinishReason != nil {
    			// The conversation for this choice is complete.
    			fmt.Fprintf(os.Stderr, "Finish reason[%d]: %s\n", *choice.Index, *choice.FinishReason)
    		}
    	}
    
    	if gotReply {
    		fmt.Fprintf(os.Stderr, "Received chat completions reply\n")
    	}
    
    }
    
  2. Kör följande kommando för att skapa en ny Go-modul:

     go mod init chat_completions_keyless.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 chat_completions_keyless.go
    

Utdata

Utdata från exempelkoden ser ut ungefär så här:

Content filter results
  Hate: sev: safe, filtered: false
  SelfHarm: sev: safe, filtered: false
  Sexual: sev: safe, filtered: false
  Violence: sev: safe, filtered: false
Content[0]: There are many alternatives to sugar that you can use, depending on the type of recipe you’re making and your dietary needs or taste preferences. Here are some popular sugar substitutes:

---

### **Natural Sweeteners**  
1. **Honey**
   - Sweeter than sugar and adds moisture, with a distinct flavor.
   - Substitution: Use ¾ cup honey for 1 cup sugar, and reduce the liquid in your recipe by 2 tablespoons. Lower the baking temperature by 25°F to prevent over-browning.

2. **Maple Syrup**
   - Adds a rich, earthy sweetness with a hint of maple flavor.
   - Substitution: Use ¾ cup syrup for 1 cup sugar. Reduce liquids by 3 tablespoons.

3. **Agave Nectar**
   - Sweeter and milder than honey, it dissolves well in cold liquids.
   - Substitution: Use ⅔ cup agave for 1 cup sugar. Reduce liquids in the recipe slightly.

4. **Molasses**
   - A byproduct of sugar production with a robust, slightly bitter flavor.
   - Substitution: Use 1 cup of molasses for 1 cup sugar. Reduce liquid by ¼ cup and consider combining it with other sweeteners due to its strong flavor.

5. **Coconut Sugar**
   - Made from the sap of coconut palms, it has a rich, caramel-like flavor.
   - Substitution: Use it in a 1:1 ratio for sugar.

6. **Date Sugar** (or Medjool Dates)
   - Made from ground, dried dates, or blended into a puree, offering a rich, caramel taste.
   - Substitution: Use 1:1 for sugar. Adjust liquid in recipes if needed.

---

### **Calorie-Free or Reduced-Calorie Sweeteners**
1. **Stevia**
   - A natural sweetener derived from stevia leaves, hundreds of
Finish reason[0]: length
Received chat completions reply

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

Fler exempel finns på GitHub-lagringsplatsen Azure OpenAI Samples

Källkod | Artefakt (Maven) | Exempel | Retrieval Augmented Generation (RAG) företagschattmall | IntelliJ IDEA

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 Portal under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Konfigurera

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

    mkdir chat-quickstart && cd chat-quickstart
    
  2. Installera Apache Maven. Kör mvn -v sedan för att bekräfta att installationen har slutförts.

  3. Skapa en ny pom.xml fil i roten av projektet och kopiera följande kod till den:

    <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
         <modelVersion>4.0.0</modelVersion>
         <groupId>com.azure.samples</groupId>
         <artifactId>quickstart-dall-e</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <build>
             <sourceDirectory>src</sourceDirectory>
             <plugins>
             <plugin>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.7.0</version>
                 <configuration>
                 <source>1.8</source>
                 <target>1.8</target>
                 </configuration>
             </plugin>
             </plugins>
         </build>
         <dependencies>    
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-ai-openai</artifactId>
                 <version>1.0.0-beta.10</version>
             </dependency>
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-core</artifactId>
                 <version>1.53.0</version>
             </dependency>
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-identity</artifactId>
                 <version>1.15.1</version>
             </dependency>
             <dependency>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-simple</artifactId>
                 <version>1.7.9</version>
             </dependency>
         </dependencies>
     </project>
    
  4. Installera Azure OpenAI SDK och beroenden.

    mvn clean dependency:copy-dependencies
    
  5. 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:

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din resurs från Azure Portal.
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 Resurshanteringsmodelldistributioner> i Azure Portal.
OPENAI_API_VERSION Läs mer om API-versioner.

Du kan ändra versionen i koden eller använda en miljövariabel.

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

Kör appen

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 DefaultAzureCredential-objektet med ett AzureKeyCredential objekt.

OpenAIClient client = new OpenAIClientBuilder()
    .endpoint(endpoint)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildAsyncClient();

Följ de här stegen för att skapa ett konsolprogram för taligenkänning.

  1. Skapa en ny fil med namnet Quickstart.java i samma projektrotkatalog.

  2. Kopiera följande kod till Quickstart.java:

    import com.azure.ai.openai.OpenAIClient;
    import com.azure.ai.openai.OpenAIClientBuilder;
    import com.azure.ai.openai.models.ChatChoice;
    import com.azure.ai.openai.models.ChatCompletions;
    import com.azure.ai.openai.models.ChatCompletionsOptions;
    import com.azure.ai.openai.models.ChatRequestAssistantMessage;
    import com.azure.ai.openai.models.ChatRequestMessage;
    import com.azure.ai.openai.models.ChatRequestSystemMessage;
    import com.azure.ai.openai.models.ChatRequestUserMessage;
    import com.azure.ai.openai.models.ChatResponseMessage;
    import com.azure.ai.openai.models.CompletionsUsage;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.azure.core.util.Configuration;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class QuickstartEntra {
    
        public static void main(String[] args) {
    
            String endpoint = Configuration.getGlobalConfiguration().get("AZURE_OPENAI_ENDPOINT");
            String deploymentOrModelId = "gpt-4o";
    
            // Use the recommended keyless credential instead of the AzureKeyCredential credential.
    
            OpenAIClient client = new OpenAIClientBuilder()
                .endpoint(endpoint)
                .credential(new DefaultAzureCredentialBuilder().build())
                .buildClient();
    
            List<ChatRequestMessage> chatMessages = new ArrayList<>();
            chatMessages.add(new ChatRequestSystemMessage("You are a helpful assistant."));
            chatMessages.add(new ChatRequestUserMessage("Can I use honey as a substitute for sugar?"));
            chatMessages.add(new ChatRequestAssistantMessage("Yes, you can use use honey as a substitute for sugar."));
            chatMessages.add(new ChatRequestUserMessage("What other ingredients can I use as a substitute for sugar?"));    
    
            ChatCompletions chatCompletions = client.getChatCompletions(deploymentOrModelId, new ChatCompletionsOptions(chatMessages));
    
            System.out.printf("Model ID=%s is created at %s.%n", chatCompletions.getId(), chatCompletions.getCreatedAt());
            for (ChatChoice choice : chatCompletions.getChoices()) {
                ChatResponseMessage message = choice.getMessage();
                System.out.printf("Index: %d, Chat Role: %s.%n", choice.getIndex(), message.getRole());
                System.out.println("Message:");
                System.out.println(message.getContent());
            }
    
            System.out.println();
            CompletionsUsage usage = chatCompletions.getUsage();
            System.out.printf("Usage: number of prompt token is %d, "
                    + "number of completion token is %d, and number of total tokens in request and response is %d.%n",
                usage.getPromptTokens(), usage.getCompletionTokens(), usage.getTotalTokens());
        }
    }
    
  3. Kör det nya konsolprogrammet för att generera en avbildning:

    javac Quickstart.java -cp ".;target\dependency\*"
    java -cp ".;target\dependency\*" Quickstart
    

Utdata

Model ID=chatcmpl-BDgC0Yr8YNhZFhLABQYfx6QfERsVO is created at 2025-03-21T23:35:52Z.
Index: 0, Chat Role: assistant.
Message:
If you're looking to replace sugar in cooking, baking, or beverages, there are several alternatives you can use depending on your tastes, dietary needs, and the recipe. Here's a list of common sugar substitutes:

### **Natural Sweeteners**
1. **Honey**
   - Sweeter than sugar, so you may need less.
   - Adds moisture to recipes.
   - Adjust liquids and cooking temperature when baking to avoid over-browning.

2. **Maple Syrup**
   - Provides a rich, complex flavor.
   - Can be used in baking, beverages, and sauces.
   - Reduce the liquid content slightly in recipes.

3. **Agave Syrup**
   - Sweeter than sugar and has a mild flavor.
   - Works well in drinks, smoothies, and desserts.
   - Contains fructose, so use sparingly.

4. **Date Sugar or Date Paste**
   - Made from dates, it's a whole-food sweetener with fiber and nutrients.
   - Great for baked goods and smoothies.
   - May darken recipes due to its color.

5. **Coconut Sugar**
   - Similar in taste and texture to brown sugar.
   - Less refined than white sugar.
   - Slightly lower glycemic index, but still contains calories.

6. **Molasses**
   - Dark, syrupy byproduct of sugar refining.
   - Strong flavor; best for specific recipes like gingerbread or BBQ sauce.

### **Artificial Sweeteners**
1. **Stevia**
   - Extracted from the leaves of the stevia plant.
   - Virtually calorie-free and much sweeter than sugar.
   - Available as liquid, powder, or granulated.

2. **Erythritol**
   - A sugar alcohol with few calories and a clean, sweet taste.
   - Doesn?t caramelize like sugar.
   - Often blended with other sweeteners.

3. **Xylitol**
   - A sugar alcohol similar to erythritol.
   - Commonly used in baking and beverages.
   - Toxic to pets (especially dogs), so handle carefully.

### **Whole Fruits**
1. **Mashed Bananas**
   - Natural sweetness works well in baking.
   - Adds moisture to recipes.
   - Can replace sugar partially or fully depending on the dish.

2. **Applesauce (Unsweetened)**
   - Adds sweetness and moisture to baked goods.
   - Reduce other liquids in the recipe accordingly.

3. **Pureed Dates, Figs, or Prunes**
   - Dense sweetness with added fiber and nutrients.
   - Ideal for energy bars, smoothies, and baking.

### **Other Options**
1. **Brown Rice Syrup**
   - Less sweet than sugar, with a mild flavor.
   - Good for granola bars and baked goods.

2. **Yacon Syrup**
   - Extracted from the root of the yacon plant.
   - Sweet and rich in prebiotics.
   - Best for raw recipes.

3. **Monk Fruit Sweetener**
   - Natural sweetener derived from monk fruit.
   - Often mixed with erythritol for easier use.
   - Provides sweetness without calories.

### **Tips for Substitution**
- Sweeteners vary in sweetness, texture, and liquid content, so adjust recipes accordingly.
- When baking, reducing liquids or fats slightly may be necessary.
- Taste test when possible to ensure the sweetness level matches your preference.

Whether you're seeking healthier options, low-calorie substitutes, or simply alternatives for flavor, these sugar substitutes can work for a wide range of recipes!

Usage: number of prompt token is 60, number of completion token is 740, and number of total tokens in request and response is 800.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

Källkod | Artefakter (Maven) | Exempel

Förutsättningar

Konfigurera

Hämta nyckel och slutpunkt

Om du vill göra ett anrop mot Azure OpenAI behöver du en slutpunkt och en nyckel.

Variabelnamn Värde
ENDPOINT Tjänstslutpunkten finns i avsnittet Nycklar och slutpunkter när du undersöker resursen från Azure Portal. Du kan också hitta slutpunkten via sidan Distributioner i Azure AI Foundry-portalen. En exempelslutpunkt är: https://docs-test-001.openai.azure.com/.
API-KEY Det här värdet finns i avsnittet Nycklar och slutpunkt när du undersöker resursen från Azure-portalen. Du kan använda antingen KEY1 eller KEY2.

Gå till resursen i Azure Portal. Avsnittet Nycklar och slutpunkter finns i avsnittet Resurshantering . Kopiera slutpunkten och åtkomstnyckeln eftersom du behöver båda för att autentisera dina API-anrop. 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.

Skärmbild av översiktsgränssnittet för en Azure OpenAI-resurs i Azure Portal med slutpunkten och åtkomstnycklarnas plats inringad i rött.

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.

Kommentar

Spring AI sätter modellen till standardvärdet 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_API_KEY="REPLACE_WITH_YOUR_KEY_VALUE_HERE"
export SPRING_AI_AZURE_OPENAI_ENDPOINT="REPLACE_WITH_YOUR_ENDPOINT_HERE"
export SPRING_AI_AZURE_OPENAI_MODEL="REPLACE_WITH_YOUR_MODEL_NAME_HERE"

Skapa ett nytt Spring-program

Skapa ett nytt Spring-projekt.

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

mkdir ai-chat-demo && cd ai-chat-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-chat-demo -n AIChat --force --build maven -x

De genererade filerna och mapparna liknar följande struktur:

ai-chat-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
    |-- main/
    |   |-- resources/
    |   |   |-- application.properties
    |   |-- java/
    |       |-- com/
    |           |-- example/
    |               |-- aichatdemo/
    |                   |-- AiChatApplication.java
    |-- test/
        |-- java/
            |-- com/
                |-- example/
                    |-- aichatdemo/
                        |-- AiChatApplicationTests.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-chat-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>AIChat</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>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/aichatdemo öppnar du AiChatApplication.java i önskad redigerare eller IDE och klistrar in följande kod:

    package com.example.aichatdemo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.ai.client.AiClient;
    import org.springframework.ai.prompt.Prompt;
    import org.springframework.ai.prompt.messages.ChatMessage;
    import org.springframework.ai.prompt.messages.Message;
    import org.springframework.ai.prompt.messages.MessageType;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class AiChatApplication implements CommandLineRunner
    {
        private static final String ROLE_INFO_KEY = "role";
    
        @Autowired
        private AiClient aiClient;
    
        public static void main(String[] args) {
            SpringApplication.run(AiChatApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception
        {
            System.out.println(String.format("Sending chat prompts to AI service. One moment please...\r\n"));
    
            final List<Message> msgs = new ArrayList<>();
    
            msgs.add(new ChatMessage(MessageType.SYSTEM, "You are a helpful assistant"));
            msgs.add(new ChatMessage(MessageType.USER, "Does Azure OpenAI support customer managed keys?"));
            msgs.add(new ChatMessage(MessageType.ASSISTANT, "Yes, customer managed keys are supported by Azure OpenAI?"));
            msgs.add(new ChatMessage(MessageType.USER, "Do other Azure AI services support this too?"));
    
            final var resps = aiClient.generate(new Prompt(msgs));
    
            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()));
              });
        }
    
    }
    

    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 artikeln om Säkerhet för Azure AI-tjänster.

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

    ./mvnw spring-boot:run
    

Utdata

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

2023-11-07T13:31:10.884-06:00  INFO 6248 --- [           main] c.example.aichatdemo.AiChatApplication   : No active profile set, falling back to 1 default profile: "default"
2023-11-07T13:31:11.595-06:00  INFO 6248 --- [           main] c.example.aichatdemo.AiChatApplication   : Started AiChatApplication in 0.994 seconds (process running for 1.28)
Sending chat prompts to AI service. One moment please...

Prompt created 1 generated response(s).
Generated respose from "assistant": Yes, other Azure AI services also support customer managed keys. Azure AI Services, Azure Machine Learning, and other AI services in Azure provide options for customers to manage and control their encryption keys. This allows customers to have greater control over their data and security.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

Fler exempel finns på GitHub-lagringsplatsen Azure OpenAI Samples

Källkod | Paket (npm) | Exempel

Anteckning

Den här guiden använder det senaste OpenAI npm-paketet som nu har fullt stöd för Azure OpenAI. Om du letar efter kodexempel för äldre Azure OpenAI JavaScript SDK är de fortfarande tillgängliga på den här lagringsplatsen.

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 Portal under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Konfigurera

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

    mkdir chat-quickstart && cd chat-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
    

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs:

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din resurs från Azure Portal.
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 Resurshanteringsmodelldistributioner> i Azure Portal.
OPENAI_API_VERSION Läs mer om API-versioner.

Du kan ändra versionen i koden eller använda en miljövariabel.

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

Varning

Om du vill använda den rekommenderade nyckellösa autentiseringen med SDK:t kontrollerar du att AZURE_OPENAI_API_KEY miljövariabeln inte har angetts.

Skapa ett exempelprogram

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

    const { AzureOpenAI } = require("openai");
    const { 
      DefaultAzureCredential, 
      getBearerTokenProvider 
    } = require("@azure/identity");
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-05-01-preview";
    const deployment = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o"; //This must match your deployment name.
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    async function main() {
    
      const client = new AzureOpenAI({ endpoint, apiKey, azureADTokenProvider, deployment });
      const result = await client.chat.completions.create({
        messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "Does Azure OpenAI support customer managed keys?" },
        { role: "assistant", content: "Yes, customer managed keys are supported by Azure OpenAI?" },
        { role: "user", content: "Do other Azure AI services support this too?" },
        ],
        model: "",
      });
    
      for (const choice of result.choices) {
        console.log(choice.message);
      }
    }
    
    main().catch((err) => {
      console.error("The sample encountered an error:", err);
    });
    
    module.exports = { main };
    
  2. Logga in på Azure med följande kommando:

    az login
    
  3. Kör JavaScript-filen.

    node index.js
    

Output

== Chat Completions Sample ==
{
  content: 'Yes, several other Azure AI services also support customer managed keys for enhanced security and control over encryption keys.',
  role: 'assistant'
}

Kommentar

Om du får felet: Felet inträffade: OpenAIError: Argumenten apiKey och azureADTokenProvider är ömsesidigt uteslutande, endast en kan skickas åt gången. Du kan behöva ta bort en befintlig miljövariabel för API-nyckeln från systemet. Även om Microsoft Entra ID-kodexemplet inte uttryckligen refererar till API-nyckelmiljövariabeln, genereras fortfarande det här felet om det finns en i systemet som kör det här exemplet.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

Exempel på källkodspaket (npm) |

Kommentar

Den här guiden använder det senaste OpenAI npm-paketet som nu har fullt stöd för Azure OpenAI. Om du letar efter kodexempel för äldre Azure OpenAI JavaScript SDK är de fortfarande tillgängliga på den här lagringsplatsen.

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 Portal under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Konfigurera

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

    mkdir chat-quickstart && cd chat-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
    

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs:

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din resurs från Azure Portal.
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 Resurshanteringsmodelldistributioner> i Azure Portal.
OPENAI_API_VERSION Läs mer om API-versioner.

Du kan ändra versionen i koden eller använda en miljövariabel.

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

Varning

Om du vill använda den rekommenderade nyckellösa autentiseringen med SDK:t kontrollerar du att AZURE_OPENAI_API_KEY miljövariabeln inte har angetts.

Skapa ett exempelprogram

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

    import { AzureOpenAI } from "openai";
    import { 
      DefaultAzureCredential, 
      getBearerTokenProvider 
    } from "@azure/identity";
    import type {
      ChatCompletion,
      ChatCompletionCreateParamsNonStreaming,
    } from "openai/resources/index";
    
    // You will need to set these environment variables or edit the following values
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint";
    
    // Required Azure OpenAI deployment name and API version
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-08-01-preview";
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o-mini"; //This must match your deployment name.
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    function getClient(): AzureOpenAI {
      return new AzureOpenAI({
        endpoint,
        azureADTokenProvider,
        apiVersion,
        deployment: deploymentName,
      });
    }
    
    function createMessages(): ChatCompletionCreateParamsNonStreaming {
      return {
        messages: [
          { role: "system", content: "You are a helpful assistant." },
          {
            role: "user",
            content: "Does Azure OpenAI support customer managed keys?",
          },
          {
            role: "assistant",
            content: "Yes, customer managed keys are supported by Azure OpenAI?",
          },
          { role: "user", content: "Do other Azure AI services support this too?" },
        ],
        model: "",
      };
    }
    async function printChoices(completion: ChatCompletion): Promise<void> {
      for (const choice of completion.choices) {
        console.log(choice.message);
      }
    }
    export async function main() {
      const client = getClient();
      const messages = createMessages();
      const result = await client.chat.completions.create(messages);
      await printChoices(result);
    }
    
    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. Kör koden med följande kommando:

    node index.js
    

Utdata

== Chat Completions Sample ==
{
  content: 'Yes, several other Azure AI services also support customer managed keys for enhanced security and control over encryption keys.',
  role: 'assistant'
}

Kommentar

Om du får felet: Felet inträffade: OpenAIError: Argumenten apiKey och azureADTokenProvider är ömsesidigt uteslutande, endast en kan skickas åt gången. Du kan behöva ta bort en befintlig miljövariabel för API-nyckeln från systemet. Även om Microsoft Entra ID-kodexemplet inte uttryckligen refererar till API-nyckelmiljövariabeln, genereras fortfarande det här felet om det finns en i systemet som kör det här exemplet.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

Bibliotekskällkod | Paket (PyPi) | Mall för företagsspecifik chatt med Retrieval Augmented Generation (RAG) |

Förutsättningar

Ställ in

Installera OpenAI Python-klientbiblioteket med:

pip install openai

Kommentar

Det här biblioteket underhålls av OpenAI. Se versionshistoriken för att spåra de senaste uppdateringarna i biblioteket.

Hämta nyckel och slutpunkt

Om du vill göra ett anrop mot Azure OpenAI behöver du en slutpunkt och en nyckel.

Variabelnamn Värde
ENDPOINT Tjänstslutpunkten finns i avsnittet Nycklar och slutpunkter när du undersöker resursen från Azure Portal. Du kan också hitta slutpunkten via sidan Distributioner i Azure AI Foundry-portalen. En exempelslutpunkt är: https://docs-test-001.openai.azure.com/.
API-KEY Det här värdet finns i avsnittet Nycklar och slutpunkt när du undersöker resursen från Azure-portalen. Du kan använda antingen KEY1 eller KEY2.

Gå till resursen i Azure Portal. Avsnittet Nycklar och slutpunkter finns i avsnittet Resurshantering . Kopiera slutpunkten och åtkomstnyckeln eftersom du behöver båda för att autentisera dina API-anrop. 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.

Skärmbild av översiktsgränssnittet för en Azure OpenAI-resurs i Azure Portal med slutpunkten och åtkomstnycklarnas plats inringad i rött.

Miljövariabler

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

Viktigt!

Vi rekommenderar Microsoft Entra-ID-autentisering med hanterade identiteter för Azure-resurser för att undvika att lagra autentiseringsuppgifter med dina program som körs i molnet.

Använd API-nycklar med försiktighet. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt. Om du använder API-nycklar lagrar du dem säkert i Azure Key Vault, roterar nycklarna regelbundet och begränsar åtkomsten till Azure Key Vault med hjälp av rollbaserad åtkomstkontroll och begränsningar för nätverksåtkomst. 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.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Skapa ett nytt Python-program

  1. Skapa en ny Python-fil med namnet quickstart.py. Öppna den sedan i önskad redigerare eller IDE.

  2. Ersätt innehållet i quickstart.py med följande kod.

Du måste ange variabeln model till det distributionsnamn du valde när du distribuerade modellerna GPT-3.5-Turbo eller GPT-4. Om du anger modellnamnet uppstår ett fel om du inte väljer ett distributionsnamn som är identiskt med det underliggande modellnamnet.

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

response = client.chat.completions.create(
    model="gpt-35-turbo", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.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 artikeln om Säkerhet för Azure AI-tjänster.

  1. Kör programmet med python kommandot i snabbstartsfilen:

    python quickstart.py
    

Output

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Yes, most of the Azure AI services support customer managed keys. However, not all services support it. You can check the documentation of each service to confirm if customer managed keys are supported.",
        "role": "assistant"
      }
    }
  ],
  "created": 1679001781,
  "id": "chatcmpl-6upLpNYYOx2AhoOYxl9UgJvF4aPpR",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 39,
    "prompt_tokens": 58,
    "total_tokens": 97
  }
}
Yes, most of the Azure AI services support customer managed keys. However, not all services support it. You can check the documentation of each service to confirm if customer managed keys are supported.

Förstå meddelandestrukturen

Modellerna GPT-35-Turbo och GPT-4 ä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 och assistent. Systemmeddelandet kan användas för att primsätta modellen genom att inkludera kontext eller instruktioner om hur modellen ska svara.

Guiden GPT-35-Turbo & GPT-4 ger en djupgående introduktion till alternativen för kommunikation med dessa nya modeller.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

REST API-specifikation |

Förutsättningar

Konfigurera

Hämta nyckel och slutpunkt

Om du vill göra ett anrop mot Azure OpenAI behöver du en slutpunkt och en nyckel.

Variabelnamn Värde
ENDPOINT Tjänstslutpunkten finns i avsnittet Nycklar och slutpunkter när du undersöker resursen från Azure Portal. Du kan också hitta slutpunkten via sidan Distributioner i Azure AI Foundry-portalen. En exempelslutpunkt är: https://docs-test-001.openai.azure.com/.
API-KEY Det här värdet finns i avsnittet Nycklar och slutpunkt när du undersöker resursen från Azure-portalen. Du kan använda antingen KEY1 eller KEY2.

Gå till resursen i Azure Portal. Avsnittet Nycklar och slutpunkter finns i avsnittet Resurshantering . Kopiera slutpunkten och åtkomstnyckeln eftersom du behöver båda för att autentisera dina API-anrop. 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.

Skärmbild av översiktsgränssnittet för en Azure OpenAI-resurs i Azure Portal med slutpunkten och åtkomstnycklarnas plats inringad i rött.

Miljövariabler

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

Viktigt!

Vi rekommenderar Microsoft Entra-ID-autentisering med hanterade identiteter för Azure-resurser för att undvika att lagra autentiseringsuppgifter med dina program som körs i molnet.

Använd API-nycklar med försiktighet. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt. Om du använder API-nycklar lagrar du dem säkert i Azure Key Vault, roterar nycklarna regelbundet och begränsar åtkomsten till Azure Key Vault med hjälp av rollbaserad åtkomstkontroll och begränsningar för nätverksåtkomst. 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.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

REST-API

Kör följande kommando i ett bash-gränssnitt. Du måste ersätta gpt-35-turbo med det distributionsnamn du valde när du distribuerade MODELLERNA GPT-35-Turbo eller GPT-4. Om du anger modellnamnet uppstår ett fel om du inte väljer ett distributionsnamn som är identiskt med det underliggande modellnamnet.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/gpt-35-turbo/chat/completions?api-version=2024-02-01 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'

Formatet för den första raden i kommandot med ett exempel på en slutpunkt skulle se ut på följande sätt curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/chat/completions?api-version=2024-02-01 \ Om du stöter på ett fel, kontrollera noggrant så att du inte har en fördubbling av / vid separationen mellan din slutpunkt och /openai/deployments.

Om du vill köra det här kommandot i en vanlig Windows-kommandotolk måste du ändra texten för att ta bort radbrytningarna \ och .

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 artikeln om Säkerhet för Azure AI-tjänster.

Output

{"id":"chatcmpl-6v7mkQj980V1yBec6ETrKPRqFjNw9",
"object":"chat.completion","created":1679072642,
"model":"gpt-35-turbo",
"usage":{"prompt_tokens":58,
"completion_tokens":68,
"total_tokens":126},
"choices":[{"message":{"role":"assistant",
"content":"Yes, other Azure AI services also support customer managed keys. Azure AI services offer multiple options for customers to manage keys, such as using Azure Key Vault, customer-managed keys in Azure Key Vault or customer-managed keys through Azure Storage service. This helps customers ensure that their data is secure and access to their services is controlled."},"finish_reason":"stop","index":0}]}

Utdataformatering justerad för enkel läsning, faktiska utdata är ett enda textblock utan radbrytningar.

Förstå meddelandestrukturen

Modellerna GPT-35-Turbo och GPT-4 ä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 och assistent. Systemmeddelandet kan användas för att primsätta modellen genom att inkludera kontext eller instruktioner om hur modellen ska svara.

Guiden GPT-35-Turbo & GPT-4 ger en djupgående introduktion till alternativen för kommunikation med dessa nya modeller.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg

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 Portal under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

Hämta resursinformation

Du måste hämta följande information för att autentisera ditt program med din Azure OpenAI-resurs:

Variabelnamn Värde
AZURE_OPENAI_ENDPOINT Det här värdet finns i avsnittet Nycklar och slutpunkter när du undersöker din resurs från Azure Portal.
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 Resurshanteringsmodelldistributioner> i Azure Portal.
OPENAI_API_VERSION Läs mer om API-versioner.

Du kan ändra versionen i koden eller använda en miljövariabel.

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

Skapa ett nytt PowerShell-skript

  1. För den rekommenderade nyckellösa autentiseringen med Microsoft Entra-ID loggar du in på Azure med följande kommando:

    az login
    
  2. Skapa en ny PowerShell-fil med namnet quickstart.ps1. Öppna den sedan i önskad redigerare eller IDE.

  3. Ersätt innehållet i quickstart.ps1 med följande kod. Du måste ange variabeln engine till det distributionsnamn som du valde när du distribuerade GPT-4o-modellen. Om du anger modellnamnet resulterar det i ett fel om du inte väljer ett distributionsnamn som är identiskt med det underliggande modellnamnet.

    # Azure OpenAI metadata variables
    $openai = @{
       api_base    = $Env:AZURE_OPENAI_ENDPOINT
       api_version = '2024-10-21' # This can change in the future.
       name        = 'gpt-4o' # The name you chose for your model deployment.
    }
    
    # Use the recommended keyless authentication via bearer token.
    $headers = [ordered]@{
        #'api-key' = $Env:AZURE_OPENAI_API_KEY
        'Authorization' = "Bearer $($Env:DEFAULT_AZURE_CREDENTIAL_TOKEN)"
    }
    
    # Completion text
    $messages = @()
    $messages += @{
      role = 'system'
      content = 'You are a helpful assistant.'
    }
    $messages += @{
      role = 'user'
      content = 'Can I use honey as a substitute for sugar?'
    }
    $messages += @{
      role = 'assistant'
      content = 'Yes, you can use honey as a substitute for sugar.'
    }
    $messages += @{
      role = 'user'
      content = 'What other ingredients can I use as a substitute for sugar?'
    }
    
    # Adjust these values to fine-tune completions
    $body = [ordered]@{
       messages = $messages
    } | ConvertTo-Json
    
    # Send a request to generate an answer
    $url = "$($openai.api_base)/openai/deployments/$($openai.name)/chat/completions?api-version=$($openai.api_version)"
    
    $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
    return $response
    

    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 artikeln om Säkerhet för Azure AI-tjänster.

  4. Kör skriptet med Hjälp av PowerShell. I det här exemplet använder vi parametern -Depth för att säkerställa att utdata inte trunkeras.

    ./quickstart.ps1 | ConvertTo-Json -Depth 4
    

Utdata

Utdata från skriptet är ett JSON-objekt som innehåller svaret från Azure OpenAI-tjänsten. Utdata ser ut ungefär så här:

{
  "choices": [
    {
      "content_filter_results": {
        "custom_blocklists": {
          "filtered": false
        },
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "protected_material_code": {
          "filtered": false,
          "detected": false
        },
        "protected_material_text": {
          "filtered": false,
          "detected": false
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      },
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "content": "There are many alternatives to sugar that can be used in cooking and baking, depending on your dietary needs, taste preferences, and the type of recipe you're making. Here are some popular sugar substitutes:\n\n---\n\n### 1. **Natural Sweeteners**\n   - **Maple Syrup**: A natural sweetener with a rich, distinct flavor. Use about ¾ cup of maple syrup for every cup of sugar, and reduce the liquid in the recipe slightly.\n   - **Agave Nectar**: A liquid sweetener that’s sweeter than sugar. Use about ⅔ cup of agave nectar for each cup of sugar, and reduce the liquid in the recipe.\n   - **Coconut Sugar**: Made from the sap of the coconut palm, it has a mild caramel flavor. Substitute in a 1:1 ratio for sugar.\n   - **Molasses**: A by-product of sugar production, molasses is rich in flavor and best for recipes like gingerbread or barbecue sauce. Adjust quantities based on the recipe.\n   - **Stevia (Natural)**: Derived from the stevia plant, it's intensely sweet and available in liquid or powder form. Use sparingly, as a little goes a long way.\n\n---\n\n### 2. **Fruit-Based Sweeteners**\n   - **Ripe Bananas**: Mashed bananas work well for baking recipes like muffins or pancakes. Use about ½ cup of mashed banana for every cup of sugar and reduce the liquid slightly.\n   - **Applesauce**: Unsweetened applesauce adds sweetness and moisture to baked goods. Replace sugar in a 1:1 ratio, but reduce the liquid by ¼ cup.\n   - **Dates/Date Paste**: Blend dates with water to make a paste, which works well in recipes like energy bars, cakes, or smoothies. Use in a 1:1 ratio for sugar.\n   - **Fruit Juices (e.g., orange juice)**: Can be used to impart natural sweetness but is best suited for specific recipes like marinades or desserts.\n\n---\n\n### 3. **Artificial and Low-Calorie Sweeteners**\n   - **Erythritol**: A sugar alcohol with no calories. Substitute in equal amounts, but be careful as it may cause a cooling sensation in some recipes.\n   - **Xylitol**: Another sugar alcohol, often used in gum and candies. It’s a 1:1 sugar substitute but may affect digestion if consumed in large quantities.\n   - **Monk Fruit Sweetener**: A natural, calorie-free sweetener that’s significantly sweeter than sugar. Follow the product packaging for exact substitution measurements.\n   - **Aspartame, Sucralose, or Saccharin** (Artificial Sweeteners): Often used for calorie reduction in beverages or desserts. Follow package instructions for substitution.\n\n---\n\n### 4. **Other Natural Alternatives**\n   - **Brown Rice Syrup**: A sticky, malt-flavored syrup used in granolas or desserts. Substitute 1 ¼ cups of brown rice syrup for every cup of sugar.\n   - **Barley Malt Syrup**: A thick, dark syrup with a distinct flavor. It can replace sugar but might require recipe adjustments due to its strong taste.\n   - **Yacon Syrup**: Made from the root of the yacon plant, it’s similar in texture to molasses and has a mild sweetness.\n\n---\n\n### General Tips for Substituting Sugar:\n- **Adjust Liquids:** Many liquid sweeteners (like honey or maple syrup) require reducing the liquid in the recipe to maintain texture.\n- **Baking Powder Adjustment:** If replacing sugar with an acidic sweetener (e.g., honey or molasses), you might need to add a little baking soda to neutralize acidity.\n- **Flavor Changes:** Some substitutes, like molasses or coconut sugar, have distinct flavors that can influence the taste of your recipe.\n- **Browning:** Sugar contributes to caramelization and browning in baked goods. Some alternatives may yield lighter-colored results.\n\nBy trying out different substitutes, you can find what works best for your recipes!",
        "refusal": null,
        "role": "assistant"
      }
    }
  ],
  "created": 1742602230,
  "id": "chatcmpl-BDgjWjEboQ0z6r58pvSBgH842JbB2",
  "model": "gpt-4o-2024-11-20",
  "object": "chat.completion",
  "prompt_filter_results": [
    {
      "prompt_index": 0,
      "content_filter_results": {
        "custom_blocklists": {
          "filtered": false
        },
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "jailbreak": {
          "filtered": false,
          "detected": false
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  ],
  "system_fingerprint": "fp_a42ed5ff0c",
  "usage": {
    "completion_tokens": 836,
    "completion_tokens_details": {
      "accepted_prediction_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 0,
      "rejected_prediction_tokens": 0
    },
    "prompt_tokens": 60,
    "prompt_tokens_details": {
      "audio_tokens": 0,
      "cached_tokens": 0
    },
    "total_tokens": 896
  }
}

Anmärkningar

Du kan hoppa över steget ConvertTo-Json om du vill se råutdata.

./quickstart.ps1

Utdata ser ut så här:

choices               : {@{content_filter_results=; finish_reason=stop; index=0; logprobs=; message=}}
created               : 1742602727
id                    : chatcmpl-BDgrX0BF38mZuszFeyU1NKZSiRpSX
model                 : gpt-4o-2024-11-20
object                : chat.completion
prompt_filter_results : {@{prompt_index=0; content_filter_results=}}
system_fingerprint    : fp_b705f0c291
usage                 : @{completion_tokens=944; completion_tokens_details=; prompt_tokens=60; prompt_tokens_details=; total_tokens=1004}

Du kan redigera innehållet i powershell.ps1 skriptet för att returnera hela objektet eller en specifik egenskap. Om du till exempel vill returnera den returnerade texten kan du ersätta den sista raden i skriptet (return $response) med följande:

return $response.choices.message.content

Kör sedan skriptet igen.

./quickstart.ps1

Utdata ser ut så här:

There are several ingredients that can be used as substitutes for sugar, depending on the recipe and your dietary preferences. Here are some popular options:

---

### **Natural Sweeteners**
1. **Maple Syrup**
   - Flavor: Rich and slightly caramel-like.
   - Use: Works well in baking, sauces, oatmeal, and beverages.
   - Substitution: Replace sugar in a 1:1 ratio but reduce the liquid in your recipe by about 3 tablespoons per cup of maple syrup.

2. **Agave Nectar**
   - Flavor: Mildly sweet, less pronounced than honey.
   - Use: Good for beverages, desserts, and dressings.
   - Substitution: Use about 2/3 cup of agave nectar for every 1 cup of sugar, and reduce other liquids slightly.

3. **Molasses**
   - Flavor: Strong, earthy, and slightly bitter.
   - Use: Perfect for gingerbread, cookies, and marinades.
   - Substitution: Replace sugar in equal amounts, but adjust for the strong flavor.

4. **Date Paste**
   - Flavor: Naturally sweet with hints of caramel.
   - Use: Works well in energy bars, smoothies, or baking recipes.
   - Substitution: Blend pitted dates with water to create paste (about 1:1 ratio). Use equal amounts in recipes.

5. **Coconut Sugar**
   - Flavor: Similar to brown sugar, mildly caramel-like.
   - Use: Excellent for baking.
   - Substitution: Replace sugar in a 1:1 ratio.

---

### **Low-Calorie Sweeteners**
1. **Stevia**
   - Flavor: Very sweet but can have a slightly bitter aftertaste.
   - Use: Works in beverages, desserts, and some baked goods.
   - Substitution: Use less—around 1 teaspoon of liquid stevia or 1/2 teaspoon stevia powder for 1 cup of sugar. Check the package for exact conversion.

2. **Erythritol**
   - Flavor: Similar to sugar but less sweet.
   - Use: Perfect for baked goods and beverages.
   - Substitution: Replace sugar using a 1:1 ratio, though you may need to adjust for less sweetness.

3. **Xylitol**
   - Flavor: Similar to sugar.
   - Use: Great for baking or cooking but avoid using it for recipes requiring caramelization.
   - Substitution: Use a 1:1 ratio.

---

### **Fruit-Based Sweeteners**
1. **Mashed Bananas**
   - Flavor: Sweet with a fruity note.
   - Use: Great for muffins, cakes, and pancakes.
   - Substitution: Use 1 cup mashed banana for 1 cup sugar, but reduce liquid slightly in the recipe.

2. **Applesauce**
   - Flavor: Mildly sweet.
   - Use: Excellent for baked goods like muffins or cookies.
   - Substitution: Replace sugar 1:1, but reduce other liquids slightly.

3. **Fruit Juice Concentrates**
   - Flavor: Sweet with fruity undertones.
   - Use: Works well in marinades, sauces, and desserts.
   - Substitution: Use equal amounts, but adjust liquid content.

---

### **Minimal-Processing Sugars**
1. **Raw Honey**
   - Flavor: Sweet with floral undertones.
   - Use: Good for baked goods and beverages.
   - Substitution: Replace sugar in a 1:1 ratio, but reduce other liquids slightly.

2. **Brown Rice Syrup**
   - Flavor: Mildly sweet with a hint of nuttiness.
   - Use: Suitable for baked goods and granola bars.
   - Substitution: Use 1-1/4 cups of syrup for 1 cup of sugar, and decrease liquid in the recipe.

---

### Tips for Substitution:
- Adjust for sweetness: Some substitutes are sweeter or less sweet than sugar, so amounts may need tweaking.
- Baking considerations: Sugar affects texture, browning, and moisture. If you replace it, you may need to experiment to get the desired result.
- Liquid adjustments: Many natural sweeteners are liquid, so you’ll often need to reduce the amount of liquid in your recipe.

Would you like help deciding the best substitute for a specific recipe?

Förstå meddelandestrukturen

GPT-4-modellerna ä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 och assistent. Systemmeddelandet kan användas för att primsätta modellen genom att inkludera kontext eller instruktioner om hur modellen ska svara.

Guiden GPT-4 ger en djupgående introduktion till alternativen för kommunikation med dessa modeller.

Rensa resurser

Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.

Nästa steg