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

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

时间2025-05-05 11:33:38分类IT科技浏览3091
导读:用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
网创是什么公司(网创什么好做-网创新手必看,10条让你网创路好走的多的赚钱法则) windows软件模糊(win10应用显示模糊怎么修复)