位置: 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)你了解多少?(服务器连接方式包括直接相连,间接连接)

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

  • 小规模纳税人转让不动产增值税
  • 取得发票与实际业务不符怎么办
  • 一次性扣除固定资产政策案例
  • 红字发票的数电票号码是啥
  • 工程图纸设计费用收费标准
  • 六大往来科目重分类分录
  • 培训机构开发票不能开公司抬头吗
  • 进项大于销项的会计分录怎么做?
  • 母公司对子公司的债务承担连带责任
  • 房产税收取标准有哪些
  • 去年多计提了费用今年怎么办
  • 补去年收入的会计分录
  • 固定资产本期折旧额与上期不一样
  • 汽车融资租赁行业发展趋势
  • 怎么网上补报以前年度的个人所得税?
  • 增值税出口退税计入什么科目
  • 水利建设基金怎么计提
  • 流转税通俗举例
  • 未及时申报个税的理由
  • 技术调试费用开几个点税
  • 分期购车的会计分录
  • 新政府会计制度科目表
  • windowsserver2008r2
  • 在php中,字符串有哪些表示形式
  • win10电源已接通未充电怎么办
  • PHP:stream_get_wrappers()的用法_Stream函数
  • 年底会计结账
  • emsm是什么意思
  • 不确认收入要结转成本吗
  • 购入增值税税控系统专用设备
  • 公司购买土地建厂房怎么入账
  • 前端cli搭建
  • 收到境外服务费可以退税吗
  • 上年折旧费多计提了,本年怎么调
  • 挂靠方项目部账务是否并入被挂靠方公司账务?
  • 企业职工薪酬如何确定
  • 增值税附加税有哪几种
  • 本期进项税额明细表为什么数据一直出不来
  • 怎么升级一般纳税人
  • dedecms使用教程
  • mongodb查询工具
  • sql实例命名规则
  • 以前年度租赁收入如何处理
  • 会计需要装订资料有哪些
  • 如何让主营业务成本增加
  • 营业外收入应如何核算
  • 无固定合同有哪些好处
  • 红字更正法和红字冲销
  • 房地产成本核算对象
  • 特殊销售方式下的销售额确认图文怎么做
  • 发票开预付卡充值可以计入费用吗?
  • 开票方与付款方不一致问题
  • 联营企业子公司是否构成关联方
  • mysql5717安装及配置超详细教程
  • linux系统中的一切都归结为
  • 安装win7旗舰版用户名和密码是多少
  • win7桌面记事本
  • win10拦截在哪里关
  • win8开始屏幕设置
  • mac字体调节大小
  • 怎么安装多个相同软件
  • centos 做bond
  • js 获取ua
  • js中document.write
  • JQuery ZTree使用方法详解
  • ide通道怎么打开
  • nodejs实现HTTPS发起POST请求
  • android design库
  • jquery中判断某个类是否存在的方法
  • 浅谈建筑地基基础加固施工技术亲
  • javascript初级教程
  • js 队列
  • android打包v1v2
  • 小规模企业所得税怎么算
  • 税务局怎么添加税种
  • 城管大队长级别高吗
  • 陕西国家电子税务局2.0
  • 契税和耕地占用税由谁负责征收
  • 吉林省国税局网站官网
  • 企业税务人员岗位竞聘报告怎么写
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设