| 
 
上一篇:Discuz升级X3.5后要手动清理Redis内存,否则提示门户和论坛关闭下一篇:江苏省无锡市移动IP(112.25.79.67)爬虫真的很过分,收手吧!| 最近全球大火的ChatGPT人工智能,很多大佬说可能开启了一个新的时代。据说,ChatGPT通晓天文地理,各行各业没有它不知道的。令人称奇的是,虽然是美国人所创造,但它能够根据你的要求,生成流畅的汉语内容,并且遣词造句水平很高,根本看不出是AI写的。 但可惜的是,目前ChatGPT并不对中国大陆地区开放,如果想体验,得自己想办法。于是我就到淘宝上买了一个帐号,利用帐号的api-key,直接向ChatGPT发送数据并得到返回结果,从而实现体验ChatGPT的目的。
 话不多说,公众号的自动回复是ChatGPT最佳应用场景之一。于是我改造了一下“玩慈利网”公众号的服务器代码,让用户给公众号发信息后,将信息作为问题,转发给ChatGPT,并将得到的数据返回给用户。
 这里有一点值得注意,就是公众号给用户的回复方式,采用信息回复方式是行不通的,因为公众号所能允许的第三方服务器响应时间不能超过5秒钟,否则就会提示“该公众号提供的服务出现故障,请稍后再试”。而ChatGPT服务器在国外,再加上要分析处理数据,时间一般都超过了5秒,所以需要转为客服模式,即直接POST数据包到指定URL。
 
 然后在使用时,直接POST就OK了。复制代码//这是根据用户输入内容,获取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}秒";                
        }
 开发过程中,难题主要还是模式问题,一开始如果没有想到用客服模式,会很难搞。再说是个人版的API数据响应慢,有的要等蛮长时间,需要耐心调试。复制代码                $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数据
 识别二维码,进公众号后对话测试效果 | 
 |