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

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

  • iphone5s支持移动4g吗(iphone5s支持移动4g吗)(iPhone5s支持移动4g吗)

    iphone5s支持移动4g吗(iphone5s支持移动4g吗)(iPhone5s支持移动4g吗)

  • 抖音里面喜欢的视频怎么删除(抖音里面喜欢的评论怎么删除)

    抖音里面喜欢的视频怎么删除(抖音里面喜欢的评论怎么删除)

  • 如何分区硬盘(win11如何分区硬盘)

    如何分区硬盘(win11如何分区硬盘)

  • 红米手环有几种颜色呢(红米手环功能最全介绍)

    红米手环有几种颜色呢(红米手环功能最全介绍)

  • 苹果蓝牙耳机无线充电和有线充电区别(苹果蓝牙耳机无法配对)

    苹果蓝牙耳机无线充电和有线充电区别(苹果蓝牙耳机无法配对)

  • 手机屏幕黑色怎么调白(手机屏幕黑色怎么变过来)

    手机屏幕黑色怎么调白(手机屏幕黑色怎么变过来)

  • 2016年超级计算机叫什么(2016年超级计算机)

    2016年超级计算机叫什么(2016年超级计算机)

  • 钉钉打卡别人能看到吗(钉钉打卡别人能看见我的考勤吗)

    钉钉打卡别人能看到吗(钉钉打卡别人能看见我的考勤吗)

  • 天猫精灵方糖连不上网(天猫精灵方糖连接扫地机器人)

    天猫精灵方糖连不上网(天猫精灵方糖连接扫地机器人)

  • 华为手机怎么监听另一个华为手机(华为手机怎么监控华为平板)

    华为手机怎么监听另一个华为手机(华为手机怎么监控华为平板)

  • 微信发超过5分钟的视频怎么发(微信发超过5分钟长视频)

    微信发超过5分钟的视频怎么发(微信发超过5分钟长视频)

  • iphone11长多少厘米(iphone 11长多少)

    iphone11长多少厘米(iphone 11长多少)

  • 快手该身份证已被注册(快手身份证已被使用怎么办现在不能注册了)

    快手该身份证已被注册(快手身份证已被使用怎么办现在不能注册了)

  • 联想在哪一年拿下中国个人电脑市场第一(联想几年了)

    联想在哪一年拿下中国个人电脑市场第一(联想几年了)

  • 腾讯视频怎么下载原视频(腾讯视频怎么下载)

    腾讯视频怎么下载原视频(腾讯视频怎么下载)

  • iphone扩音器进水怎么清理(苹果扩音进水)

    iphone扩音器进水怎么清理(苹果扩音进水)

  • 所选域名不能超过多少字符(域名不可用什么意思)

    所选域名不能超过多少字符(域名不可用什么意思)

  • gt和gtx有什么区别

    gt和gtx有什么区别

  • 华为云空间怎么清理(华为云空间怎么导出到新手机)

    华为云空间怎么清理(华为云空间怎么导出到新手机)

  • vivoy93s什么时候上市的(vivoy93s什么时候发售)

    vivoy93s什么时候上市的(vivoy93s什么时候发售)

  • xr支持无线充电吗(xr支持无线充电多少w)

    xr支持无线充电吗(xr支持无线充电多少w)

  • 京东取消处理中是什么(京东取消处理中是什么意思)

    京东取消处理中是什么(京东取消处理中是什么意思)

  • 乐视2怎么root授权

    乐视2怎么root授权

  • vivox9的互传在哪儿找呢(vivix9互传在哪里)

    vivox9的互传在哪儿找呢(vivix9互传在哪里)

  • 闲鱼怎么切换账号(闲鱼如何切换账号)

    闲鱼怎么切换账号(闲鱼如何切换账号)

  • 交管12123支付页面打不开(交管12123支付页面为什么只有农行)

    交管12123支付页面打不开(交管12123支付页面为什么只有农行)

  • 苹果x的全网通和双网通是什么区别

    苹果x的全网通和双网通是什么区别

  • 华为mate20灭屏显示在哪

    华为mate20灭屏显示在哪

  • dlgli.exe是病毒程序吗 dlgli进程有何作用(病毒dll文件)

    dlgli.exe是病毒程序吗 dlgli进程有何作用(病毒dll文件)

  • Transformer模型入门详解及代码实现(transformer模型包含哪些结构)

    Transformer模型入门详解及代码实现(transformer模型包含哪些结构)

  • 那些车不用交税
  • 固定资产清理过程涉及的报表
  • 风险纳税人是指个人还是单位
  • 代扣代缴个人所得税如何做账
  • 润滑油怎么做账务处理
  • 收到的普通发票需要认证吗
  • 外地预交的附加税金在申报的时候怎么填
  • 进项税抵扣销项税怎么做账
  • 小微企业利息收入增值税
  • 电子承兑没到期如何贴现
  • 单位聘请的临时工请假旅游
  • 通行费进项抵扣条件
  • 短期借款的利息会计分录怎么写
  • 收到3%的增值税专用发票可以抵扣吗
  • 税金及附加与期间费用区别
  • 劳务派遣公司如何缴纳残疾人保障金
  • 境外代扣代缴的税最后归谁所有
  • 维护费开的普票能全额抵扣吗?
  • 简易征收是什么意思和一般纳税人
  • 公司缴纳电费
  • 汇算清缴是啥
  • 出租车发票有出租车信息吗
  • 旧的活动板房多少钱一个
  • 公司成立之后有人投资怎么做分录?
  • 2018年年终奖个税计算方法
  • 对账单和电子回单区别
  • 应收出租包装物的租金计入
  • 预提返利的会计处理
  • linux的sh
  • mac的pdf怎么转换成word
  • msdn原版win7
  • 简述linux系统的启动
  • 如何控制网络速度
  • 如何在mac上快速打开聚焦搜索
  • 出口企业免抵退不得抵扣进项
  • gain_trickler_3202.exe 进程查询 gain_trickler_3202进程是什么文件
  • 什么是应交税费未交增值税
  • php各个框架的优缺点
  • 固定资产是指什么
  • 员工多交的个人社保
  • ftpd命令
  • python中insert函数怎么用
  • python中如何创建一个对象
  • 向分支机构支付融资利息可以扣除吗?
  • 领取营业执照后超过30天
  • 手机银行对公账户转账要手续费吗
  • 公司从个人手中购买二手车
  • 收入总额是什么意思
  • sql 数据计算
  • 计提固定资产折旧是什么意思
  • 给子公司注资怎么做账
  • 产假工资扣税
  • 上年折旧没提今年可以补提吗
  • 怎样在excel计算
  • 待抵扣进项税额分录
  • 建筑业外包工程包括哪些
  • 经济往来怎么写
  • mysql更改密码命令
  • mysql压测调优
  • 分配服务器失败
  • fedora soas
  • ubuntu20.04忘记root密码
  • windowxp怎么设置密码
  • centos 7 dns
  • find.exe应用程序错误
  • win8系统硬盘怎样分区
  • win10桌面右键菜单变宽了
  • win8.1怎么样
  • js 位置
  • ie6怎么设置兼容性
  • angular.min.js
  • python批量创建文件
  • js怎么判断日期大小
  • 怎么用python播放音乐
  • 国家税务总局票据丢失罚款标准
  • 去哪儿网客服电话怎么转人工
  • 南通税务网站
  • 如何异地代缴社保
  • 新疆喀什泽普县海拔高度是多少米
  • 电力企业所得税按期
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设