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