Afbeeldingen genereren met AI met .NET
Ga aan de slag met AI door een eenvoudige .NET 8-consolechattoepassing te maken. De toepassing wordt lokaal uitgevoerd en gebruikt het OpenAI-model dall-e-3
om postkaartafbeeldingen te genereren, zodat u uw vrienden kunt uitnodigen voor een wandeling! Volg deze stappen om toegang te krijgen tot OpenAI en leer hoe u Semantische kernel gebruikt.
Vereisten
- .NET 8.0 SDK : installeer de .NET 8.0 SDK.
- Een API-sleutel van OpenAI , zodat u dit voorbeeld kunt uitvoeren.
- In Windows is PowerShell
v7+
vereist. Als u uw versie wilt valideren, voert u deze uitpwsh
in een terminal. De huidige versie moet worden geretourneerd. Als er een fout wordt geretourneerd, voert u de volgende opdracht uit:dotnet tool update --global PowerShell
.
Ga aan de slag met AI door een eenvoudige .NET 8-consolechattoepassing te maken. De toepassing wordt lokaal uitgevoerd en gebruikt het OpenAI-model dall-e-3
om postkaartafbeeldingen te genereren, zodat u uw vrienden kunt uitnodigen voor een wandeling! Volg deze stappen om Azure OpenAI in te richten en te leren hoe u de .NET Azure OpenAI SDK gebruikt.
Vereisten
- .NET 8 SDK - Installeer de .NET 8 SDK.
- Een Azure-abonnement: maak er gratis een.
- Azure Developer CLI: de Azure Developer CLI installeren of bijwerken.
- Toegang tot de Azure OpenAI-service.
- In Windows is PowerShell
v7+
vereist. Als u uw versie wilt valideren, voert u deze uitpwsh
in een terminal. De huidige versie moet worden geretourneerd. Als er een fout wordt geretourneerd, voert u de volgende opdracht uit:dotnet tool update --global PowerShell
.
Het voorbeeldproject ophalen
Kloon de GitHub-opslagplaats die de voorbeeld-apps voor alle quickstarts bevat:
git clone https://github.com/dotnet/ai-samples.git
De Azure OpenAI-service maken
De GitHub-voorbeeldopslagplaats is gestructureerd als een Azure Developer CLI-sjabloon (azd
) die azd
kan worden gebruikt om de Azure OpenAI-service en het model voor u in te richten.
Navigeer vanuit een terminal of opdrachtprompt naar de map src\quickstarts\azure-openai van de voorbeeldopslagplaats.
Voer de
azd up
opdracht uit om de Azure OpenAI-resources in te richten. Het kan enkele minuten duren voordat de Azure OpenAI-service is gemaakt en het model is geïmplementeerd.azd up
azd
configureert ook de vereiste gebruikersgeheimen voor de voorbeeld-app, zoals de OpenAI-toegangssleutel.Notitie
Als er een fout optreedt tijdens de
azd up
implementatie, gaat u naar de sectie probleemoplossing .
Probeer het voorbeeld van de wandelafbeeldingen
Kloon de opslagplaats: dotnet/ai-samples
Voer de volgende opdrachten uit om uw OpenAI API-sleutel als geheim te configureren voor de voorbeeld-app:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key>
Gebruik de
dotnet run
opdracht om de app uit te voeren:dotnet run
Navigeer vanuit een terminal of opdrachtprompt naar de
azure-openai\05-HikeImages
map.Gebruik de
dotnet run
opdracht om de app uit te voeren:dotnet run
Tip
Als er een foutbericht wordt weergegeven, zijn de Azure OpenAI-resources mogelijk nog niet geïmplementeerd. Wacht een paar minuten en probeer het opnieuw.
De code verkennen
De toepassing gebruikt het pakket voor het Microsoft.SemanticKernel
verzenden en ontvangen van aanvragen naar de OpenAI-service.
Het bestand Program.cs bevat alle app-code. De eerste regels met configuratiewaarden voor codesets en ophalen de OpenAI-sleutel die eerder is ingesteld met behulp van de dotnet user-secrets
opdracht.
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string key = config["OpenAIKey"];
De OpenAITextToImageService
service faciliteert de aanvragen en antwoorden.
OpenAITextToImageService textToImageService = new(key, null);
De toepassing gebruikt het pakket voor het Microsoft.SemanticKernel
verzenden en ontvangen van aanvragen naar de Azure OpenAI-service.
Het bestand Program.cs bevat alle app-code. De eerste verschillende regels code laden geheimen en configuratiewaarden die voor u zijn ingesteld dotnet user-secrets
tijdens het inrichten van de toepassing.
// 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"];
string key = config["AZURE_OPENAI_KEY"];
De AzureOpenAITextToImageService
service faciliteert de aanvragen en antwoorden.
AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, key, null);
Geef context en instructies aan het model door een systeemprompt toe te voegen. Een goede prompt voor het genereren van afbeeldingen vereist een duidelijke beschrijving van wat de afbeelding is, welke kleuren moeten worden gebruikt, de beoogde stijl en andere descriptors.
Met GenerateImageAsync
de functie wordt het model geïnstrueerd om een antwoord te genereren op basis van de gebruikersprompt en de grootte en kwaliteit van de installatiekopieën.
// 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}");
Pas de prompt aan om de afbeeldingen die door het model worden gegenereerd, aan te passen.
Resources opschonen
Wanneer u de voorbeeldtoepassing of resources niet meer nodig hebt, verwijdert u de bijbehorende implementatie en alle resources.
azd down
Problemen oplossen
In Windows krijgt u mogelijk de volgende foutberichten nadat u deze hebt uitgevoerd azd up
:
postprovision.ps1 is niet digitaal ondertekend. Het script wordt niet uitgevoerd op het systeem
Het script postprovision.ps1 wordt uitgevoerd om de .NET-gebruikersgeheimen in te stellen die in de toepassing worden gebruikt. Voer de volgende PowerShell-opdracht uit om deze fout te voorkomen:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Voer vervolgens de azd up
opdracht opnieuw uit.
Een andere mogelijke fout:
'pwsh' wordt niet herkend als een interne of externe opdracht, beveiligbaar programma of batchbestand. WAARSCHUWING: 'postprovision' hook is mislukt met afsluitcode: '1', Pad: '.\infra\post-script\postprovision.ps1'. : afsluitcode: 1 uitvoering wordt voortgezet omdat ContinueOnError is ingesteld op true.
Het script postprovision.ps1 wordt uitgevoerd om de .NET-gebruikersgeheimen in te stellen die in de toepassing worden gebruikt. U kunt deze fout voorkomen door het script handmatig uit te voeren met behulp van de volgende PowerShell-opdracht:
.\infra\post-script\postprovision.ps1
De .NET AI-apps hebben nu de gebruikersgeheimen geconfigureerd en kunnen worden getest.