范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

开源利用。NET开发第一个ChatGPT聊天系统

  最近ChatGPT很火,借此机会给大家推荐一个利用C#开发的开源的ChatGPT聊天系统,话不多说,直接上主题。  准备第一步:注册OpenAI账号
  因为对大陆以及中国香港地区不开放,所以我们需要小小的科学一下。
  来一个我就是参照着申请账号的园子的文章:
  https://www.cnblogs.com/chatgpt/p/how-to-register-chatgpt-in-china.html
  当然手机那里可以淘宝找,几块钱就能帮忙注册手机,账号里面默认还有18美元余额。
  注意点:如果搭建了科学还是提示不对你的国家提供服务的话,尝试清空浏览器缓存或者打开浏览器的无痕窗口。Chrome默认在右上角三个点打开就能找到"打开新的无痕式窗口"。 万事具备,直接撸代码1.网页获取所需token和cookie
  我们需要三个东西:UserAgent,CfClearance,Session_token
  我们需要先打开ChatGPT官方网站:https://chat.openai.com/chat 然后按下F12打开浏览器的开发者模式
  UserAgent在网络里(只需要复制UserAgent:后面的值):
  CfClearance和Session_token在应用程序->cookie里面
  2.创建一个session用来表示一个会话public OpenAISession(string session_token,string cfClearance,string userAgent) {     Session_token = session_token;     CfClearance = cfClearance;     UserAgent = userAgent;     Headers = new Dictionary();     Cookies = new Dictionary();     Proxies = new Dictionary(); }
  Session可以刷新自己的AccessToken和Session_token public async Task RefreshSessionAsync() {     if (string.IsNullOrEmpty(Session_token))     {         throw new Exception("No tokens provided");     }      // Set cookies     Cookies.Put("__Secure-next-auth.session-token", Session_token);     Cookies.Put("cf_clearance", CfClearance);     string cookiesString = GetCookiesString();     Dictionary map = new Dictionary();     Headers.Put("User-Agent", UserAgent);     Headers.Put("cookie", cookiesString);     Headers.Put("Cookie", cookiesString);      var response = await GetAsync("https://chat.openai.com/api/auth/session");     if (!response.IsSuccessStatusCode)     {         Console.WriteLine("err code: " + response.StatusCode);         Console.WriteLine("cf_clearance: " + CfClearance);         Console.WriteLine("token: " + Session_token);         Console.WriteLine("userAgent: " + UserAgent);         Console.WriteLine("请检查以上参数是否正确,是否过期。");          throw new Exception("无法获取token!请重试");     }      try     {         string name = "__Secure-next-auth.session-token=";         var cookies = response.Headers.GetValues("Set-Cookie");         var stoken = cookies.FirstOrDefault(x => x.StartsWith(name));         Session_token = stoken == null ? Session_token : stoken.Substring(name.Length, stoken.IndexOf(";") - name.Length);         Cookies.Put("__Secure-next-auth.session-token", Session_token);         var result = await response.Content.ReadAsStringAsync();         AccessToken = JsonSerializer.Deserialize(result, _jsonSerializerOptions)?.AccessToken;         RefreshHeaders();     }     catch (Exception ex)     {         Console.WriteLine(#34;Error {nameof(RefreshSessionAsync)}:{ex}");         throw new Exception(#34;Error {nameof(RefreshSessionAsync)}", ex);     } }
  获取到的最新的AccessToken更新到header里,Session_token更新到cookie里 private void RefreshHeaders() {     Headers.Put("Host", "chat.openai.com");     Headers.Put("Accept", "text/event-stream");     Headers.Put("Authorization", #34;Bearer {AccessToken}");     Headers.Put("User-Agent", UserAgent);     Headers.Put("X-Openai-Assistant-App-Id", string.Empty);     Headers.Put("Connection", "close");     Headers.Put("Accept-Language", "en-US,en;q=0.9");     Headers.Put("Referer", "https://chat.openai.com/chat"); }  string name = "__Secure-next-auth.session-token="; var cookies = response.Headers.GetValues("Set-Cookie"); var stoken = cookies.FirstOrDefault(x => x.StartsWith(name)); Session_token = stoken == null ? Session_token : stoken.Substring(name.Length, stoken.IndexOf(";") - name.Length); Cookies.Put("__Secure-next-auth.session-token", Session_token); 3.创建机器人绑定一个会话public Chatbot(OpenAISession openAISession) {     OpenAISession = openAISession;     ResetConversation(); }  ///  /// 重置Conversation,开启一个新的会话 ///  public void ResetConversation()  {     _conversationId = null;     _parentMessageId = Guid.NewGuid().ToString(); }
  如何保持上下文聊天以及多用户隔离?
  上下文聊天已经内置,会自动与机器人的回复进行关联,当需要重新开启一个对话的时候,可以调用ResetConversation,这样对应的机器人对象发过去就是开启了一个新的对话。
  如何多用户隔离?比如联合微信机器人使用,可以将一个人或者一个群对应一个Chatbot对象,并且利用id与机器人做关联。
  当然这个_clientID需要使用者做唯一性管理 //可以作为隔离不同客户端聊天上下文的凭据,即一个机器人绑定一个客户端 //客户端编号可以是,微信id,qq id,飞书id,亦或者自己开发的软件的用户id private readonly string _clientID;   public Chatbot(OpenAISession openAISession, string clientID) {     OpenAISession = openAISession;     _clientID = clientID == null ? Guid.NewGuid().ToString() : clientID;     ResetConversation(); }
  最后构造对话对象,发送到对应api public async Task GetChatReplyAsync(string prompt) {     var conversation = new Conversation();     conversation.Conversation_id = _conversationId;     conversation.Parent_message_id = _parentMessageId;     conversation.Messages = new Message[]     {         new Message()         {             Content = new Content             {                 Parts = new string []{ prompt }             }         }     };      return await GetChatResponseAsync(conversation); }  ///  /// 获取响应 ///  ///  ///  /// 服务器返回非200 private async Task GetChatResponseAsync(Conversation conversation) {     using (var client = new HttpClient())     {         var response = await OpenAISession.PostAsync(_conversation, JsonSerializer.Serialize(conversation, _jsonSerializerOptions));         if (!response.IsSuccessStatusCode)         {             throw new Exception(#34;Faild to request.StatusCode:{response.StatusCode}");         }         var msg = await response.Content.ReadAsStringAsync();         var data = msg.Split(" ")?.ToList().Where(x => !string.IsNullOrEmpty(x) && !x.Contains("data: [DONE]")).LastOrDefault()?.Substring(5);         var reply = JsonSerializer.Deserialize(data, _jsonSerializerOptions);         _conversationId = reply.Conversation_id;          return reply;     } } 效果截图(仅测试)OpenAISession openAIOptions = new OpenAISession(Session_token, CfClearance, UserAgent); await openAIOptions.RefreshSessionAsync(); Chatbot chatbot = new Chatbot(openAIOptions); Console.WriteLine("用c++写个冒泡查询"); var reply = await chatbot.GetChatReplyAsync("用c++写个冒泡查询"); Console.WriteLine(reply.Message.Content.Parts.FirstOrDefault());
  获取源码:关注我并私信回复:"ChatGPT聊天"。
  欢迎点赞+转发+关注!大家的支持是我分享最大的动力!!!

只顾自个红了,不顾景区黄了的不是好局长男子4分钟3次遭村民拦车要钱官方介入有大把的时间换装作秀,不如扑下身子老老实实到自己负责的景区走走看看,别什么时候景区黄了都不知道!看到甘孜州的新闻,脑子里第一时间想到的是那个英俊华为不造车的1400天头条创作挑战赛政策春风,又将加速数字经济的列车。在未来510年间,千行百业将在数字化智能化的浪潮下重新做一遍。我们愿意成为这一历史阶段的观察者记录者。探索数智化栏目将通过对消费汽车欧文坚持2个续约要求!库班被气坏,独行侠成冤大头,篮网看笑话自从独行侠在本赛季交易截止日前得到欧文后,球队并没有迎来快乐时刻,东欧组合看似强大,但实则胜少输多。在目前欧文和东契奇两人共同出战的7场比赛中,球队仅仅只赢下了其中的2场比赛。球队这家药企真有钱!3。5亿元派发现金红包,15亿元用于理财投资本文来源时代周报作者韩利明业绩上涨的同时,普洛药业(000739。SZ)忙着分红和理财。3月9日晚间,普洛药业披露2022年年报。报告期内,公司实现营业收入105。45亿元,同比上山东济南植此青绿种个春天来源人民网山东频道老师家长和孩子们共同参与植树活动。李天艺摄孩子们播种后,一起浇水。李天艺摄让孩子们播下植绿护绿爱绿的种子。李天艺摄参与植树活动,让孩子们更加亲近自然。李天艺摄3月宁波市镇海投资有限公司法律中介合格供应商库入围项目招标公告宁波市镇海区城市更新投资建设运营有限公司宁波市镇海区海江投资发展有限公司宁波市镇海投资有限公司法律中介合格供应商库入围项目招标公告一受宁波市镇海区城市更新投资建设运营有限公司宁波市中国人寿寿险公司推出国寿鑫民宝两全保险,护航大众养老生活近日,中国人寿保险股份有限公司(以下简称中国人寿寿险公司)推出第二款个人养老金保险产品国寿鑫民宝两全保险。截至2月初,共有9家公司的13款产品入选个人养老金保险产品名单,且中国人寿高通中端芯大升级,骁龙7Gen2牙膏挤爆,天玑9000瑟瑟发抖自从华为被制裁,麒麟芯片无法迭代,高通就开始了摆烂模式,旗舰芯片接连推出骁龙888和骁龙8Gen1这两代火龙,中端芯片上面也不用心,骁龙778G能效表现不错,但是性能还是弱了点,至菲律宾海洋边界与主张述评(LIS142)(1918010113)内容摘要菲律宾对于领土的主张经历了一个不断扩张的历程,1978年菲律宾国内出台的第1596号总统令是一份非法扩张菲律宾领土侵犯中国领土主权的法律文件。这个文杭州太子湾花事实拍,郁金香洋水仙开得不错,想看樱花的再等等今天(3月10日),爱如繁花2023太子湾春季花事活动正式开启。潮新闻记者特地坐了游船专线去赏花,帮大家尝鲜,提供一份赏花攻略(此前报道戳这里)。近10点到太子湾公园门口,有志愿者重庆隐形富豪袁志伦铝矾土矿霸主,营收420亿,身家125亿1964年,袁志伦出生于重庆南川。15岁,他就考上了成都科技大学金属材料系。1984年,大学毕业后,他先是加入中国冶金进出口公司,后又到中国有色金属进出口公司,从事金属进出口工作。
苹果疑似裁员对苹果来说,前途并非一帆风顺,危机正在酝酿文小伊评科技根据外媒AppleInsider发布的新闻,苹果已经削减AppleStore以外零售渠道的非季节性员工(所谓季节性员工就是指那些在圣诞促销季特殊招聘的员工,俗称临时工,中科院在木材腐烂的机制方面取得重要进展尽管木质纤维素残基的生物转化对森林土壤营养物质的储存至关重要,但木材腐烂的地域性以及与地下微生物群落组成和土壤化学性质相互作用的机制尚不明确。本研究对白腐和棕腐木屑的成分进行了检测苹果M2Max跑分曝光CPU性能略高于M2ProIT之家1月21日消息,继日前M2Pro现身GeekBench跑分库之后,IT之家查询GeekBench网站发现M2Max跑分也已经曝光。从跑分结果来看,M2Max的CPU在单核性菲律宾GlobeTelecom其该国最长光缆计划将在4月前完成据TelecomTV网站1月20日报道,菲律宾运营商GlobeTelecom已经证实,它将今年在4月前完成它所声称的该国最长的国内海底光缆网络项目。该电信公司在一份声明中解释说,这天津港集团发布全球首个全物联网集装箱码头北京日报客户端记者白波通讯员李佐彤薄承天津港集团近日发布全球首个全物联网集装箱码头,向数字孪生港口晋级迈出关键一步。据介绍,全球首个全物联网集装箱码头是基于此前建成运营的全球首个智BTC哈希率的上升预计将导致挖矿难度增加7至101月6日,比特币(BTC)的哈希率从同一天记录的约233EHs飙升17至361。28EHs的历史新高这是过去一年中第二大单日涨幅。截至发稿时,它已回撤至269。56EHs。过去一周美国持续收割越南,越南经济或倒退23年,保持12个月抛售美债状态由于美国31。4万亿美元的债务上限已经于1月19日到期,美国财政部开启了暂停向公务员退休和残疾基金以及邮政退休人员健康福利基金注入新资金的非常规举措。也就是说,美国财政部正在挪用公越南麻烦超预期,订单骤降又遭美金融收割,积极合作中国摆脱困局越南是最近几年发展较快的国家,也是被西方国家普遍看好的国家,但是如今却遇到了麻烦。越南近些年取得快速发展最主要依靠的就是外贸出口,并且依赖的非常大。越南承担了很多从中国转移出去的加今年一季度房企到期债券规模2225亿元,融资环境或将进一步改善自2022年11月以来,支持房企融资的政策不断,房企能否真正走出低谷期,关键在于融资。1月23日,据克而瑞研究中心发布的报告,进入2023年,房企融资端支持政策还在不断释放。例如,重庆ampampamp成都,名为竞争,实为竞合!中国第四极未来路在何方?双城经济圈纲要2021年10月20日,中共中央国务院印发的成渝地区双城经济圈建设规划纲要发布。这是指导当前和今后一个时期成渝地区双城经济圈建设的纲领性文件。从那时起,重庆和成都的建闲聊,说个段子2020年年初,当时听到美国要直升机撒钱,我就紧急拉着我老婆去周生生买金首饰(迟早要买不如早买)。当时国际金价大概在1500左右。从当时到现在,现在美国已经在努力回收货币了。而金价