Generación de imágenes mediante IA con .NET
Empiece a trabajar con la inteligencia artificial mediante la creación de una sencilla aplicación de chat de consola de .NET 8. La aplicación se ejecutará localmente y usará el modelo de OpenAI dall-e-3
para generar imágenes de tarjetas postales para que pueda invitar a sus amigos a hacer senderismo. Siga estos pasos para acceder a OpenAI y obtener información sobre cómo usar el kernel semántico.
Requisitos previos
- SDK de .NET 8.0: Instalación del SDK de .NET 8.0.
- Una clave de API de OpenAI para poder ejecutar este ejemplo.
- En Windows, se requiere PowerShell
v7+
. Para validar la versión, ejecutepwsh
en un terminal. Debe devolver la versión actual. Si devuelve un error, ejecute el siguiente comando:dotnet tool update --global PowerShell
.
Empiece a trabajar con la inteligencia artificial mediante la creación de una sencilla aplicación de chat de consola de .NET 8. La aplicación se ejecutará localmente y usará el modelo de OpenAI dall-e-3
para generar imágenes de tarjetas postales para que pueda invitar a sus amigos a hacer senderismo. Siga estos pasos para aprovisionar Azure OpenAI y aprenda a usar el SDK de Azure OpenAI de .NET.
Requisitos previos
- SDK de .NET 8: Instalación del SDK de .NET 8.
- Una suscripción a Azure (cree una cuenta gratuita).
- Acceda al servicio Azure OpenAI.
- CLI para desarrolladores de Azure (opcional): instale o actualice la CLI para desarrolladores de Azure.
Obtención del proyecto de ejemplo
Clonación del repositorio de ejemplo
Puede crear su propia aplicación siguiendo los pasos descritos en las secciones siguientes, o bien puede clonar el repositorio de GitHub que contiene las aplicaciones de ejemplo completadas para todas las guías de inicio rápido. Si planea usar Azure OpenAI, el repositorio de ejemplo también se estructura como una plantilla de la CLI para desarrolladores de Azure que puede aprovisionar un recurso de Azure OpenAI automáticamente.
git clone https://github.com/dotnet/ai-samples.git
Creación de Azure OpenAI Service
El repositorio de GitHub de ejemplo se estructura como una plantilla de Azure Developer CLI (azd
), que azd
puede usar para aprovisionar automáticamente el servicio y el modelo de Azure OpenAI.
Desde un terminal o símbolo del sistema, vaya al
src\quickstarts\azure-openai
directorio del repositorio de ejemplo.Ejecute el comando
azd up
para aprovisionar los recursos de Azure OpenAI. Puede tardar varios minutos en crear el servicio Azure OpenAI e implementar el modelo.azd up
azd
también configura los secretos de usuario necesarios para la aplicación de ejemplo, como el punto de conexión de Azure OpenAI y el nombre del modelo.
Pruebe el ejemplo de imágenes de senderismo
Clone el repositorio: dotnet/ai-samples
Ejecute los siguientes comandos para configurar la clave de API de OpenAI como un secreto para la aplicación de ejemplo:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key>
Use el comando
dotnet run
para ejecutar la aplicación:dotnet run
Desde un terminal o símbolo del sistema, vaya al directorio
azure-openai\semantic-kernel\05-HikeImages
.Use el comando
dotnet run
para ejecutar la aplicación:dotnet run
Sugerencia
Si recibe un mensaje de error, es posible que los recursos de Azure OpenAI no hayan terminado de implementarse. Espere un par de minutos e inténtelo de nuevo.
Exploración del código
La aplicación usa el paquete Microsoft.SemanticKernel
para enviar y recibir solicitudes al servicio OpenAI.
El archivo Program.cs contiene todo el código de la aplicación. En las primeras líneas del código se establecen valores de configuración y se obtiene la clave de OpenAI que se ha establecido antes mediante el comando dotnet user-secrets
.
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string key = config["OpenAIKey"];
El servicio OpenAITextToImageService
facilita las solicitudes y respuestas.
OpenAITextToImageService textToImageService = new(key, null);
La aplicación usa el paquete Microsoft.SemanticKernel
para enviar y recibir solicitudes al servicio Azure OpenAI.
El archivo Program.cs contiene todo el código de la aplicación. Las primeras líneas de código cargan secretos y valores de configuración establecidos en dotnet user-secrets
para usted durante el aprovisionamiento de la aplicación.
// 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"];
El servicio AzureOpenAITextToImageService
facilita las solicitudes y respuestas.
AzureOpenAITextToImageService textToImageService = new(deployment, endpoint, new DefaultAzureCredential(), null);
Proporcione contexto e instrucciones al modelo agregando un símbolo del sistema. Una buena solicitud de generación de imágenes requiere una descripción clara de lo que es la imagen, qué colores usar, el estilo previsto y otros descriptores.
La función GenerateImageAsync
indica al modelo que genere una respuesta basada en las configuraciones de calidad y tamaño de imagen y solicitud del usuario.
// 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}");
Personalice el mensaje para personalizar las imágenes generadas por el modelo.
Limpieza de recursos
Cuando ya no necesite la aplicación o los recursos de ejemplo, quite la implementación correspondiente y todos los recursos.
azd down
Solución de problemas
En Windows, es posible que reciba los siguientes mensajes de error después de ejecutar azd up
:
postprovision.ps1 no está firmado digitalmente. El script no se ejecutará en el sistema
El script postprovision.ps1 se ejecuta para establecer los secretos de usuario de .NET usados en la aplicación. Para evitar este error, ejecute el siguiente comando de PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
A continuación, vuelva a ejecutar el comando azd up
.
Otro posible error:
'pwsh' no se reconoce como un comando interno o externo, programa operable o archivo por lotes. ADVERTENCIA: Error en el enlace "postprovision" con código de salida: '1', Ruta de acceso: '.\infra\post-script\postprovision.ps1'. : código de salida: 1 La ejecución continuará desde que ContinueOnError se ha establecido en true.
El script postprovision.ps1 se ejecuta para establecer los secretos de usuario de .NET usados en la aplicación. Para evitar este error, ejecute manualmente el script mediante el siguiente comando de PowerShell:
.\infra\post-script\postprovision.ps1
Las aplicaciones de IA de .NET ahora tiene configurados los secretos de usuario y se pueden probar.