Partager via


Générer des images en utilisant l’IA avec .NET

Dans ce guide de démarrage rapide, vous allez apprendre à créer une application console .NET pour générer des images à l’aide d’un modèle OpenAI ou Azure OpenAI DALLe AI, spécifiquement conçu pour générer des images basées sur des invites de texte.

Prérequis

  • Kit de développement logiciel (SDK) .NET 8.0 : installez le Kit de développement logiciel (SDK) .NET 8.0.
  • Une clé API d’OpenAI pour pouvoir exécuter cet échantillon.
  • Sur Windows, PowerShell v7+ est requis. Pour valider votre version, exécutez pwsh dans un terminal. Elle doit retourner la version actuelle. Si une erreur est retournée, exécutez la commande suivante : dotnet tool update --global PowerShell.

Prérequis

Remarque

Vous pouvez également utiliser noyau sémantique pour accomplir les tâches décrites dans cet article. Le noyau sémantique est un SDK open source léger qui vous permet de créer des agents IA et d’intégrer les derniers modèles IA à vos applications .NET.

Clonez l’exemple de dépôt

Vous pouvez créer votre propre application à l’aide des étapes décrites dans les sections à l’avance, ou vous pouvez cloner le dépôt GitHub qui contient les exemples d’applications terminés pour tous les guides de démarrage rapide. Si vous envisagez d’utiliser Azure OpenAI, l’exemple de dépôt est également structuré en tant que modèle Azure Developer CLI qui peut approvisionner une ressource Azure OpenAI pour vous.

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

Créer l’application

Effectuez les étapes suivantes pour créer une application console .NET pour vous connecter à un modèle IA.

  1. Dans un répertoire vide sur votre ordinateur, utilisez la commande dotnet new pour créer une application console :

    dotnet new console -o ImagesAI
    
  2. Modifiez le répertoire dans le dossier de l’application :

    cd ImagesAI
    
  3. Installez les packages requis :

    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. Ouvrez l’application dans Visual Studio Code ou votre éditeur de votre choix.

    code .
    

Créer le service IA

L’exemple de référentiel GitHub est structuré en tant que modèle Azure Developer CLI (azd), que azd peut utiliser pour approvisionner le service et le modèle Azure OpenAI pour vous.

  1. À partir d’un terminal ou d’une invite de commandes, accédez au src\quickstarts\azure-openai répertoire de l’exemple de dépôt.

  2. Exécutez la commande azd up pour approvisionner les ressources Azure OpenAI. La création du service Azure OpenAI et le déploiement du modèle peuvent prendre plusieurs minutes.

    azd up
    

    azd configure également les secrets utilisateur requis pour l’exemple d’application, comme le point de terminaison Azure OpenAI et le nom du modèle.

Configurer l’application

  1. Accédez à la racine de votre projet .NET à partir d’un terminal ou d’une invite de commandes.

  2. Exécutez les commandes suivantes pour configurer votre clé API OpenAI en tant que secret pour l’exemple d’application :

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

Ajouter le code de l’application

  1. Dans le fichier Program.cs, ajoutez le code suivant pour vous connecter et vous authentifier auprès du modèle IA.

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

    Remarque

    DefaultAzureCredential recherche les informations d'authentification de votre outil local. Si vous n’utilisez pas le modèle azd pour approvisionner la ressource Azure OpenAI, vous devez affecter le rôle Azure AI Developer au compte que vous avez utilisé pour vous connecter à Visual Studio ou à Azure CLI. Pour plus d'informations, voir Authentification aux services Azure AI avec .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}");
    

    Code précédent :

    • Lit les valeurs de configuration essentielles à partir des secrets utilisateur du projet pour se connecter au modèle IA
    • Crée un ImageClient pour se connecter au modèle d'IA
    • Envoie une invite au modèle qui décrit l’image souhaitée
    • Imprime l’URL de l’image générée dans la sortie de la console
  2. Utilisez la commande dotnet run pour exécuter l’application :

    dotnet run
    

    Accédez à l’URL de l’image dans la sortie de la console pour afficher l’image générée. Personnalisez le contenu texte de l’invite pour créer des images ou modifier l’original.

Nettoyer les ressources

Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.

azd down

Étapes suivantes