位置: IT常识 - 正文

用winform开发ChatGPT对话应用(winform开发技术有哪些)

编辑:rootadmin
用winform开发ChatGPT对话应用 用winform开发ChatGPT对话应用

推荐整理分享用winform开发ChatGPT对话应用(winform开发技术有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:winform开发工具,winform开发实例教程,编写winform程序,winform开发技术有哪些,winform开发用哪种设计模式,winform开发实例教程,winform开发工具,winform开发实例教程,内容如对您有帮助,希望把文章链接给更多的朋友!

最近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");用winform开发ChatGPT对话应用(winform开发技术有哪些)

能跑,也能获取回应,但是内容不全,而且只有几个字,这显然不是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; } } }

好了,展示一下效果:

20230209_213527

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

chatgtp问答测试和翻译测试

本文链接地址:https://www.jiuchutong.com/zhishi/297587.html 转载请保留说明!

上一篇:关于服务连接器(Servlet)你了解多少?(服务器连接方式包括直接相连,间接连接)

下一篇:最常见的六种跨域解决方案(跨的基本功有哪些)

  • 企业自建房产缴契税吗
  • 制造企业都需要什么人才
  • 固定资产转移是什么意思
  • 取得的股息红利收入计入哪个科目
  • 纸质发票如何查看电子发票
  • 税前扣除凭证的内部凭证
  • 电脑怎么写记事本
  • 已经发生的费用
  • 公司无收入费用如何做账务处理核算?
  • 事业单位取得了应税收入如何纳税?
  • 对以前年度的收入调整
  • 品牌活动推广文案
  • 补缴的公积金可以抵扣个税吗
  • 母公司给子公司担保需要决议吗
  • 所得税费用税率规定
  • 单位住房没有房产证是否可以买卖
  • 房地产企业收到定金 什么时候交增值税 账务处理
  • 长期待摊费用账户按用途和结构分类应属于
  • 实缴资本是真的吗
  • 原材料销售出库会计分录
  • 什么样的企业有核心能力
  • 税控专用设备全称是什么
  • QuickBooks - QuickBooks是什么进程 有什么用
  • 银行存款和账面的关系
  • laravel数据迁移
  • 知乎如何更改名字
  • PHP:stream_socket_get_name()的用法_Stream函数
  • 识别税收风险点是什么
  • 年度确认收入怎么算
  • 水表同步
  • 生活常识 小常识
  • 直运商品委托代销商品的销售成本的计算方法应采用
  • grid-column
  • laravel 5.1下php artisan migrate的使用注意事项总结
  • 浅析人物形象的论文开题报告
  • php demo
  • 怎么编制资金平衡表格
  • pytorch nn.parameters
  • 命令行修改mac地址
  • json有几种基本结构
  • 社会保险费的征收机构由什么规定
  • websocket前端vue
  • js不同类型的工厂函数
  • 连带责任担保会被拘留吗
  • 研发费用的会计处理方法
  • 外贸出口退税进项发票有多家供应商怎么匹配
  • 个税申报报的是已离职的员工员工投诉
  • 帝国cms灵动标签 PHP变量文章ID加减1
  • 计提以前年度的企业所得税
  • 母公司与子公司的区别
  • 一般纳税人金税盘分录
  • 产业扶持资金账户是什么
  • 收据可以入账吗,符合税法规定吗
  • 预缴增值税及附加可以在电子税务局申报吗
  • 增值税进项用不完怎么办
  • 事业单位用电收费标准
  • 小规模纳税人注册资金要求多少
  • 非房产企业出售土地,能否计算抵减地价款
  • sql server分组查询
  • mysql格式化数值
  • solaris教程
  • 重装win7旗舰版系统教程
  • Win10预览版更新弹窗如何关闭
  • rdesktop命令
  • winxp系统界面图片
  • pavsrv50.exe - pavsrv50进程管理信息
  • win7运行窗口在哪
  • git打标签命令
  • dos批处理高级教程合编.pdf
  • 遍历enumeration
  • OpenGl的glMatrixMode()函数理解
  • [置顶]bilinovel
  • android studio快捷键补全
  • unity的gui
  • javascript indexOf函数使用说明
  • js操作对象的方法
  • js数组用法
  • 江苏食品经营许可证企业端官网
  • 新加坡税务局电邮
  • 国家税务总局服务中心
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设