Adición de DALL-E a la aplicación de escritorio del SDK de Aplicaciones para Windows o WinUI 3
Artículo
En este tutorial, integraremos las funcionalidades de generación de imágenes de DALL-E en su aplicación de escritorio del SDK de Aplicaciones para Windows o WinUI 3.
Un SDK de OpenAI instalado en el proyecto. Consulte la documentación de OpenAI para obtener una lista completa de bibliotecas comunitarias. En estas instrucciones, usaremos betalgo/openai.
Instalación e inicialización del SDK de OpenAI
Asegúrese de que betalgo/OpenAI SDK esté instalado en el proyecto ejecutando dotnet add package Betalgo.OpenAI desde la ventana del terminal de Visual Studio. Inicialice el SDK con la clave de API de OpenAI de la siguiente manera:
C#
//...using OpenAI;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;
using OpenAI.ObjectModels;
namespaceChatGPT_WinUI3
{
publicsealedpartialclassMainWindow : Window
{
private OpenAIService openAiService;
publicMainWindow()
{
this.InitializeComponent();
var openAiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
openAiService = new OpenAIService(new OpenAiOptions(){
ApiKey = openAiKey
});
}
}
}
Modificación de la IU de la aplicación
Modifique el MainWindow.xaml existente para que incluya un control de Image que muestre imágenes dentro de la conversación:
Implementación de la generación de imágenes DALL-E
En su MainWindow.xaml.cs, añada los métodos siguientes para controlar la generación y visualización de imágenes:
C#
// ... existing using statements ...privateasyncvoidSendButton_Click(object sender, RoutedEventArgs e)
{
ResponseProgressBar.Visibility = Visibility.Visible;
string userInput = InputTextBox.Text;
if (!string.IsNullOrEmpty(userInput))
{
InputTextBox.Text = string.Empty;
var imageResult = await openAiService.Image.CreateImage(new ImageCreateRequest
{
Prompt = userInput,
N = 2,
Size = StaticValues.ImageStatics.Size.Size256, // StaticValues is available as part of the Betalgo OpenAI SDK
ResponseFormat = StaticValues.ImageStatics.ResponseFormat.Url,
User = "TestUser"
});
if (imageResult.Successful)
{
foreach (var imageUrl in imageResult.Results.Select(r => r.Url))
{
AddImageMessageToConversation(imageUrl);
}
}
else
{
AddMessageToConversation("GPT: Sorry, something bad happened: " + imageResult.Error?.Message);
}
}
ResponseProgressBar.Visibility = Visibility.Collapsed;
}
privatevoidAddImageMessageToConversation(string imageUrl)
{
var imageMessage = new MessageItem
{
ImageUrl = imageUrl
};
ConversationList.Items.Add(imageMessage);
}
El método openAiService.Image.CreateImage() es responsable de llamar a la API DALL-E de OpenAI. Consulte la wiki del SDK de OpenAI de Betalgo para obtener más ejemplos de uso.
Observe la presencia de ImageUrl en la clase MessageItem. Esta es una propiedad nueva:
C#
publicclassMessageItem
{
publicstring Text { get; set; }
public SolidColorBrush Color { get; set; }
publicstring ImageUrl { get; set; } // new
}
Ejecución y prueba
Ejecute la aplicación, escriba una solicitud y haga clic en el botón "Generar imagen". Deberíamos ver algo parecido a lo siguiente:
Resumen
En esta guía ha aprendido a:
Aceptar las solicitudes de imagen de los usuarios dentro de <TextBox>.
Generar imágenes mediante la API DALL-E de OpenAI.
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de Windows developer
Windows developer es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: