C# WPF/XAML/MVVM中的ChatGPT API

目录

介绍

使用代码

兴趣点


介绍

这是一个与OpenAI GPT-3.5 Turbo API通信的C# WPF应用。该应用程序的UI布局类似于OpenAI聊天网站 https://chat.openai.com

使用代码

要使用该代码,您需要在以下位置注册并获取您的OpenAI GPT-3.5 Turbo API密钥(免费):

把你的钥匙放在App.xaml.cs。您的密钥可能类似于'sk-Ih...WPd’

  

这个应用程序使用MVVM设计模式与MainWindow类和ChatViewModel类。

public ChatViewModel(WhetstoneChatGPTService chatGPTService)
{
    _chatGPTService = chatGPTService;
    _chatHistory = new ChatHistory();
    _selectedChat = _chatHistory.AddNewChat();
    ChatList = new ObservableCollection<Chat>(_chatHistory.ChatList);
}

ChatViewModel包含WhetstoneChatGPTService封装NuGetWhetstone.ChatGPT,与OpenAI GPT-3.5 Turbo API通信。

ChatViewModel还包含ChatHistory,其跟踪聊天列表,每个聊天都包含聊天结果。

ChatList与左侧面板上XAML中的聊天列表绑定。

[RelayCommand]
private async Task Send()
{    
    if (!ValidateInput(ChatInput, out string prompt))
    {
        return;
    }

    try
    {       
        await Send(prompt, prompt);     
        PostProcessOnSend(prompt);
    }
    catch (Exception ex)
    {
        StatusMessage = ex.Message;
    }
}

当用户单击发送按钮时,提示(在文本框中输入)将被发送到OpenAI API服务器,结果将显示在屏幕右侧。

我个人像助手一样使用这个应用程序,所以我添加了解释翻译朗读功能。

解释就像一个查找,有点像发送的快捷方式。例如,输入“ML.NET”时,我会自动将解释'ML.NET'”发送到GPT服务器。此功能有助于查找单个单词或短语的含义。

翻译到只是简单地使用选定语言发送(例如,翻译成西班牙语'ChatGPT'”)。你会得到“'chatgpt' se traduce al español como 'chatgpt'”

[RelayCommand]
private async Task Explain()
{
    await ExecutePost("Explain");
}

[RelayCommand]
private async Task TranslateTo()
{
    await ExecutePost($"Translate to {SelectedLang}");
}

private async Task ExecutePost(string prefix)
{   
    try
    {     
        // 'Explain' or 'Translate to' always uses a new chat
        AddNewChatIfNotExists();

        prompt = $"{prefix} '{prompt}'";
        await Send(prompt, prompt);

        PostProcessOnSend(prompt);     
    }
    catch (Exception ex)
    {
        StatusMessage = ex.Message;
    }
}

SpeakGPT无关,而是一种找出输入发音的方法。

[RelayCommand]
private void Speak()
{
    try
    {
        var synthesizer = new SpeechSynthesizer()
        {
            Volume = 100,  // 0...100
            Rate = -2,     // -10...10
        };

        synthesizer.SelectVoiceByHints
         (IsFemaleVoice ? VoiceGender.Female : VoiceGender.Male, VoiceAge.Adult);

        synthesizer.SpeakAsync(ChatInput);
    }
    catch (Exception ex)
    {
        StatusMessage = ex.Message;
    }
}

有了上述功能,我更频繁地使用这个应用程序!

最后,您可以要求GPT-3.5 Turbo根据提示创建图像(参见上面的澳大利亚网球公开赛)。

兴趣点

此应用程序是使用Visual Studio 2022(社区版正常)编译的。如果计算机上未安装.NET 8,只需从 CSharpWpfChatGPT.csproj 中删除。net8.0-windows即可

试用源代码,并随时在下面的评论部分给我留言。

https://www.codeproject.com/Tips/5377103/ChatGPT-API-in-Csharp-WPF-XAML-MVVM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值