Partager via


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

Prise en main de l’IA en créant une application de conversation de console .NET 8 simple. L’application va s’exécuter localement et utiliser le modèle OpenAI dall-e-3 pour générer des images de cartes postales, et vous permettre ainsi d’inviter vos amis à faire une randonnée ! Suivez ces étapes pour obtenir l’accès à OpenAI et découvrir comment utiliser Semantic Kernel.

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.

Prise en main de l’IA en créant une application de conversation de console .NET 8 simple. L’application va s’exécuter localement et utiliser le modèle OpenAI dall-e-3 pour générer des images de cartes postales, et vous permettre ainsi d’inviter vos amis à faire une randonnée ! Suivez ces étapes pour approvisionner Azure OpenAI et apprendre à utiliser le kit de développement logiciel (SDK) .NET Azure OpenAI.

Prérequis

Récupération de l’exemple de projet

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 le service Azure OpenAI

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.

Essayer l’exemple d’images de randonnée

  1. Clonez le référentiel : dotnet/ai-samples

  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>
    
  3. Utilisez la commande dotnet run pour exécuter l’application :

    dotnet run
    
  1. À partir d’un terminal ou d’une invite de commandes, accédez au répertoire azure-openai\semantic-kernel\05-HikeImages.

  2. Utilisez la commande dotnet run pour exécuter l’application :

    dotnet run
    

    Conseil

    Si vous recevez un message d’erreur, c’est que le déploiement des ressources Azure OpenAI n’est peut-être pas terminé. Attendez quelques minutes et réessayez.

Explorer le code

L’application utilise le package Microsoft.SemanticKernel pour envoyer et recevoir des demandes au service OpenAI.

Le fichier Program.cs contient tout le code de l’application. Les premières lignes de code définissent les valeurs de la configuration et obtiennent la clé OpenAI qui a été précédemment définie en utilisant la commande dotnet user-secrets.

var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string key = config["OpenAIKey"];

Le service OpenAITextToImageService facilite les requêtes et les réponses.

OpenAITextToImageService textToImageService = new(key, null);

L’application utilise le package Microsoft.SemanticKernel pour envoyer et recevoir des demandes au service Azure OpenAI.

Le fichier Program.cs contient tout le code de l’application. Les premières lignes de code chargent les secrets et les valeurs de configuration qui ont été définis pour vous dans le dotnet user-secrets pendant l’approvisionnement de l’application.

// Retrieve the local secrets saved during the Azure deployment
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];
string deployment = config["AZURE_OPENAI_GPT_NAME"];

Le service AzureOpenAITextToImageService facilite les requêtes et les réponses.

AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, new DefaultAzureCredential(), null);

Fournissez un contexte et des instructions au modèle en ajoutant une invite système. Un bon prompt de génération d’images nécessite une description claire de ce qu’est l’image, des couleurs à utiliser, du style souhaité et d’autres descripteurs.

La fonction GenerateImageAsync indique au modèle de générer une réponse en fonction du prompt de l’utilisateur, et des configurations de la taille et de la qualité de l’image.

// Generate the image
string imageUrl = await textToImageService.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!'
    """, 1024, 1024);

Console.WriteLine($"The generated image is ready at:\n{imageUrl}");

Personnalisez l’invite pour personnaliser les images générées par le modèle.

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

Résolution des problèmes

Sur Windows, vous risquez d’obtenir les messages d’erreur suivants après avoir exécuté azd up :

postprovision.ps1 n’est pas signé numériquement. Le script ne s’exécute pas sur le système

Le script postprovision.ps1 est exécuté pour définir les secrets utilisateur .NET utilisés dans l’application. Pour éviter cette erreur, exécutez la commande PowerShell suivante :

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Réexécutez ensuite la commande azd up.

Autre erreur possible :

« pwsh » n’est pas reconnu comme commande interne ou externe, programme exécutable ou fichier batch. AVERTISSEMENT : échec du hook « postprovision » avec le code de sortie : « 1 ». Chemin d’accès : « .\infra\post-script\postprovision.ps1 ». : code de sortie : 1. L’exécution continue puisque ContinueOnError est défini sur true.

Le script postprovision.ps1 est exécuté pour définir les secrets utilisateur .NET utilisés dans l’application. Pour éviter cette erreur, exécutez manuellement le script à l’aide de la commande PowerShell suivante :

.\infra\post-script\postprovision.ps1

Les applications IA .NET ont désormais des secrets utilisateur configurés et vous pouvez les tester.

Étapes suivantes