Gerar imagens usando IA com .NET
Comece a usar a IA criando um aplicativo de bate-papo simples do console .NET 8. O aplicativo será executado localmente e usará o modelo OpenAI dall-e-3
para gerar imagens de cartões postais para que você possa convidar seus amigos para uma caminhada! Siga estas etapas para obter acesso ao OpenAI e aprender a usar o Kernel Semântico.
Pré-requisitos
- SDK do .NET 8.0 - Instale o SDK do .NET 8.0.
- Uma chave de API do OpenAI para que você possa executar este exemplo.
- No Windows, o PowerShell
v7+
é necessário. Para validar sua versão, executepwsh
em um terminal. Ele deve retornar a versão atual. Se retornar um erro, execute o seguinte comando:dotnet tool update --global PowerShell
.
Comece a usar a IA criando um aplicativo de bate-papo simples do console .NET 8. O aplicativo será executado localmente e usará o modelo OpenAI dall-e-3
para gerar imagens de cartões postais para que você possa convidar seus amigos para uma caminhada! Siga estas etapas para provisionar o Azure OpenAI e saiba como usar o SDK do OpenAI do Azure .NET.
Pré-requisitos
- SDK do .NET 8 - Instale o SDK do .NET 8.
- Uma assinatura do Azure - Crie uma gratuitamente.
- CLI do Azure Developer - Instale ou atualize a CLI do Azure Developer.
- Acesso ao serviço Azure OpenAI.
- No Windows, o PowerShell
v7+
é necessário. Para validar sua versão, executepwsh
em um terminal. Ele deve retornar a versão atual. Se retornar um erro, execute o seguinte comando:dotnet tool update --global PowerShell
.
Obter o projeto de exemplo
Clone o repositório GitHub que contém os aplicativos de exemplo para todos os inícios rápidos:
git clone https://github.com/dotnet/ai-samples.git
Criar o serviço Azure OpenAI
O repositório GitHub de exemplo é estruturado como um modelo de CLI (azd
) do Desenvolvedor do Azure, que azd
pode ser usado para provisionar o serviço e o modelo do Azure OpenAI para você.
Em um terminal ou prompt de comando, navegue até o diretório src\quickstarts\azure-openai do repositório de exemplo.
Execute o
azd up
comando para provisionar os recursos do Azure OpenAI. Pode levar vários minutos para criar o serviço Azure OpenAI e implantar o modelo.azd up
azd
também configura os segredos de usuário necessários para o aplicativo de exemplo, como a chave de acesso OpenAI.Nota
Se você encontrar um erro durante a
azd up
implantação, visite a seção de solução de problemas .
Experimente o exemplo de imagens de caminhada
Clone o repositório: dotnet/ai-samples
Execute os seguintes comandos para configurar sua chave de API OpenAI como um segredo para o aplicativo de exemplo:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key>
Use o
dotnet run
comando para executar o aplicativo:dotnet run
Em um terminal ou prompt de comando, navegue até o
azure-openai\05-HikeImages
diretório.Use o
dotnet run
comando para executar o aplicativo:dotnet run
Gorjeta
Se você receber uma mensagem de erro, os recursos do Azure OpenAI podem não ter concluído a implantação. Aguarde alguns minutos e tente novamente.
Explore o código
O aplicativo usa o Microsoft.SemanticKernel
pacote para enviar e receber solicitações para o serviço OpenAI.
O arquivo Program.cs contém todo o código do aplicativo. As primeiras linhas de código definem valores de configuração e obtêm a chave OpenAI que foi definida anteriormente usando o dotnet user-secrets
comando.
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string key = config["OpenAIKey"];
O OpenAITextToImageService
serviço facilita as solicitações e respostas.
OpenAITextToImageService textToImageService = new(key, null);
O aplicativo usa o Microsoft.SemanticKernel
pacote para enviar e receber solicitações para o serviço Azure OpenAI.
O arquivo Program.cs contém todo o código do aplicativo. As primeiras linhas de código carregam segredos e valores de configuração que foram definidos no dotnet user-secrets
para você durante o provisionamento do aplicativo.
// 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"];
O AzureOpenAITextToImageService
serviço facilita as solicitações e respostas.
AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, key, null);
Forneça contexto e instruções para o modelo adicionando um prompt do sistema. Um bom prompt de geração de imagem requer uma descrição clara do que é a imagem, quais cores usar, o estilo pretendido e outros descritores.
A GenerateImageAsync
função instrui o modelo a gerar uma resposta com base no prompt do usuário e nas configurações de tamanho e qualidade da imagem.
// 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}");
Personalize o prompt para personalizar as imagens geradas pelo modelo.
Clean up resources (Limpar recursos)
Quando você não precisar mais do aplicativo ou recursos de exemplo, remova a implantação correspondente e todos os recursos.
azd down
Resolver problemas
No Windows, você pode receber as seguintes mensagens de erro após a execução azd up
:
postprovision.ps1 não está assinado digitalmente. O script não será executado no sistema
O script postprovision.ps1 é executado para definir os segredos de usuário do .NET usados no aplicativo. Para evitar esse erro, execute o seguinte comando do PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Em seguida, execute novamente o azd up
comando.
Outro erro possível:
'pwsh' não é reconhecido como um comando interno ou externo, programa operável ou ficheiro batch. AVISO: O gancho 'postprovision' falhou com o código de saída: '1', Caminho: '.\infra\post-script\postprovision.ps1'. : código de saída: 1 A execução continuará desde que ContinueOnError tenha sido definido como true.
O script postprovision.ps1 é executado para definir os segredos de usuário do .NET usados no aplicativo. Para evitar esse erro, execute manualmente o script usando o seguinte comando do PowerShell:
.\infra\post-script\postprovision.ps1
Os aplicativos .NET AI agora têm os segredos do usuário configurados e podem ser testados.