Freigeben über


Generieren von Bildern mit KI und .NET

In diesem Quickstart lernen Sie, wie Sie eine App für die .NET-Konsole erstellen, um mit einem OpenAI- oder Azure OpenAI DALLe KI-Modell Bilder zu generieren. Diese Modelle wurden speziell für die Generierung von Bildern auf der Grundlage von Text-Prompts erstellt.

Voraussetzungen

Voraussetzungen

Hinweis

Sie können auch den Semantischen Kernel verwenden, um die Aufgaben in diesem Artikel auszuführen. Semantic Kernel ist ein schlankes Open-Source SDK, mit dem Sie KI-Agenten erstellen und die neuesten KI-Modelle in Ihre .NET Apps integrieren können.

Klonen des Beispielrepositorys

Sie können Ihre eigene App mit den Schritten in den vorherigen Abschnitten erstellen oder das GitHub-Repository klonen, das die abgeschlossenen Beispiel-Apps für alle Schnellstarts enthält. Wenn Sie Beabsichtigen, Azure OpenAI zu verwenden, ist das Beispiel-Repository auch als Azure Developer CLI-Vorlage strukturiert, die eine Azure OpenAI-Ressource für Sie bereitstellen kann.

git clone https://github.com/dotnet/ai-samples.git

Erstellen der App

Schließen Sie die folgenden Schritte ab, um eine App für eine .NET-Konsole zu erstellen, die sich mit einem KI-Modell verbindet.

  1. Erstellen Sie in einem leeren Verzeichnis auf Ihrem Computer mit dem dotnet new Befehl eine neue Konsolen-App:

    dotnet new console -o ImagesAI
    
  2. Wechseln Sie das Verzeichnis in den App-Ordner:

    cd ImagesAI
    
  3. Installieren Sie die erforderlichen Pakete:

    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. Öffnen Sie die App in Visual Studio Code oder einem Editor Ihrer Wahl.

    code .
    

Erstellen Sie den KI-Dienst

Das GitHub-Beispielrepository ist als Azure Developer CLI-Vorlage (azd) strukturiert, die azd zum Bereitstellen der Azure OpenAI Service-Instanz und -Modells für Sie verwenden kann.

  1. Navigieren Sie über ein Terminal oder eine Eingabeaufforderung zum src\quickstarts\azure-openai Verzeichnis des Beispielrepo.

  2. Führen Sie den azd up-Befehl aus, um die Azure OpenAI-Ressourcen bereitzustellen. Es kann mehrere Minuten dauern, bis Azure OpenAI Service erstellt und das Modell bereitgestellt ist.

    azd up
    

    azd konfiguriert außerdem die erforderlichen Benutzerschlüssel für die Beispiel-App, z. B. den Azure OpenAI-Endpunkt und den Modellnamen.

Konfigurieren der App

  1. Navigieren Sie über ein Terminal oder einen Prompt zum Root Ihres .NET-Projekts.

  2. Führen Sie die folgenden Befehle aus, um Ihren OpenAI-API-Schlüssel als Geheimnis für die Beispiel-App zu konfigurieren:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-openai-key>
    dotnet user-secrets set ModelName <your-openai-model-name>
    

Fügen Sie den App-Code hinzu

  1. Fügen Sie in der Datei Program.cs den folgenden Code ein, um sich mit dem KI-Modell zu verbinden und zu authentifizieren.

    using Microsoft.Extensions.Configuration;
    using OpenAI.Images;
    using System.ClientModel;
    using Azure.AI.OpenAI;
    using Azure.Identity;
    
    // Retrieve the local secrets saved during the Azure deployment. If you skipped the deployment
    // because you already have an Azure OpenAI available, edit the following lines to use your information,
    // e.g. string openAIEndpoint = "https://cog-demo123.openai.azure.com/";
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"];
    string deployment = config["AZURE_OPENAI_DALLE_NAME"];
    
    // Create the Azure OpenAI ImageClient
    ImageClient client =
        new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
            .GetImageClient(deployment);
    
    // Generate the image
    GeneratedImage generatedImage = await client.GenerateImageAsync("""
        A postal card with an happy hiker waving and a beautiful mountain in the background.
        There is a trail visible in the foreground.
        The postal card has text in red saying: 'You are invited for a hike!'
        """, new ImageGenerationOptions { Size = GeneratedImageSize.W1024xH1024 });
    
    Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
    

    Hinweis

    DefaultAzureCredential sucht von Ihrem lokalen Tool nach Authentifizierungsanmeldeinformationen. Wenn Sie nicht die azd-Vorlage zur Bereitstellung der Azure OpenAI-Ressource verwenden, müssen Sie die Azure AI Developer-Rolle dem Konto zuweisen, das Sie zur Anmeldung bei Visual Studio oder dem Azure CLI verwendet haben. Weitere Informationen finden Sie unter Authentifizierung von Azure AI-Diensten mit .NET.

    // Licensed to the .NET Foundation under one or more agreements.
    // The .NET Foundation licenses this file to you under the MIT license.
    // See the LICENSE file in the project root for more information.
    using Microsoft.Extensions.Configuration;
    using OpenAI.Images;
    // Retrieve the local secrets that were set from the command line, using:
    // dotnet user-secrets init
    // dotnet user-secrets set OpenAIKey <your-openai-key>
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string key = config["OpenAIKey"];
    string modelName = config["ModelName"];
    
    // Create the OpenAI ImageClient
    ImageClient client = new(modelName, key);
    
    // Generate the image
    GeneratedImage generatedImage = await client.GenerateImageAsync("""
        A postal card with a happy hiker waving and a beautiful mountain in the background.
        There is a trail visible in the foreground.
        The postal card has text in red saying: 'You are invited for a hike!'
        """,
        new ImageGenerationOptions 
        {
            Size = GeneratedImageSize.W1024xH1024 
        });
    
    Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
    

    Der vorangehende Code:

    • Liest wesentliche Konfigurationsparameter aus den projektbezogenen Benutzungsgeheimnissen aus, um eine Verbindung mit dem KI-Modell herzustellen.
    • Erstellt eine ImageClient zum Herstellen einer Verbindung mit dem KI-Modell
    • Sendet eine Eingabeaufforderung an das Modell, das das gewünschte Bild beschreibt.
    • Druckt die URL des generierten Bildes in die Konsolenausgabe
  2. Verwenden Sie den Befehl dotnet run, um die App auszuführen:

    dotnet run
    

    Navigieren Sie zu der Image-URL in der Konsolenausgabe, um das generierte Image anzuzeigen. Passen Sie den Textinhalt des Prompts an, um neue Images zu erstellen oder das Original zu ändern.

Bereinigen von Ressourcen

Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.

azd down

Nächste Schritte