点击上方”优派编程“选择“加入星标”,第一时间关注原创干货

chatgpt接入公众号聊天功能(php版)

 

https://www.fang1688.cn/study-code/3496.html

今天小编方包介绍:如何用php将最近很火的聊天机器人chatgpt对接到公众号,进行聊天对话!来看效果,ChatGPT就出现在普通的微信公众号的对话框里,有问必答:

对接教程

而为了让用户体验更加丰富、便捷,开发者可以选择将自然语言生成模型chatGPT接入微信公众号。

如何将chatGPT接入微信公众号

要想将chatGPT接入微信公众号,要遵循以下步骤:

首先需要注册一个OpenAi开发者帐号,然后创建一个微信公众号,后者不细说,这里简单说说如何注册一个OpenAi开发者账号,流程很简单:

1.想办法访问guo外网站,然后下面网站上注册,

https://chat.openai.com/auth/login

2.注册需要填guo外手机号进行验证码接收,支付宝支付一美元即可。可以到打开下面接码平台地址:

https://sms-activate.org/cn/

 

能进到这个界面证明你成功了:

3.用同样的账号登录以下网站,能看到分配给你的SECRET KEY,这个可以用于调起官方公开的API进行自主开发。

https://beta.openai.com/account/api-keys

官方开放了一个接口URL,以php为例,用curl请求(带上上面的SECRET KEY作为鉴权参数)就能得到分析结果:

function ($q)
{
    // 设置chatGPT的接口URL
    $api_url = 'https://api.openai.com/v1/completions';
    // 设置访问令牌
    $access_token = '上面的SECRET';
    // 设置请求的参数
    $data = array(
        //'prompt' => '写一段php调用chatGPT', // 要向chatGPT发送的问题
        'prompt' => $q,
        // 要向chatGPT发送的问题
        'model' => 'text-davinci-003',
        // 使用的模型名称
        'max_tokens' => 4000, // chatGPT返回的最大文本长度
    );
    // 使用curl发送请求
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt(
        $ch,
    CURLOPT_HTTPHEADER,
        array(
            'Content-Type: application/json',
            'Authorization: Bearer ' . $access_token,
        )
    );
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    $response = curl_exec($ch);
    $response_data = json_decode($response, true);
    if ($response_data['id']) {
        // 获取chatGPT返回的答案
        $answer = $response_data['choices'][0]['text'];
        return $answer;
        // 处理答案
    } else {
        // 处理错误
        // ...
        return '我不大理解你说的,能精炼点提问吗?';
    }
}

利用这个,我可以先简单实现一个网页版的chatGPT:

if (isset($_GET['q'])) {
    die(chatGPT($_GET['q']));
}

php网页版聊天机器人的体验地址:

https://hk.wxnodes.cn/wxCo.php?q=你是谁

接着,为了能让公众号接入,开发者需要配置一台能访问该接口的云服务器环境,在安装必要的依赖库和框架后,用上述代码编写接口URL,然后在公众号的mp后台去配置“服务器配置”:

将下面代码放到公众号的服务器中,这里已phpstudy为例。

 

<?php
header("Content-type: text/html; charset=utf-8");
$nonce = $_GET['nonce'];
$token = 'weixin'; //此处对接上图你公众号后台的token值
$timestamp = $_GET['timestamp'];
if (isset($_GET['echostr'])) {
if (bindServerCheck()) {
echo $_GET['echostr'];
}
exit();
}
responseMsg();
//消息回复
function responseMsg() {
//1.获取到微信推送过来post数据(xml格式)
$postArr = file_get_contents("php://input");

//libxml_disable_entity_loader(true);
//2.处理消息类型,并设置回复类型和内容
$postObj = simplexml_load_string($postArr, 'SimpleXMLElement', LIBXML_NOCDATA);
//判断该数据包是否是订阅de事件推送
if (strtolower($postObj->MsgType) == 'event') {
//如果是关注 subscribe事件

if (strtolower($postObj->Event) == 'subscribe') {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$content = '欢迎关注公众号"优派编程",定期分享编程干货!
若有疑问联系微信号:fbao9394
直接回复消息,如搜索关键词:“python”,即可领取python课程的学习资料!
个人it博客:<a href="http://wp.fang1688.cn">知识学堂---博客的入口地址</a>';




//修改为
if (is_utf8($content)) {
$content = $content;
} else {
$content = iconv('gb2312', 'UTF-8//IGNORE', $content);
}

$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
}




}



if (strtolower($postObj->MsgType) == 'text') {
//如果是关注 subscribe事件

// if (strtolower($postObj->Event) == 'subscribe') {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$keyword = trim($postObj->Content);





//此处$link就是上面php接入chatgpt的接口地址,改成你自己的接口地址!
$link='https://hk.wxnodes.cn/wxCo.php?q='.$keyword;
$html = file_get_contents($link);
$content =$html;




//修改为
if (is_utf8($content)) {
$content = $content;
} else {
$content = iconv('gb2312', 'UTF-8//IGNORE', $content);
}

$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
// }




}








}


// 开发者模式绑定校验
function bindServerCheck($token) {
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$tmpArr = array(
$token,
$timestamp,
$nonce
);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
return true;
} else {
return false;
}
}




function to_utf8($in)
{
if (is_array($in)) {
foreach ($in as $key => $value) {
$out[to_utf8($key)] = to_utf8($value);
}
} elseif(is_string($in)) {
if(mb_detect_encoding($in) != "UTF-8")
return utf8_encode($in);
else
return $in;
} else {
return $in;
}
return $out;
}




function is_utf8($str)
{
return preg_match('//u', $str);
}

function music($url,$tetle,$des) {
$MusicUrl=$url;
$tetle=$tetle;
$des=$des;
$textTpl = " <xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Music>
<Title><![CDATA[$tetle]]></Title>
<Description><![CDATA[$des]]></Description>
<MusicUrl><![CDATA[$MusicUrl]]></MusicUrl>
<HQMusicUrl><![CDATA[$MusicUrl]]></HQMusicUrl>
</Music>
<FuncFlag>0</FuncFlag>
</xml>";
$msgType = "music";

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}


?>

上面代码你要修改:

token值

$token = 'weixin'; //此处对接上图你公众号后台的token值

$link值

//此处$link就是上面php接入chatgpt的接口地址,改成你自己的接口地址!这里下面  https://hk.wxnodes.cn/wxCo.php?q=  是参考值

$link='https://hk.wxnodes.cn/wxCo.php?q='.$keyword;

 

那绑定这个“服务器配置”的URL是干嘛用的呢?

它的作用是:在用户在公众号上发生特定行为时(比如用户给公众号发信息),微信服务器会把用户相关的信息发送给这个URL,开发者就能在这个URL上进行分析和响应。

存在问题

公众号要开通认证才能突破5秒的限制~

(不然如果请求复杂的问题,大于5秒的响应时间的话;比如需要chatgpt机器人耗大量时间的问题,就会出现下图“该公众号服务出现故障,请稍后再试~”)

对于被动消息回复,微信公众号提供了5秒内的时间限制,也就是说,它请求URL后,URL在5秒内有输出合法的返回体,那么微信就直接转发给用户。这种方式比较简单,开发者只需确保5秒内把该做的逻辑都做好并返回内容就好。市面上用了charGPT的公众号大多是基于这种方式,这种方式有利有弊:

  1. 坏处:5秒内不一定能把逻辑算完。charGPT的接口在对于一些复杂问题的解读时,耗费时长超过5秒是很正常的,这时候公众号就认为出错了。
  2. 好处:对公众号主体要求比较低,且开发成本较低。个人订阅号都能实现。

而对于主动客服消息回复,在公众号请求URL后,开发者服务器自己做逻辑,不管花了多长时间,他都能在未来某个时间点主动推送结果。这种方式也有利有弊:

坏处:需要认证的企业主体的公众号

因为需要用到客服接口

chatGPT在微信公众号中的场景

在微信公众号中,chatGPT可以应用于许多场景,比如为用户提供自动回复、客服机器人、智能问答等功能。例如,当用户在公众号中发送问题时,chatGPT能够快速生成回复,解决用户的疑惑。此外,chatGPT还可以用作客服机器人,为用户提供24小时不间断的服务。

chatGPT接入微信公众号具有许多优势。

首先,它能够为用户提供更丰富、更便捷的交互体验,让用户感觉微信公众号更加“智能”。其次,chatGPT可以大大降低企业和个人的客服成本,让他们更专注于核心业务。此外,chatGPT还能够提高公众号的粉丝粘性,让用户更愿意在公众号中留存。

chatGPT接入微信公众号的优势和局限

当然,chatGPT接入微信公众号也存在一些局限和挑战。

首先,chatGPT是一个自然语言生成模型,并不能完全替代人类的思考能力。因此,在处理一些比较复杂的问题时,它可能会出现回复不准确的情况。

其次,chatGPT需要大量的训练数据才能达到理想的效果,因此开发者需要花费较多的时间和精力来搜集和标注数据。

总的来说,chatGPT接入微信公众号是一个值得探索的话题。它能够为用户提供更丰富、更便捷的交互体验,同时也能够降低企业和个人的客服成本。尽管它存在一些局限和挑战,但随着技术的不断发展,chatGPT在微信公众号中的应用前景一定会更加广阔。


本期内容就到这里啦~以上内容均可在方包博客http://fang1688.cn网站直接搜索名称访问哦。欢迎感兴趣的小伙伴试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

欢迎大家加入方包的优派编程学习圈子,和多名小伙伴们一起交流学习,向方包 1 对 1 提问、跟着方包做项目、领取大量编程资源等。Q群「891029429」欢迎想一起学习进步的小伙伴~

另外方包最近开发了一款工具类的小程序方包工具箱」,功能包括:抖音、小红书、快手去水印,天气预报,小说在线免费阅读(内含上万部热门小说),历史今天,生成图片二维码,图片识别文字,ai伪原创文章,数字摇号抽奖,文字转语音MP3功能…

送福利!关注下方的公众号:「优派编程」回复「编程」,即可获得软件app下载资源和python、java等编程学习资料!

往期文章:

   
点击卡片关注「优派编程」
定期分享 it编程干货

 ⬇️ 点击下方阅读原文直达 方包博客 

发表评论

您的电子邮箱地址不会被公开。

1 + 5 =