目录
介绍
这是一个与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封装NuGet包Whetstone.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;
}
}
Speak与GPT无关,而是一种找出输入发音的方法。
[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