Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于chatGPT接入微信公众号

关于chatGPT接入微信公众号

作者头像
花叔
发布于 2023-01-05 06:24:37
发布于 2023-01-05 06:24:37
28.3K70
代码可运行
举报
文章被收录于专栏:花叔的专栏花叔的专栏
运行总次数:0
代码可运行

最近OpenAI的chatGPT出圈了,既然是对话程序,自然而然就会想到能跟公众号结合,于是我研究了一下,实现了本公众号的chatGPT接入,关注并跟我公众号对话即可体验:

给大家分享下经验,会从以下大纲来进行阐述(文末有点):

大纲:

  1. 介绍chatGPT模型及其主要特点,包括它是一个自然语言生成模型,能够根据用户输入生成相应的回复。
  2. 介绍微信公众号及其功能,指出它是一个广受欢迎的社交平台,能够让企业和个人开展线上沟通和互动。
  3. 讨论如何将chatGPT接入微信公众号,包括注册开发者帐号、创建公众号、配置服务器环境、开发接口代码等步骤。
  4. 分析chatGPT在微信公众号中的应用场景,比如为用户提供自动回复、客服机器人、智能问答等功能。
  5. 总结chatGPT接入微信公众号的优势和局限,指出它能够为公众号提供更丰富、更便捷的交互体验,但同时也存在一些挑战和限制。

正文开始:

chatGPT模型及其主要特点

chatGPT是一个由OpenAI开发的自然语言生成模型,它能够根据用户的输入,生成相应的回复。它的优势在于能够模仿人类的语言表达方式,回复内容丰富、流畅,同时也具备一定的语义理解能力。目前chatGPT的模型已经迭代到text-davinci-003,比先前的版本强悍了很多。

关于微信公众号及其功能

而在当今这个信息时代,人们越来越依赖于网络技术,尤其是社交平台。微信公众号就是其中一个广受欢迎的社交平台,它为企业和个人提供了一个线上沟通和互动的渠道。

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

如何将chatGPT接入微信公众号

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

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

1.想办法访问国外网站(日本美国都行),然后下面网站上注册,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://chat.openai.com/auth/login

2.注册需要填外国手机号进行验证码接手,可以到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://sms-activate.org/cn/

这种虚拟号码服务网站去搞,支付宝充值1美元,即可得到虚拟号码。

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://beta.openai.com/account/api-keys

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function chatGPT($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:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (isset($_GET['q'])) {
    die(chatGPT($_GET['q']));
}

体验地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://hk.wxnodes.cn/wxCo.php?q=%E4%BD%A0%E6%98%AF%E8%B0%81

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

配置这个要经历一个验证过程,在一开始时,脚本需要吐出一个用于验证的字符(微信服务器传过来的get参数):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$_GET["echostr"];

验证完,Mp后台就会绑定这个接口URL,之后不用再输出了,直接写自定义代码就好,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$s = "<xml><ToUserName><![CDATA[{$postArr->FromUserName}]]></ToUserName><FromUserName><![CDATA[minijoe]]></FromUserName><CreateTime>" . time() . "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[hello]]></Content></xml>";
$str = '<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>';
// 格式化替换输出
$str = sprintf($str, $postArr->FromUserName, $postArr->ToUserName, time(), chatGPT($postArr->Content));
echo $str;

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//在用户发信息给公众号时,php可以通过这样的方式获取一个微信服务器发过来xml结构体
$postStr = file_get_contents('php://input');
$data = json_encode(simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA));
$postArr = json_decode($data);//这样能获取相关数据
$content = chatGPT($postArr->Content);//获取用户信息内容用chatGPT解读

利用这个就能实现用户在公众号中输入信息,chatGPT生成回复,并将结果反馈给用户。

有同学可能会问,那是怎么“反馈”的?这就涉及到公众号开发中的消息回复机制,主流的方式有两种:被动消息回复和主动客服消息推送。

主要的逻辑差异点在于:是否直接利用“服务器配置”中的URL回调的内容进行用户反馈。

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

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

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

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

因为需要用到客服接口

且开发成本相对高一点,要遵循先换取accesstoken,再主动请求客服接口进行消息推送的逻辑。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function getAccessToken($data)
{
    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $data['AppID'] . '&secret=' . $data['AppSecret'];
    $weixin = file_get_contents($url);
    $jsondecode = json_decode($weixin);
    //$array = get_object_vars($jsondecode);
    return $jsondecode;
}
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $token;
$content = chatGPT($postArr->Content);

发送代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$data = array();
$data['touser'] = $postArr->FromUserName;
$data['msgtype'] = "text";
$data['text'] = [
    "content" => $content,
];
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$response = curl_exec($ch);

好处:消息推送比较灵活,不受时间限制,体验相对更有容错性。

两种方式,我都实现了一下,具体可以看看视频(右边是个人订阅号,在复杂分析时确实容易报错):

http://mpvideo.qpic.cn/0bc3peaamaaafuafua4v75rva6odaz4qabqa.f10002.mp4?dis_k=3b897fbad53b3c19fb0135e6250b0ce4&dis_t=1672899592&play_scene=10400&vid=wxv_2703490873896091649&format_id=10002&support_redirect=0&mmversion=false

chatGPT在微信公众号中的场景

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

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

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

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

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

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

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

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

最后,你猜的没错,本文就是通过charGPT提供的内容进行润色而生产的。

http://mpvideo.qpic.cn/0b2e5maagaaafyafse4v7frvb26dapvqaaya.f10002.mp4?dis_k=05817ab26768679c13d615634d701551&dis_t=1672899592&play_scene=10400&vid=wxv_2703484183394009091&format_id=10002&support_redirect=0&mmversion=false

你分辨出来哪些是我写的吗?可以留言讨论哦。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MinProgram 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
7 条评论
热度
最新
大哥怎么联系啊
大哥怎么联系啊
回复回复点赞举报
不会编程,不懂服务器的小白,可以m我,我能提供chatgpt接入微信
不会编程,不懂服务器的小白,可以m我,我能提供chatgpt接入微信
回复回复点赞举报
大佬已关注,转载了你的文章以后用。
大佬已关注,转载了你的文章以后用。
回复回复点赞举报
最新代码发一下,需要科学才能调用接口了 我邮箱1655592531@qq.com
最新代码发一下,需要科学才能调用接口了 我邮箱1655592531@qq.com
回复回复点赞举报
会封号吗
会封号吗
回复回复点赞举报
解决了 if (curl_errno($ch)) { echo 'cURL error: ' . curl_error($ch); } else { echo 'cURL result: ' . $response; }打印报错 发现是没有证书 禁用SSL后可以了
解决了 if (curl_errno($ch)) { echo 'cURL error: ' . curl_error($ch); } else { echo 'cURL result: ' . $response; }打印报错 发现是没有证书 禁用SSL后可以了
回复回复点赞举报
你好 我跟着做到第三步的时候复制了代码 更换了里面的access_token但是一直“我不大理解你说的,能精炼点提问吗?”response_data没有返回值是什么原因呀
你好 我跟着做到第三步的时候复制了代码 更换了里面的access_token但是一直“我不大理解你说的,能精炼点提问吗?”response_data没有返回值是什么原因呀
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【黄啊码】php结合微信公众号实现裂变海报(基本技术点)
微信公众号裂变式营销代码实现,先讲下基础原理,先生成带有用户参数的二维码,然后用php自带的gd库处理,生成带有用户头像,昵称,参数二维码,营销信息的自定义图片,再将图片传入微信公众号临时素材,当其他用户扫描这个专属推荐码的时候,获取用户的昵称返回给推荐者,并存入数据库,以记录当前有多少人扫描了二维码。
黄啊码
2022/06/15
9760
微信开发--微信公众号(一)
1.在新浪云服务器的仓库里新建PHP文件,右键url访问,复制url地址在 微信测试账号的 接口配置信息里,Token 随便起一个 (好记的)名字
生南星
2019/07/22
22.7K0
微信开发--微信公众号(一)
微信开发--微信公众号 代码示例
wechart.php <?php include_once "network.php"; function getSHA1($token, $timestamp, $nonce) { $
生南星
2019/07/22
12.9K0
公众号关注/订阅事件-微信公众号开发
微信公众号开发之关注事件(订阅事件),当我们启用开发者设置后,微信本身的消息回复将无法使用,那么在用户关注我们公众号的时候就没有任何反馈了, 对用户体验是非常不友好的。下面教大家如果做关注事件,既用户关注公众号,系统给用户一个反馈。
申霖
2019/12/27
8.3K0
公众号关注/订阅事件-微信公众号开发
微信API接口(全) - 微信支付/微信红包/微信卡券/微信小店/JSAPI
微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中。 微信支付、微信红包、微信卡券、微信小店。
程序猿的栖息地
2022/04/29
17.9K0
微信API接口(全) - 微信支付/微信红包/微信卡券/微信小店/JSAPI
微信公众平台开发 自定义菜单
自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:
庞小明
2018/09/19
2.1K0
微信公众平台开发 自定义菜单
Laravel学习记录--微信开发(day1)
要实现自动回复,我们首先的获取用户输入的消息,那么怎么获取用户输入的数据 根据文档,“消息管理”----“接收普通消息” 注意这样一句话
切图仔
2022/09/08
1.3K0
Laravel学习记录--微信开发(day1)
微信公众号三方平台开发【代微信公众号接收消息事件并响应】
今天要讲的是代微信公众号接收消息并进行回复,这里要用到的就是咱们之前在微信公众号三方平台开发【帐号注册、平台创建】里写到的“公众号消息与事件接收URL”,在接收的目标方法里,我们首先要获取到微信推送过来post数据(xml格式),然后对其进行解密操作,从而得到消息内容。
用户2619822
2022/06/10
1.1K0
微信公众号推送消息笔记
根据业务需要,开发一个微信公众号的相关开发,根据相关开发和整理总结了一下相关的流程和需要,进行一些整理和总结分享给大家,最近都在加班和忙碌,博客已经很久未更新了,打气精神,再接再厉,申请、认证公众号的一系列流程就不在这里赘述了,主要进行的是技术的分享,要达到的效果如下图:
stark张宇
2024/07/23
3430
Laravel学习记录--微信开发(day2)
回复音乐信息 参数 是否必须 说明 ToUserName 是 接收方帐号(收-到的OpenID) FromUserName 是 开发者微信号 CreateTime 是 消息创建时间 (整型) MsgType 是 消息类型,音乐为music Title 否 音乐标题 Description 否 音乐描述 MusicURL 否 音乐链接 HQMusicUrl 否 高质量音乐链接,WIFI环境优先使用该链接播放音乐 ThumbMediaId 是 缩略图的媒体id,通过素材管理中的接口上传多媒体文件,得到的id
切图仔
2022/09/14
7280
Laravel学习记录--微信开发(day2)
koa2实现微信公众号关注自动回复消息
在公众号管理后台填写接口配置信息。 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败 加密/校验流程如下:
薛定喵君
2020/08/03
1.5K0
java微信公众号接入(2)
conllter类:这里边有个坑,@PostMapping和上一篇文章的@GetMapping路径必须一致
爱敲代码的猫
2019/10/16
1K0
微信公众号精选采坑记
微信精选是一个常见的接口api。在此例中,将实现一个回复公众号关键字,实现“全网”文章查询功能。有兴趣的读者可关注本号自己试试。如图。
一粒小麦
2019/07/18
5590
微信公众号精选采坑记
微信公众号搭建chatgpt客服
<img src="https://p.ipic.vip/szfix6.png" alt="image-20230221195341050" style="zoom:50%;" />
Zephery
2023/02/26
4.2K0
微信公众号消息接入(普通消息+模板消息)
  1、“硅谷课堂”公众号实现根据关键字搜索相关课程,如:输入“java”,可返回java相关的一个课程;
别团等shy哥发育
2023/02/25
3.7K0
微信公众号消息接入(普通消息+模板消息)
用java开发微信公众号:接收和被动回复普通消息(三)
上篇说完了如何接入微信公众号,本文说一下微信公众号的最基本功能:普通消息的接收和回复。说到普通消息,那么什么是微信公众号所定义的普通消息呢,微信开发者文档中提到的接收的普通消息包括如下几类: 1.文本
古时的风筝
2018/01/08
1.6K0
php-实现微信回复天气情况
浏览量 1 1.调用天气api接口 可以在百度apistore找到免费的api接口 //天气api public function getWeather($city){ $ch = curl
kdyonly
2023/03/03
6020
WeLM简介及微信公众号开发
我的公众号后台设置了关键词自动回复,但是经常收到很多读者打错别字,导致无法触发,正巧,前段时间刚申请到WeLM的使用权限,于是就想着给公众号升级一下。
zstar
2022/11/14
2.8K0
WeLM简介及微信公众号开发
Yii2.0实现微信公众号后台开发
1.用户授权接口:获取access_token、openid等;获取并保存用户资料到数据库
botkenni
2019/09/02
9950
独立开发微信公众号服务的一次复盘
上篇文章主要分享了异步编程的一些经验。主要包括回调函数,发布订阅,Promise,async await以及yield关键字。
terrence386
2022/07/14
4630
独立开发微信公众号服务的一次复盘
相关推荐
【黄啊码】php结合微信公众号实现裂变海报(基本技术点)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验