QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

微信扫一扫 分享朋友圈

已有 9942 人浏览分享

开启左侧

将ChatGPT与微信公众号打通,实现与人工智能的对话交互

[复制链接]
9942 2
  最近全球大火的ChatGPT人工智能,很多大佬说可能开启了一个新的时代。据说,ChatGPT通晓天文地理,各行各业没有它不知道的。令人称奇的是,虽然是美国人所创造,但它能够根据你的要求,生成流畅的汉语内容,并且遣词造句水平很高,根本看不出是AI写的。
image.png
  但可惜的是,目前ChatGPT并不对中国大陆地区开放,如果想体验,得自己想办法。于是我就到淘宝上买了一个帐号,利用帐号的api-key,直接向ChatGPT发送数据并得到返回结果,从而实现体验ChatGPT的目的。
001.png
  话不多说,公众号的自动回复是ChatGPT最佳应用场景之一。于是我改造了一下“玩慈利网”公众号的服务器代码,让用户给公众号发信息后,将信息作为问题,转发给ChatGPT,并将得到的数据返回给用户。
002.png
  这里有一点值得注意,就是公众号给用户的回复方式,采用信息回复方式是行不通的,因为公众号所能允许的第三方服务器响应时间不能超过5秒钟,否则就会提示“该公众号提供的服务出现故障,请稍后再试”。而ChatGPT服务器在国外,再加上要分析处理数据,时间一般都超过了5秒,所以需要转为客服模式,即直接POST数据包到指定URL。
  1. //这是根据用户输入内容,获取ChatGPT的返回数据
  2.         public function get_text($key)
  3.         {
  4.                 $time1 = microtime(true);
  5.                 $ch = curl_init();
  6.                 $text = $key;
  7.                 $resulttext = "";
  8.                 curl_setopt($ch, CURLOPT_URL, "https://api.openai.com/v1/completions");
  9.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10.                 curl_setopt($ch, CURLOPT_TIMEOUT,300);
  11.                 curl_setopt($ch, CURLOPT_POSTFIELDS, '{
  12.                 "model": "text-davinci-003",
  13.                 "prompt": "'.$text.'",
  14.                 "max_tokens": 2048
  15.                 }');
  16.                 curl_setopt($ch, CURLOPT_POST, 1);
  17.                 $headers = array();
  18.                 $key = "openAI提供给你的key";
  19.                 $headers[] = "Content-Type: application/json";
  20.                 $headers[] = "Authorization: Bearer {$key}";
  21.                 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  22.                 $response = curl_exec($ch);
  23.                 $response_data = json_decode($response, true);
  24.                 if (curl_errno($ch)) {
  25.                         $resulttext = '发生错误:' . curl_error($ch);
  26.                 } else {
  27.                         $resulttext = $response_data['choices'][0]['text'];
  28.                 }
  29.                 curl_close($ch);
  30.                 $time2 = microtime(true) - $time1;
  31.                 return "来自chatGPT的消息:\n\n".trim($resulttext)."\n\n耗时:{$time2}秒";               
  32.         }
复制代码
  然后在使用时,直接POST就OK了。
  1.                 $touser = $fromUsername;    //就是用户的openid
  2.                 $text = $this->get_text($key);   //获取ChatGPT返回数据
  3.                 //POST的json数据结构体
  4.                 $msg = <<<EOT
  5.                 {"touser":"{$touser}",
  6.                 "msgtype":"text",
  7.                 "text":{
  8.                         "content":"{$text}"
  9.                 },
  10.                 "customservice":{
  11.                         "kf_account":"kf2001@你的客服帐号"
  12.                 }}
  13. EOT;
  14.                 $token = $this->get_access_token();
  15.                 $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$token}";
  16.                 $this->curl_post($url,$msg);   //POST数据
复制代码
  开发过程中,难题主要还是模式问题,一开始如果没有想到用客服模式,会很难搞。再说是个人版的API数据响应慢,有的要等蛮长时间,需要耐心调试。
公众号二维码.jpg
识别二维码,进公众号后对话测试效果

上一篇:Discuz升级X3.5后要手动清理Redis内存,否则提示门户和论坛关闭
下一篇:江苏省无锡市移动IP(112.25.79.67)爬虫真的很过分,收手吧!

评论 2

玩慈利网手机认证 实名认证 发表于 2023-2-11 18:44:08 | 显示全部楼层
在使用过程中,发现经常出现问1句,结果回答3句的情况,还显示“服务出现故障,稍后重试”等文字。这是由于第三方服务器响应超过微信限定的5秒了,微信会发起3次重试。
解决方法:
1、将用户openid、查询的keyword等资料POST到自己写的第三方客服接口进行处理。这样就不会受到微信5秒的响应时间限制了。
2、相关输出时直接echo "success",让微信不再重试。
  1.                 $touser = $this->fromUsername;
  2.                 $keyword = $this->keyword;
  3.                 $data = <<<EOT
  4.                 {"user":"{$touser}",
  5.                 "keyword":"{$keyword}"}
  6. EOT;
  7.                 $this->curl_post("https://www.wancili.com/weixin/kefu.php",$data);
  8.                 echo "success";
复制代码
供参考。当然,还有一种高级玩法,就是数据异步处理,略显复杂,我自己没做。

举报 使用道具

回复 支持 反对
玩慈利网手机认证 实名认证 发表于 2023-3-5 22:59:59 | 显示全部楼层
注:由于潜在的法律风险,目前玩慈利网公众号已经取消接入ChatGPT了

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

36

关注

177

粉丝

13622

主题
热门资讯
网友晒图
  • 公众号

    微信公众号

  • 微信

    站长微信

Powered by Discuz! 在此致以诚挚谢意!

CopyRight © 2011-2024 wancili.com