Freigeben über


Schnellstart: Erste Schritte mit Chatabschlussen mit Azure OpenAI in Azure KI Foundry Modellen

In diesem Artikel erfahren Sie die ersten Schritte für die Verwendung von Azure OpenAI.

Voraussetzungen

Gehe zu Azure KI Foundry

Navigieren Sie zum Azure AI Foundry-Portal , und melden Sie sich mit Anmeldeinformationen an, die Zugriff auf Ihre Azure OpenAI-Ressource haben. Wählen Sie während oder nach dem Anmeldeworkflow das passende Verzeichnis, Azure-Abonnement und die Azure OpenAI-Ressource aus.

Wählen Sie in Azure AI Foundry die Option Chat-Playground aus.

Spielplatz

Beginnen Sie mit der Erkundung der Azure OpenAI-Funktionen mit einem codefreien Ansatz über den Azure AI Foundry Chat-Playground. Auf dieser Seite können Sie die Funktionen ganz einfach schrittweise erkunden und mit ihnen experimentieren.

Screenshot der Seite Chat-Playground.

Einrichten

Sie können die Dropdownliste *Promptbeispiele verwenden, um zu Beginn einige vorab geladene Beispiele für Systemmeldungen auszuwählen.

Systemmeldungen geben dem Modell Anweisungen dazu, wie es sich verhalten sollte und auf welchen Kontext es beim Generieren einer Antwort verweisen soll. Sie können die Persönlichkeit des Assistenten beschreiben, ihm sagen, was er beantworten soll und was nicht, und ihm sagen, wie Antworten formatiert werden sollen.

Während Sie den Chat-Playground verwenden, können Sie jederzeit Code anzeigen auswählen, um Python-, cURL- und JSON-Codebeispiele anzuzeigen, die basierend auf Ihrer aktuellen Chat-Sitzung und Ihrer Auswahl der Einstellungen vorab ausgefüllt wurden. Sie können dann diesen Code verwenden und eine Anwendung schreiben, um dieselbe Aufgabe auszuführen, die Sie derzeit mit dem Playground ausführen.

Chat-Sitzung

Durch Auswählen der Schaltfläche Senden oder des Pfeils nach rechts wird der eingegebene Text an die Chatvervollständigungs-API gesendet, und die Ergebnisse werden in das Textfeld zurückgegeben.

Wählen Sie die Schaltfläche Chat löschen aus, um den aktuellen Konversationsverlauf zu löschen.

Wichtige Einstellungen

Name Beschreibung
Bereitstellungen Ihr Bereitstellungsname, der einem bestimmten Modell zugeordnet ist.
Hinzufügen Ihrer Daten
Parameter Benutzerdefinierte Parameter, die die Modellantworten ändern. Zu Beginn wird empfohlen, für die meisten Parameter die Standardwerte zu verwenden.
Temperatur Steuert die Zufälligkeit. Eine Senkung der Temperatur bedeutet, dass das Modell mehr wiederholte und deterministische Antworten erzeugt. Eine Erhöhung der Temperatur führt zu unerwarteten oder kreativen Antworten. Versuchen Sie, entweder die Temperatur oder Top P anzupassen, aber nicht beides.
Maximale Antwortanzahl (Token) Legen Sie einen Grenzwert für die Anzahl von Token pro Modellantwort fest. Die API der neuesten Modelle unterstützt insgesamt maximal 128.000 Token, die zwischen dem Prompt (einschließlich Systemmeldung, Beispielen, Nachrichtenverlauf und Benutzerabfrage) und der Antwort des Modells aufgeteilt werden. Ein Token für typisch englischen Text besteht aus ungefähr vier Zeichen.
Oberste p Ähnlich wie bei der Temperatur steuert dies die Zufälligkeit, aber es wird eine andere Methode verwendet. Eine Senkung von Top P schränkt die Token-Auswahl des Modells auf wahrscheinlichere Token ein. Bei einer Erhöhung von Top P kann das Modell aus Token mit hoher und niedriger Wahrscheinlichkeit auswählen. Versuchen Sie, entweder die Temperatur oder Top P anzupassen, aber nicht beides.
Stoppsequenzen Mit der Stoppsequenz beendet das Modell seine Antwort an einem gewünschten Punkt. Die Modellantwort endet vor der angegebenen Sequenz, sodass sie den Text der Stoppsequenz nicht enthält. Bei GPT-35-Turbo wird mit Verwendung von <|im_end|> sichergestellt, dass die Modellantwort keine Nachverfolgungs-Benutzerabfrage generiert. Sie können bis zu vier Stoppsequenzen einschließen.

Code anzeigen

Nachdem Sie mit dem Modell experimentiert haben, wählen Sie die Schaltfläche </> Code anzeigen aus. Dadurch erhalten Sie eine Wiedergabe des Codes hinter Ihrer gesamten bisherigen Unterhaltung:

Screenshot der Oberfläche zum Anzeigen von Code.

Grundlegendes zur Struktur der Eingabeaufforderung

Wenn Sie das Beispiel aus Code anzeigen untersuchen, sehen Sie, dass die Unterhaltung in drei verschiedene Rollen unterteilt ist: system, user, assistant. Jedes Mal, wenn Sie eine Nachricht an das Modell senden, wird der gesamte Verlauf der Unterhaltungen bis zu diesem Punkt erneut gesendet. Wenn Sie die Chatvervollständigungs-API verwenden, hat das Modell keinen echten Speicher der in der Vergangenheit an es gesendeten Inhalte. Sie stellen daher den Unterhaltungsverlauf als Kontext bereit, damit das Modell ordnungsgemäß reagieren kann.

Die Anleitung für Chatvervollständigung bietet eine ausführliche Einführung in die neue Promptstruktur und die effektive Verwendung von Chatvervollständigungsmodellen.

Bereitstellen Ihres Modells

Wenn Sie mit der Benutzeroberfläche zufrieden sind, können Sie eine Web-App direkt über das Portal bereitstellen, indem Sie die Schaltfläche Bereitstellen in auswählen.

Screenshot der Schaltfläche für die Modellimplementierung im Portal

Dadurch können Sie entweder eine eigenständige Webanwendung oder einen Copilot in Copilot Studio (Vorschau) bereitstellen, wenn Sie ihre eigenen Daten im Modell verwenden.

Beispiel: Wenn Sie sich für die Bereitstellung einer Webanwendung entscheiden:

Wenn Sie zum ersten Mal eine Web-App bereitstellen, sollten Sie Neue Web-App erstellen auswählen. Geben Sie der App einen Namen, der Teil der App-URL wird. Beispiel: https://<appname>.azurewebsites.net.

Wählen Sie Ihr Abonnement, Ihre Ressourcengruppe, Ihren Standort und Ihren Preisplan für die veröffentlichte App aus. Um eine bestehende App zu aktualisieren, wählen Sie In einer vorhandenen Web-App veröffentlichen aus, und wählen Sie den Namen Ihrer vorherigen App aus dem Dropdownmenü.

Wenn Sie sich für die Bereitstellung einer Webanwendung entscheiden, lesen Sie diese wichtigen Überlegungen zur Verwendung.

Bereinigen von Ressourcen

Nachdem Sie den Chat-Playground getestet haben, können Sie die Ressource oder Ressourcengruppe löschen, wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Nächste Schritte

Quellcode- | Paket (NuGet) | Beispiele| Retrieval Augmented Generation (RAG) – Vorlage für Unternehmenschat |

Voraussetzungen

Voraussetzungen für Microsoft Entra ID

Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:

  • Die Azure CLI installieren, die für die schlüssellose Authentifizierung mit Microsoft Entra ID verwendet wird
  • Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.

Einrichten

  1. Erstellen Sie einen neuen Ordner chat-quickstart , und wechseln Sie mit dem folgenden Befehl zum Schnellstartordner:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. Erstellen Sie eine neue Konsolenanwendung mit dem folgenden Befehl:

    dotnet new console
    
  3. Installieren Sie die OpenAI .NET-Clientbibliothek mit dem Befehl dotnet add package:

    dotnet add package Azure.AI.OpenAI --prerelease
    
  4. Installieren Sie für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID das Paket Azure.Identity mit:

    dotnet add package Azure.Identity
    
  5. Melden Sie sich für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID mit dem folgenden Befehl bei Azure an:

    az login
    

Abrufen von Ressourceninformationen

Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:

Variablenname Wert
AZURE_OPENAI_ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen.
AZURE_OPENAI_DEPLOYMENT_NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal.
OPENAI_API_VERSION Erfahren Sie mehr über API-Versionen.

Sie können die Version im Code ändern oder eine Umgebungsvariable verwenden.

Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.

Ausführen der Schnellstartanleitung

Der Beispielcode in diesem Schnellstart verwendet Microsoft Entra ID für die empfohlene schlüssellose Authentifizierung. Wenn Sie einen API-Schlüssel verwenden möchten, können Sie das DefaultAzureCredential Objekt durch ein AzureKeyCredential Objekt ersetzen.

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

Sie können Streaming oder Nicht-Streaming verwenden, um den Chatabschluss zu erhalten. Die folgenden Codebeispiele zeigen, wie beide Methoden verwendet werden. Das erste Beispiel zeigt, wie die Nicht-Streaming-Methode verwendet wird, und das zweite Beispiel zeigt, wie die Streamingmethode verwendet wird.

Ohne Antwortstreaming

Führen Sie die folgenden Schritte aus, um die Schnellstartanleitung auszuführen:

  1. Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code, und aktualisieren Sie die Platzhalterwerte durch Ihren eigenen.

    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 services support this too?")
        ]);
    
    Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");
    
  2. Führen Sie die Anwendung mit dem folgenden Befehl aus:

    dotnet run
    

Ausgabe

Assistant: Arrr, ye be askin’ a fine question, matey! Aye, several Azure 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!

Dadurch wird gewartet, bis das Modell seine gesamte Antwort generiert hat, bevor die Ergebnisse gedruckt werden. Wenn Sie die Antwort asynchron streamen und die Ergebnisse drucken möchten, können Sie alternativ den Inhalt von Program.cs durch den Code im nächsten Beispiel ersetzen.

Asynchron mit Streaming

Führen Sie die folgenden Schritte aus, um die Schnellstartanleitung auszuführen:

  1. Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code, und aktualisieren Sie die Platzhalterwerte durch Ihren eigenen.

    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 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. Führen Sie die Anwendung mit dem folgenden Befehl aus:

    dotnet run
    

Ausgabe

Assistant: Arrr, ye be askin’ a fine question, matey! Aye, many Azure 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!

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

Quellcode | Paket (Go)| Beispiele

Voraussetzungen

Voraussetzungen für Microsoft Entra ID

Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:

  • Die Azure CLI installieren, die für die schlüssellose Authentifizierung mit Microsoft Entra ID verwendet wird
  • Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.

Einrichten

  1. Erstellen Sie einen neuen Ordner chat-quickstart , und wechseln Sie mit dem folgenden Befehl zum Schnellstartordner:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. Melden Sie sich für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID mit dem folgenden Befehl bei Azure an:

    az login
    

Abrufen von Ressourceninformationen

Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:

Variablenname Wert
AZURE_OPENAI_ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen.
AZURE_OPENAI_DEPLOYMENT_NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal.
OPENAI_API_VERSION Erfahren Sie mehr über API-Versionen.

Sie können die Version im Code ändern oder eine Umgebungsvariable verwenden.

Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.

Ausführen der Schnellstartanleitung

Der Beispielcode in diesem Schnellstart verwendet Microsoft Entra ID für die empfohlene schlüssellose Authentifizierung. Wenn Sie einen API-Schlüssel verwenden möchten, können Sie die Implementierung von NewDefaultAzureCredential durch NewKeyCredential ersetzen.

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

So führen Sie das Beispiel aus:

  1. Erstellen Sie eine neue Datei mit dem Namen chat_completions_keyless.go. Kopieren Sie den folgenden Code in die Datei 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. Führen Sie den folgenden Befehl aus, um ein neues Go-Modul zu erstellen:

     go mod init chat_completions_keyless.go
    
  3. Führen Sie go mod tidy aus, um die erforderlichen Abhängigkeiten zu installieren.

    go mod tidy
    
  4. Führen Sie den folgenden Befehl aus, um das Beispiel auszuführen:

     go run chat_completions_keyless.go
    

Ausgabe

Die Ausgabe des Beispielcodes sieht ähnlich wie folgt aus:

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

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

Weitere Beispiele finden Sie im GitHub-Repository für Azure OpenAI-Beispiele

Quellcode | Artefakt (Maven) | Beispiele | Vorlage für Retrieval Augmented Generation (RAG) Unternehmenschat | IntelliJ IDEA

Voraussetzungen

Voraussetzungen für Microsoft Entra ID

Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:

  • Die Azure CLI installieren, die für die schlüssellose Authentifizierung mit Microsoft Entra ID verwendet wird
  • Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.

Einrichten

  1. Erstellen Sie einen neuen Ordner chat-quickstart , und wechseln Sie mit dem folgenden Befehl zum Schnellstartordner:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. Installieren Sie Apache Maven. Führen Sie dann mvn -v aus, um die erfolgreiche Installation zu bestätigen.

  3. Erstellen Sie im Stammverzeichnis Ihres Projekts eine neue Datei pom.xml, und kopieren Sie folgende Code in diese Datei:

    <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. Installieren Sie das Azure OpenAI SDK und Abhängigkeiten.

    mvn clean dependency:copy-dependencies
    
  5. Melden Sie sich für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID mit dem folgenden Befehl bei Azure an:

    az login
    

Abrufen von Ressourceninformationen

Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:

Variablenname Wert
AZURE_OPENAI_ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen.
AZURE_OPENAI_DEPLOYMENT_NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal.
OPENAI_API_VERSION Erfahren Sie mehr über API-Versionen.

Sie können die Version im Code ändern oder eine Umgebungsvariable verwenden.

Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.

App starten

Der Beispielcode in diesem Schnellstart verwendet Microsoft Entra ID für die empfohlene schlüssellose Authentifizierung. Wenn Sie einen API-Schlüssel verwenden möchten, können Sie das DefaultAzureCredential Objekt durch ein AzureKeyCredential Objekt ersetzen.

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

Führen Sie die folgenden Schritte aus, um eine Konsolenanwendung für die Spracherkennung zu erstellen.

  1. Erstellen Sie eine neue Datei mit dem Namen Quickstart.java im selben Projektstammverzeichnis.

  2. Kopieren Sie den folgenden Code in 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. Führen Sie die neue Konsolenanwendung aus, um ein Image zu generieren:

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

Ausgabe

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.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

Quellcode | Artifacts (Maven) | Beispiel

Voraussetzungen

Einrichten

Abrufen von Schlüssel und Endpunkt

Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.

Variablenname Wert
ENDPOINT Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
API-KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Den Abschnitt Schlüssel und Endpunkt finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in der die Speicherorte für Endpunkt und Zugriffsschlüssel rot umrandet sind

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Wichtig

Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn sicher in Azure Key Vault. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

Hinweis

Spring KI setzt den Modellnamen standardmäßig auf gpt-35-turbo. Es ist nur erforderlich, den SPRING_AI_AZURE_OPENAI_MODEL Wert bereitzustellen, wenn Sie ein Modell mit einem anderen Namen bereitgestellt haben.

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"

Erstellen einer neuen Spring-Anwendung

Erstellen Sie ein neues Spring-Projekt.

Erstellen Sie in einem Bash-Fenster ein neues Verzeichnis für Ihre App, und navigieren Sie dorthin.

mkdir ai-chat-demo && cd ai-chat-demo

Führen Sie den Befehl spring init in Ihrem Arbeitsverzeichnis aus. Dieser Befehl erstellt eine Standardverzeichnisstruktur für Ihr Spring-Projekt, einschließlich der Hauptquelldatei der Java-Klassen und der Datei pom.xml, die für die Verwaltung von Maven-basierten Projekten verwendet wird.

spring init -a ai-chat-demo -n AIChat --force --build maven -x

Die generierten Dateien und Ordner ähneln der folgenden 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

Spring-Anwendung bearbeiten

  1. Bearbeiten Sie die pom.xml-Datei.

    Öffnen Sie im Stammverzeichnis des Projektverzeichnisses die Datei pom.xml in Ihrem bevorzugten Editor oder Ihrer IDE, und überschreiben Sie die Datei mit folgendem Inhalt:

    <?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.3.4</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>
          <spring-ai.version>1.0.0-M5</spring-ai.version>
       </properties>
       <dependencies>
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
          </dependency>
          <dependency>
             <groupId>org.springframework.ai</groupId>
             <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
          </dependency>
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
          </dependency>
       </dependencies>
       <dependencyManagement>
          <dependencies>
             <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
             </dependency>
          </dependencies>
       </dependencyManagement>
       <build>
          <plugins>
             <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
          </plugins>
       </build>
       <repositories>
          <repository>
             <id>spring-milestones</id>
             <name>Spring Milestones</name>
             <url>https://repo.spring.io/milestone</url>
             <snapshots>
                <enabled>false</enabled>
             </snapshots>
          </repository>
       </repositories>
    
    </project>
    
  2. Öffnen Sie im Ordner src/main/java/com/example/aicompletiondemoAiCompletionApplication.java in Ihrem bevorzugten Editor oder Ihrer IDE, und fügen Sie den folgenden Code ein:

    package com.example.aichatdemo;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.ai.chat.client.ChatClient;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication
    public class AiChatApplication {
    
       private static final Logger log = LoggerFactory.getLogger(AiChatApplication.class);
    
       public static void main(String[] args) {
          SpringApplication.run(AiChatApplication.class, args);
       }
    
       @Bean
       CommandLineRunner commandLineRunner(ChatClient.Builder builder) {
          return args -> {
             var chatClient = builder.build();
             log.info("Sending chat prompts to AI service. One moment please...");
             String response = chatClient.prompt()
                   .user("What was Microsoft's original internal codename for the project that eventually became Azure?")
                   .call()
                   .content();
    
             log.info("Response: {}", response);
          };
       }
    }
    

    Wichtig

    Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie in diesem Sicherheitsartikel .

  3. Navigieren Sie zurück zum Projektstammordner, und führen Sie die App mithilfe des folgenden Befehls aus:

    ./mvnw spring-boot:run
    

Ausgabe

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v3.3.4)

2025-03-14T13:35:30.145-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Starting AiChatApplication using Java 23.0.2 with PID 93252 (/Users/vega/dev/msft/spring-ai-samples/ai-chat-demo/target/classes started by vega in /Users/vega/dev/msft/spring-ai-samples/ai-chat-demo)
2025-03-14T13:35:30.146-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : No active profile set, falling back to 1 default profile: "default"
2025-03-14T13:35:30.500-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Started AiChatApplication in 0.445 seconds (process running for 0.633)
2025-03-14T13:35:30.501-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Sending chat prompts to AI service. One moment please...
2025-03-14T13:35:31.950-04:00  INFO 93252 --- [AIChat] [           main] c.example.aichatdemo.AiChatApplication   : Response: Microsoft's original internal codename for the project that eventually became Azure was "Project Red Dog." This initiative ultimately led to the development and launch of the Microsoft Azure cloud computing platform.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

Weitere Beispiele finden Sie im GitHub-Repository für Azure OpenAI-Beispiele

Quellcode | Paket (npm) | Beispiele

Hinweis

In diesem Leitfaden wird das neuesten npm-Paket von OpenAI verwendet, das Azure OpenAI jetzt vollständig unterstützt. Wenn Sie Codebeispiele für das JavaScript-Legacy-SDK von Azure OpenAI suchen, sind diese derzeit noch in diesem Repository verfügbar.

Voraussetzungen

Voraussetzungen für Microsoft Entra ID

Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:

  • Die Azure CLI installieren, die für die schlüssellose Authentifizierung mit Microsoft Entra ID verwendet wird
  • Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.

Einrichten

  1. Erstellen Sie einen neuen Ordner chat-quickstart , und wechseln Sie mit dem folgenden Befehl zum Schnellstartordner:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. Erstellen Sie package.json mit dem folgenden Befehl:

    npm init -y
    
  3. Installieren Sie die OpenAI-Clientbibliothek für JavaScript mit:

    npm install openai
    
  4. Für die empfohlene kennwortlose Authentifizierung:

    npm install @azure/identity
    

Abrufen von Ressourceninformationen

Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:

Variablenname Wert
AZURE_OPENAI_ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen.
AZURE_OPENAI_DEPLOYMENT_NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal.
OPENAI_API_VERSION Erfahren Sie mehr über API-Versionen.

Sie können die Version im Code ändern oder eine Umgebungsvariable verwenden.

Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.

Achtung

Um die empfohlene schlüssellose Authentifizierung mit dem SDK zu verwenden, stellen Sie sicher, dass die Umgebungsvariable AZURE_OPENAI_API_KEY nicht festgelegt ist.

Erstellen einer Beispielanwendung

  1. Erstellen Sie die Datei index.js mit dem folgenden Code:

    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 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. Melden Sie sich mithilfe des folgenden Befehls bei Azure an:

    az login
    
  3. Führen Sie die JavaScript-Datei aus.

    node index.js
    

Ausgabe

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

Hinweis

Wenn der Fehler angezeigt wird: Fehler aufgetreten: OpenAIError: Die Argumente apiKey und azureADTokenProvider schließen sich gegenseitig aus; es kann jeweils nur eins übergeben werden. Möglicherweise müssen Sie eine bereits vorhandene Umgebungsvariable für den API-Schlüssel aus Ihrem System entfernen. Auch wenn das Microsoft Entra ID-Codebeispiel nicht explizit auf die API-Schlüsselumgebungsvariable verweist, wird dieser Fehler weiterhin ausgegeben, wenn eine API-Schlüsselumgebungsvariable in dem System vorhanden ist, das dieses Beispiel ausführt.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

Quellcode | Paket (npm) | Beispiele

Hinweis

In diesem Leitfaden wird das neuesten npm-Paket von OpenAI verwendet, das Azure OpenAI jetzt vollständig unterstützt. Wenn Sie Codebeispiele für das JavaScript-Legacy-SDK von Azure OpenAI suchen, sind diese derzeit noch in diesem Repository verfügbar.

Voraussetzungen

Voraussetzungen für Microsoft Entra ID

Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:

  • Die Azure CLI installieren, die für die schlüssellose Authentifizierung mit Microsoft Entra ID verwendet wird
  • Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.

Einrichten

  1. Erstellen Sie einen neuen Ordner chat-quickstart , und wechseln Sie mit dem folgenden Befehl zum Schnellstartordner:

    mkdir chat-quickstart && cd chat-quickstart
    
  2. Erstellen Sie package.json mit dem folgenden Befehl:

    npm init -y
    
  3. Aktualisieren Sie package.json mit dem folgenden Befehl auf ECMAScript:

    npm pkg set type=module
    
  4. Installieren Sie die OpenAI-Clientbibliothek für JavaScript mit:

    npm install openai
    
  5. Für die empfohlene kennwortlose Authentifizierung:

    npm install @azure/identity
    

Abrufen von Ressourceninformationen

Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:

Variablenname Wert
AZURE_OPENAI_ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen.
AZURE_OPENAI_DEPLOYMENT_NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal.
OPENAI_API_VERSION Erfahren Sie mehr über API-Versionen.

Sie können die Version im Code ändern oder eine Umgebungsvariable verwenden.

Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.

Achtung

Um die empfohlene schlüssellose Authentifizierung mit dem SDK zu verwenden, stellen Sie sicher, dass die Umgebungsvariable AZURE_OPENAI_API_KEY nicht festgelegt ist.

Erstellen einer Beispielanwendung

  1. Erstellen Sie die Datei index.ts mit dem folgenden Code:

    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 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. Erstellen Sie die Datei tsconfig.json, um den TypeScript-Code zu transpilieren, und kopieren Sie den folgenden Code 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. Transpilieren Sie von TypeScript in JavaScript:

    tsc
    
  4. Führen Sie den Code mithilfe des folgenden Befehls aus:

    node index.js
    

Ausgabe

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

Hinweis

Wenn der Fehler angezeigt wird: Fehler aufgetreten: OpenAIError: Die Argumente apiKey und azureADTokenProvider schließen sich gegenseitig aus; es kann jeweils nur eins übergeben werden. Möglicherweise müssen Sie eine bereits vorhandene Umgebungsvariable für den API-Schlüssel aus Ihrem System entfernen. Auch wenn das Microsoft Entra ID-Codebeispiel nicht explizit auf die API-Schlüsselumgebungsvariable verweist, wird dieser Fehler weiterhin ausgegeben, wenn eine API-Schlüsselumgebungsvariable in dem System vorhanden ist, das dieses Beispiel ausführt.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

Bibliotheksquellcode | Paket (PyPi) | Retrieval Augmented Generation (RAG) – Vorlage für Unternehmenschat |

Voraussetzungen

Einrichten

Installieren Sie die OpenAI Python-Clientbibliothek mit:

pip install openai

Hinweis

Diese Bibliothek wird von OpenAI verwaltet. Lesen Sie den Versionsverlauf, um die neuesten Updates für die Bibliothek nachzuverfolgen.

Abrufen von Schlüssel und Endpunkt

Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.

Variablenname Wert
ENDPOINT Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
API-KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Den Abschnitt Schlüssel und Endpunkt finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in der die Speicherorte für Endpunkt und Zugriffsschlüssel rot umrandet sind

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Wichtig

Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.

Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie API-Schlüssel verwenden, speichern Sie sie sicher in Azure Key Vault, rotieren Sie die Schlüssel regelmäßig, und beschränken Sie den Zugriff auf Azure Key Vault mithilfe von rollenbasierter Zugriffssteuerung und Netzwerkzugriffsbeschränkungen. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Erstellen einer neuen Python-Anwendung

  1. Erstellen Sie eine neue Python-Datei namens „quickstart.py“. Öffnen Sie diese anschließend in Ihrem bevorzugten Editor oder Ihrer bevorzugten IDE.

  2. Ersetzen Sie den Inhalt von „quickstart.py“ durch den folgenden Code.

Sie müssen die Variable model auf den Bereitstellungsnamen festlegen, den Sie bei der Bereitstellung der GPT-3.5-Turbo- oder GPT-4-Modelle ausgewählt haben. Die Eingabe des Modellnamens führt zu einem Fehler, es sei denn, Sie haben einen Bereitstellungsnamen ausgewählt, der mit dem zugrunde liegenden Modellnamen identisch ist.

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 services support this too?"}
    ]
)

print(response.choices[0].message.content)

Wichtig

Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie in diesem Sicherheitsartikel .

  1. Führen Sie die Anwendung mit dem Befehl python in Ihrer Schnellstartdatei aus.

    python quickstart.py
    

Ausgabe

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Yes, most of the Azure 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 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.

Grundlegendes zur Nachrichtenstruktur

Die GPT-35-Turbo- und GPT-4-Modelle sind für die Verwendung von Eingaben optimiert, die im Gesprächsformat vorliegen. Die Variable messages übergibt ein Array von Wörterbüchern mit verschiedenen Rollen in der Unterhaltung, die nach System, Benutzer und Assistent abgegrenzt sind. Die Systemnachricht kann zum Vorbereiten des Modells verwendet werden, indem Kontext oder Anweisungen für die Antworten des Modells eingeschlossen werden.

Die Schrittanleitung für GPT-35-Turbo und GPT-4 bietet eine ausführliche Einführung in die Optionen für die Kommunikation mit diesen neuen Modellen.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

REST-API-Spezifikation |

Voraussetzungen

Einrichten

Abrufen von Schlüssel und Endpunkt

Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.

Variablenname Wert
ENDPOINT Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
API-KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Den Abschnitt Schlüssel und Endpunkt finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in der die Speicherorte für Endpunkt und Zugriffsschlüssel rot umrandet sind

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Wichtig

Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.

Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie API-Schlüssel verwenden, speichern Sie sie sicher in Azure Key Vault, rotieren Sie die Schlüssel regelmäßig, und beschränken Sie den Zugriff auf Azure Key Vault mithilfe von rollenbasierter Zugriffssteuerung und Netzwerkzugriffsbeschränkungen. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

REST-API

Führen Sie in der Bash-Shell die folgenden Befehle aus. Sie müssen gpt-35-turbo durch den Bereitstellungsnamen ersetzen, den Sie bei der Bereitstellung der GPT-35-Turbo- oder GPT-4-Modelle ausgewählt haben. Die Eingabe des Modellnamens führt zu einem Fehler, es sei denn, Sie haben einen Bereitstellungsnamen ausgewählt, der mit dem zugrunde liegenden Modellnamen identisch ist.

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 services support this too?"}]}'

Das Format Ihrer ersten Zeile des Befehls mit einem Beispielendpunkt wird wie folgt angezeigt: curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/chat/completions?api-version=2024-02-01 \ Wenn ein Fehler auftritt, überprüfen Sie, ob eine Verdoppelung von / bei der Trennung zwischen Ihrem Endpunkt und /openai/deployments vorliegt.

Wenn Sie diesen Befehl an einer normalen Windows-Eingabeaufforderung ausführen möchten, müssen Sie den Text ändern, um \ und Zeilenumbrüche zu entfernen.

Wichtig

Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie in diesem Sicherheitsartikel .

Ausgabe

{"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, many other Azure services also support customer managed keys. Azure OpenAI offers 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}]}

Die Ausgabeformatierung wurde zur erleichterten Lesbarkeit angepasst, die tatsächliche Ausgabe ist ein einzelner Textblock ohne Zeilenumbrüche.

Grundlegendes zur Nachrichtenstruktur

Die GPT-35-Turbo- und GPT-4-Modelle sind für die Verwendung von Eingaben optimiert, die im Gesprächsformat vorliegen. Die Variable messages übergibt ein Array von Wörterbüchern mit verschiedenen Rollen in der Unterhaltung, die nach System, Benutzer und Assistent abgegrenzt sind. Die Systemnachricht kann zum Vorbereiten des Modells verwendet werden, indem Kontext oder Anweisungen für die Antworten des Modells eingeschlossen werden.

Die Schrittanleitung für GPT-35-Turbo und GPT-4 bietet eine ausführliche Einführung in die Optionen für die Kommunikation mit diesen neuen Modellen.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte

Voraussetzungen

Voraussetzungen für Microsoft Entra ID

Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:

  • Die Azure CLI installieren, die für die schlüssellose Authentifizierung mit Microsoft Entra ID verwendet wird
  • Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.

Abrufen von Ressourceninformationen

Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:

Variablenname Wert
AZURE_OPENAI_ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen.
AZURE_OPENAI_DEPLOYMENT_NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal.
OPENAI_API_VERSION Erfahren Sie mehr über API-Versionen.

Sie können die Version im Code ändern oder eine Umgebungsvariable verwenden.

Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.

Erstellen eines neuen PowerShell-Skripts

  1. Melden Sie sich für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID mit dem folgenden Befehl bei Azure an:

    az login
    
  2. Erstellen Sie eine neue PowerShell-Datei namensquickstart.ps1. Öffnen Sie diese anschließend in Ihrem bevorzugten Editor oder Ihrer bevorzugten IDE.

  3. Ersetzen Sie den Inhalt von quickstart.ps1 durch den folgenden Code. Sie müssen die engine Variable auf den Bereitstellungsnamen festlegen, den Sie beim Bereitstellen des GPT-4o-Modells ausgewählt haben. Die Eingabe des Modellnamens führt zu einem Fehler, sofern Sie keinen Bereitstellungsnamen ausgewählt haben, der mit dem zugrunde liegenden Modellnamen identisch ist.

    # 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
    

    Wichtig

    Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie die PowerShell-Geheimnisverwaltung mit Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie in diesem Sicherheitsartikel .

  4. Führen Sie das Skript mit PowerShell aus. In diesem Beispielwird der Parameter -Depth verwendet, um sicherzustellen, dass die Ausgabe nicht abgeschnitten wird.

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

Ausgabe

Die Ausgabe des Skripts ist ein JSON-Objekt, das die Antwort von Azure OpenAI enthält. Die Ausgabe sieht in etwa wie folgt aus:

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

Bemerkungen

Sie können den ConvertTo-Json Schritt überspringen, wenn die rohe Ausgabe angezeigt werden soll.

./quickstart.ps1

Die Ausgabe sieht wie folgt aus:

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}

Sie können den Inhalt des skriptspowershell.ps1 bearbeiten, um das gesamte Objekt oder eine bestimmte Eigenschaft zurückzugeben. Um beispielsweise den zurückgegebenen Text zurückzugeben, können Sie die letzte Zeile des Skripts (return $response) durch Folgendes ersetzen:

return $response.choices.message.content

Führen Sie dann das Skript erneut aus.

./quickstart.ps1

Die Ausgabe sieht wie folgt aus:

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?

Grundlegendes zur Nachrichtenstruktur

Die GPT-4-Modelle sind für die Arbeit mit Eingaben optimiert, die als Unterhaltung formatiert sind. Die Variable messages übergibt ein Array von Wörterbüchern mit verschiedenen Rollen in der Unterhaltung, die nach System, Benutzer und Assistent abgegrenzt sind. Die Systemnachricht kann zum Vorbereiten des Modells verwendet werden, indem Kontext oder Anweisungen für die Antworten des Modells eingeschlossen werden.

Das GPT-4-Anleitungshandbuch bietet eine ausführliche Einführung in die Optionen für die Kommunikation mit diesen Modellen.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte