首页IT科技winform快速开发(用winform开发ChatGPT对话应用)

winform快速开发(用winform开发ChatGPT对话应用)

时间2025-08-05 15:25:10分类IT科技浏览4463
导读:用winform开发ChatGPT对话应用...

用winform开发ChatGPT对话应用

最近ChatGPT非常火热             ,本着有热闹就凑的心理                    ,我也上手玩了一把              。不玩不知道       ,玩了吓一跳       ,这家伙的火                    ,是自己把自己点燃的                    。不客气的说              ,OpenAI给人类重新创造了一个神       ,上帝的无所不能是在人类的想象中                    ,而ChatGPT的无所不能是在人类的眼前耍大刀;

闲话不扯              ,进入正题,今天我尝试用C#开发一个对话应用                    ,让我们能跳过网页验证                     ,跳过科学上网,直接与AI对话      。本着一贯偷懒的态度             ,来到CSDN来抄袭一把                     ,查到用C#开发的示例非常少       ,而且对于我这总代码水平复现他们操作也相对困难              。求助于ChatGPT             ,可他给出的代码一直跑不起来                    ,我把代码放在这里       ,有哪位大神能看出那里有问题       ,帮我指出来                     。 using System; using System.Net.Http; using System.Text; using System.Windows.Forms; using Newtonsoft.Json; namespace chatGTP对话应用 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private async void btnSubmit_Click(object sender, EventArgs e) { string input = txtInput.Text; string response = await GetResponseFromChatGPT(input); txtResponse.Text = response; } private async System.Threading.Tasks.Task<string> GetResponseFromChatGPT(string input) { using (var client = new HttpClient()) { var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri("https://api.openai.com/v1/engines/text-davinci-002/jobs"), Content = new StringContent("{\"prompt\": \"" + input + "\", \"max_tokens\":100}", Encoding.UTF8, "application/json") }; request.Headers.Add("Authorization", "Bearer <API-KEY>"); var response = await client.SendAsync(request); var result = await response.Content.ReadAsStringAsync(); dynamic data = JsonConvert.DeserializeObject(result); return data.choices[0].text; } } } }

这段代码总是报API-KEY错误                    ,JSON格式无法解析              ,模块接口错误;昨天完胜测试了很久都没有通过       ,可能AI大神对比较新的需求跟我们一样也需要经过一段时间的消化;

虽然以上代码无法跑起来                    ,但在解决这个问题的过程中参考的很多其他博友的解决思路;重要的思路之一就是调用OPENAI的API      。有了这个思路就开干              ,建立winform项目后,直接在Nuget中搜索                    ,果然找到OPENAI       。在这里哦                     ,贴心吧!

把这个API安装到项目中后,接下来就是要看怎么用了?这是一个比较犯愁的地方             ,因为我没有在CSDN中找到可参考的;就只能找官方文档了                     ,你知道的       ,凭我的英文水平             ,天然是对官方文档有有抵触情绪的;不过还好                    ,内容不是很多       ,并且提供的用法和解释也十分清楚       ,这里我把官方文档的链接放在这里                    ,方便兄弟们查看:openai说明文档

有了这些鸟语的支持              ,那进度就快很多了;首先是跑起来了       ,我用的这段代码: var result = await api.Completions.GetCompletion("One Two Three One Two");

能跑                    ,也能获取回应              ,但是内容不全,而且只有几个字                    ,这显然不是AI大神的风格                     。本着有错就一定是我的错的原则                     ,以及之前代码中关于异步方法的浅薄理解,我果断选择下面这段代码:

await api.Completions.StreamCompletionAsync( new CompletionRequest("My name is Roger and I am a principal software engineer at Salesforce. This is my resume:", Model.DavinciText, 200, 0.5, presencePenalty: 0.1, frequencyPenalty: 0.1), res => ResumeTextbox.Text += res.ToString());

当然这样选择还有一个原因             ,这段代码的参数比较全                     ,如果运行效果不理想       ,我可以对这些参数进行调整;经过这样的修改和参数调整后             ,效果跟在网页中AI大神的表现就差不多了;接下来我把完成的代码贴在这里                    ,楷了大家这么多年的油       ,今天也算是还一笔这么多年欠下的一份人情了;

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net.Http; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Newtonsoft.Json; using OpenAI_API; using OpenAI_API.Completions; using OpenAI_API.Embedding; using OpenAI_API.Models; namespace chatGTP对话应用 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private async void btnSubmit_Click(object sender, EventArgs e) { var api = new OpenAI_API.OpenAIAPI("你的API密钥"); await api.Completions.StreamCompletionAsync( new CompletionRequest(txtQuestion.Text, Model.DavinciText, 2000, 1, presencePenalty: 0.1, frequencyPenalty: 0.1), res => txtAnswer.Text += res.ToString()); textBox1.Text = Model.DavinciText.ModelID; } private void button1_Click(object sender, EventArgs e) { txtQuestion.Text = string.Empty; txtAnswer.Text = string.Empty; textBox1.Text = string.Empty; } } }

好了       ,展示一下效果:

下面展示一下问答测试和翻译功能:

chatgtp问答测试和翻译测试

声明:本站所有文章                    ,如无特殊说明或标注              ,均为本站原创发布             。任何个人或组织       ,在未征得本站同意时                    ,禁止复制              、盗用                    、采集      、发布本站内容到任何网站              、书籍等各类媒体平台       。如若本站内容侵犯了原著者的合法权益              ,可联系我们进行处理                     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
优化你的网站,让排名不再低落(分享十种提高网站排名的优化方式)