首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于chatGPT接入微信公众号

关于chatGPT接入微信公众号

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

最近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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hadoop Hive sql语法详解
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构
黄规速
2022/04/14
2.2K0
数据科学|Hive SQL语法总结
Hive是一个数据仓库基础的应用工具,在Hadoop中用来处理结构化数据,它架构在Hadoop之上,通过SQL来对数据进行操作,了解SQL的人,学起来毫不费力。
陆勤_数据人网
2019/12/31
1.9K0
Hive 基础操作
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。
Golvi
2023/11/20
3840
Hive 基础操作
【Hive】DDL 与 DML 操作
删除数据库的模型行为是 RESTRICT,如果数据库不为空,需要添加 CASCADE 进行级联删除。
阿泽 Crz
2020/07/20
1.8K0
HIVE中的表以及语法
HIVE中的表以及语法 一、HIVE的表     HIVE使用的功能性的表格分为四种:内部表、外部表、分区表、分桶表。 1、内部表、外部表 1.特点     创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE,即所谓的内部表。     内部表的特点是,先有表后有数据,数据被上传到表对应的hdfs目录下进行管理。     其实内部表的流程和sql数据库的表流程是几乎一样的。     但是在真实开发中,很可能在hdfs中已经有了数据,希望通过hive直接使用这些数据作为表内容
云飞扬
2018/05/11
2.1K0
一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)
该文介绍了关于数据库连接池的知识点,包括概念、特点、配置方式、调优参数和常见问题。同时,文章还提供了如何正确配置和优化数据库连接池的相关建议,以帮助开发人员更好地掌握和应用该技术。
别先生
2018/01/02
3.7K0
一脸懵逼学习Hive的使用以及常用语法(Hive语法即Hql语法)
2017年11月1日课后作业Hive 第二次课程DDL内部表、外部表、临时表的创建和特性DML
2017年11月1日课后作业 Hive 第二次课程 回顾上节课的内容 Hive是什么 SQL -> MapReduce 为什么会有Hive 给非Java编程者对HDFS上的数据做MapReduce查询使用 数据仓库 HIve架构 数据是存在HDFS上的 hive-site.xml 我们配置hive.metastore.warehouse.dir 元数据是存在RDBMS 包括,表的名字,字段的名称、类型 还需要存,数据放在HDFS哪个目录上了 计算是基于MapReduce 解释器、编译器、优化器 Oper
Albert陈凯
2018/04/08
7780
Hive 基础(2):库、表、字段、交互式查询的基本操作
1、命令行操作 (1)打印查询头,需要显示设置: set hive.cli.print.header=true; (2)加"--",其后的都被认为是注释,但 CLI 不解析注释。带有注释的文件只能通过这种方式执行: hive -f script_name (3)-e后跟带引号的hive指令或者查询,-S去掉多余的输出: hive -S -e "select * FROM mytable LIMIT 3" > /tmp/myquery (4)遍历所有分区的查询将产生一个巨大的MapRe
用户1177713
2018/02/24
3.7K0
Hive学习-数据定义语句
1)存储位置:Hive的数据存储在Hadoop上,而像MySQL这样的关系型数据库将数据存储在设备或本地系统中。
顾翔
2024/09/10
4360
Hive学习-数据定义语句
大数据-hive基本语法整理
用户11147438
2024/06/04
3120
Hive第二天学习内容总结Hive 第三天DDL特别注意一下,没事别删除数据DML
Hive 第三天 [toc] 第二天内容回顾 Hive帮助文档的地址 https://cwiki.apache.org/confluence/display/Hive/Home Hive SQL Language Manual: Commands, CLIs, Data Types, DDL (create/drop/alter/truncate/show/describe), Statistics (analyze), Indexes, Archiving, DML (load/insert/updat
Albert陈凯
2018/04/08
9390
Hive第二天学习内容总结Hive 第三天DDL特别注意一下,没事别删除数据DML
这些SQL语法,你知道吗?(1)
万能数据的小草
2024/07/23
1490
这些SQL语法,你知道吗?(1)
Hive简介
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
用户1217611
2020/06/19
3.4K0
Hive简介
hive的partition的作用和使用方法
一、背景 在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。 分区表指的是在创建表时指定的partition的分区空间。 如果需要创建有分区的表,需要在create表的时候调用可选参数partitioned by,详见表创建的语法结构。 二、技术细节 一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下。 表和列名不区分大小写。 分区是以字段的形式在表结构中存在,通过des
Albert陈凯
2018/04/08
6K0
数据分析工具篇——HQL中DDL操作
1.1) CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
数据森麟
2021/03/09
6690
数据分析工具篇——HQL中DDL操作
hive数据定义语言DDL
显示hive中数据库的名称,注释(如果已经设置),及其在文件系统中的位置等信息
h3110_w0r1d
2024/02/19
2310
hive数据定义语言DDL
大数据技术之_08_Hive学习_02_DDL数据定义(创建/查询/修改/删除数据库+创建表+分区表+修改表+删除表)+DML数据操作(数据导入+数据导出+清除表中数据)
1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。
黑泽君
2019/03/08
1.8K0
大数据技术之_08_Hive学习_02_DDL数据定义(创建/查询/修改/删除数据库+创建表+分区表+修改表+删除表)+DML数据操作(数据导入+数据导出+清除表中数据)
Hive 基本操作(创建数据库与创建数据库表)
修改数据库 可以使用alter database 命令来修改数据库的一些属性。但是数据库的元数据信息是不可更改的,包括数据库的名称以及数据库所在的位置
Maynor
2021/04/09
5.7K0
[1040]DataWorks中MaxCompute的常用操作命令
使用DESC EXTENDED table_name;命令查看Hash Clustering Table的Clustering属性,如下所示,Clustering属性将显示在Extended Info中:
周小董
2021/08/18
4.9K0
hive基本简单操作
1.建表 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name – (Note: TEMPORARY available in Hive 0.14.0 and later) [(col_name data_type [COMMENT col_comment], … [constraint_specification])] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], …)] [CLUSTERED BY (col_name, col_name, …) [SORTED BY (col_name [ASC|DESC], …)] INTO num_buckets BUCKETS] [SKEWED BY (col_name, col_name, …) – (Note: Available in Hive 0.10.0 and later)] ON ((col_value, col_value, …), (col_value, col_value, …), …) [STORED AS DIRECTORIES] [ [ROW FORMAT row_format] [STORED AS file_format] | STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)] – (Note: Available in Hive 0.6.0 and later) ] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, …)] – (Note: Available in Hive 0.6.0 and later) [AS select_statement]; – (Note: Available in Hive 0.5.0 and later; not supported for external tables)
chimchim
2022/11/13
2930
推荐阅读
相关推荐
Hadoop Hive sql语法详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验