Adicionar DALL-E ao seu aplicativo de área de trabalho WinUI 3 / Windows App SDK
Neste tutorial, integraremos os recursos de geração de imagem do DALL-E ao seu aplicativo de área de trabalho WinUI 3 / Windows App SDK.
Pré-requisitos
- Configure seu computador de desenvolvimento (consulte Introdução ao WinUI).
- Uma interface de bate-papo funcional na qual esse recurso será integrado. Consulte Como adicionar conclusões de bate-papo OpenAI ao seu aplicativo de área de trabalho WinUI 3 / Windows App SDK - demonstraremos como integrar o DALL-E à interface de bate-papo a partir deste tutorial.
- Uma chave de API OpenAI do painel do desenvolvedor OpenAI atribuída à
OPENAI_API_KEY
variável de ambiente. - Um SDK OpenAI instalado no projeto. Consulte a documentação do OpenAI para obter uma lista completa de bibliotecas da comunidade. Nestas Instruções, usaremos betalgo/openai.
Instalar e inicializar o SDK do OpenAI
Certifique-se de que o está instalado em seu projeto executando dotnet add package Betalgo.OpenAI
a partir da janela de betalgo/OpenAI SDK
terminal do Visual Studio. Inicialize o SDK com sua chave de API OpenAI da seguinte maneira:
//...
using OpenAI;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;
using OpenAI.ObjectModels;
namespace ChatGPT_WinUI3
{
public sealed partial class MainWindow : Window
{
private OpenAIService openAiService;
public MainWindow()
{
this.InitializeComponent();
var openAiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
openAiService = new OpenAIService(new OpenAiOptions(){
ApiKey = openAiKey
});
}
}
}
Modifique a interface do usuário do aplicativo
Modifique seu MainWindow.xaml
para incluir um Image
controle que exibe imagens dentro da conversa:
<!-- ... existing XAML ... -->
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding ImageUrl}" Margin="5" Stretch="UniformToFill"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<!-- ... existing XAML ... -->
Observe que este tutorial pressupõe que você tenha uma interface de bate-papo com um TextBox
e Button
; consulte Como adicionar conclusões de bate-papo OpenAI ao seu aplicativo de área de trabalho WinUI 3 / Windows App SDK.
Implementar a geração de imagens DALL-E
No MainWindow.xaml.cs
, adicione os seguintes métodos para lidar com a geração e exibição de imagens:
// ... existing using statements ...
private async void SendButton_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;
}
private void AddImageMessageToConversation(string imageUrl)
{
var imageMessage = new MessageItem
{
ImageUrl = imageUrl
};
ConversationList.Items.Add(imageMessage);
}
O openAiService.Image.CreateImage()
método é responsável por chamar a API DALL-E da OpenAI. Consulte o wiki do SDK do Betalgo OpenAI para obter mais exemplos de uso.
Observe a MessageItem
presença de ImageUrl
na classe. Esta é uma nova propriedade:
public class MessageItem
{
public string Text { get; set; }
public SolidColorBrush Color { get; set; }
public string ImageUrl { get; set; } // new
}
Executar e testar
Execute seu aplicativo, insira um prompt e clique no botão "Gerar imagem". Você deverá ver algo como:
Recapitulação
Neste guia, você aprendeu a:
- Aceite solicitações de imagem de usuários dentro de um
<TextBox>
arquivo. - Gere imagens usando a API OpenAI DALL-E.
- Exibir a imagem em um
<Image>
.
Relacionados
Windows developer