最新要闻
- 3月9日生意社DBP基准价为9475.00元/吨
- 环球今头条!中核首席专家:人造太阳有望在30年后实现供能 核聚变商用
- 【天天报资讯】有你在的城市吗?中国“民富”50城:沪京苏杭位列前4 长三角仍是最富庶地区
- 0.536秒!清华学子拍到中国空间站凌月 画面震撼:网友为中国航天点赞
- 每日讯息!15年耗费万亿日元 日本国产飞机梦碎:原型机被拆解
- 【全球新视野】夫妻200万造别墅找陌生人抱团养老 每月1500元 网友并不看好
- 世界观天下!湖北现购车狂潮 东风系最高降9万遭疯抢 乘联会:其他省份或效仿
- 全球播报:专家权威点评比亚迪CTB技术:刀片与车身完美结合 只能在比亚迪才能实现
- 天天亮点!促销潮蔓延 汽车全面降价已来临?比亚迪或是最大功臣!
- 当前时讯:新生儿史低 日本恐将不复存在:工业正在崩溃边缘
- 每日消息!湖北现购车狂潮:最高发9万元补贴 12万买合资B级车
- 当前时讯:1万元!TP-Link发布Wi-Fi 7挖矿路由器:比RTX 4090快得多
- 世界今热点:2岁娃总发烧咳嗽 一查肺里有个洞:8个月前嗑南瓜子 壳进入肺部
- 非洲部落活人献祭的食人树:真的存在吗?
- 热文:有人在《绝地求生》里把炸弹扔了2000米远!还没开挂
- 世界热门:《星空》确定延期至9月6日发售 直面会6月11日举行
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界热资讯!当我把ChatGPT拉进群聊里,我的朋友都玩疯了
前言
近期ChatGPT可以说是太火了,问答、写论文、写诗、写代码,只要输入精确的prompt,他的表现总是让人惊喜。本着打不过就加入的原则。要是把ChatGPT拉入群聊中,会是怎样一番场景?说做就做,花了1个晚上捣鼓了一个小Demo【ChatGPT群聊助手】,凭借它的“聪明才智”,应该可以搞定我的网友、女朋友、老妈的提问...
(相关资料图)
温馨提示:如果你从没体验过ChatGPT,给大家准备了一个新手体验Demo,免注册!免登陆!免代理!!!!!!,拉到文末可以快速查看噢。
使用效果
效果可看下图
应用前景
虽Demo仅在小范围的群聊中测试,但ChatGPT语义理解和交互能力确实强大,不仅能联系对话的上下文,还能及时纠正代码bug。不经让人想到,若能将ChatGPT应用于聊天机器人软件,完成回答问题、提供服务、甚至解决问题的任务,帮助人们解决重复性或大量的人工工作,代替传统聊天机器人应用于客服、电商、教育和金融等行业。
相对于传统聊天机器人,ChatGPT可根据用户的要求和特性,及时调整回答的策略以便更准确的回答问题,有更人性化的体验。现在被广泛使用的智能客服还不够智能,ChatGPT所具备的能力,正是客服领域所需要的。
1 准备工作
在国内无法注册ChatGPT账户,因此需要准备如下:
能接收短信的国外手机号:只需花几块钱,使用国外虚拟号码在线接收短信。可以去一些第三方平台如:http://sms-activate.org/cn。
这里需要注意的是,sms-activate.org选取手机号码国家的时候,建议选择印度,如果选择印度尼西亚,会在openAI报如下错误:
You’ve made too many phone verification requests. Please try again later or contact us through our help center at help.openai.com
以上是必须的前提工作,有了以上准备工作后,就可以去https://chat.openai.com/auth/login注册账号了。
2 实现思路
2.1 技术现状
chatGPT
提供了基于Web
版的交互界面,不便于编程式调用。于是,我们可以通过模拟浏览器去登录,然后把交互过程封装成API
接口。
2.2 实现过程
ChatGPT
作为一个机器人角色加入群聊,需要在PC端转发ChatGPT
问答。因此,我们可以在PC电脑上完成ChatGPT接口的封装,并加入群聊。然后通过即构IM(群聊)将数据实时传输,实现群聊里面与ChatGPT
聊天。
3 PC端封装代码实现
3.1 封装chatGPT调用
我们使用chatgpt-api库来封装调用chatGPT,因此先要安装好依赖库:
npm install chatgpt
安装好chtgpt库后,使用起来就非常简单了:
var ChatGPT, ConversationId, ParentMessageId;var API_KEY = ;//这里填写KEY(async () => { const { ChatGPTAPI } = await import("chatgpt"); ChatGPT = new ChatGPTAPI({ apiKey: API_KEY})})();//向ChatGPT发出提问function chat(text, cb) { console.log("正在向ChatGPT发送提问:",text) ChatGPT.sendMessage(text, { conversationId: ConversationId, parentMessageId: ParentMessageId }).then( function (res) { ConversationId = res.conversationId ParentMessageId = res.id cb && cb(true, res.text) console.log(res) } ).catch(function (err) { cb && cb(false, err); });}
注意到,在第二行需要填写API_KEY
,登录OpenAI后,打开链接https://platform.openai.com/account/api-keys即可获取,如下图所示
3.2 收发群聊消息
关于即构IM,如果大家感兴趣可以进入官网https://doc-zh.zego.im了解更多。总所周知,在即时聊天和实时音视频方面,即构IM是个人开发者或者中小型企业首选。因为我们只关注一对一私聊或者群聊,因此,在官方提供的SDK的基础上,我们做了二次封装。具体的封装代码请看附件,这里只贴出封装后的使用代码:
const Zego = require("./zego/Zego.js");var zim;function onError(err) { console.log("on error", err);} //发送消息function sendZegoMsg(isToGroup, text, toID){ Zego.sendMsg(zim, isToGroup, text, toID, function (succ, err) { if (!succ) { console.log("回复即构消息发送失败:", msg, err); } }) }//收到消息回调function onRcvZegoMsg(isFromGroup, msg, fromUID) { var rcvText = msg.message ; }function main() { let zegoChatGPTUID = "chatgpt" zim = Zego.initZego(onError, onRcvZegoMsg, zegoChatGPTUID);}main();
在收到消息时,判断是否有@chatgpt
关键字,如果有的话提取消息内容,然后去调用chatGPT
封装好的接口等待ChatGPT
回复,并将回复的内容往聊天群里发送。
4 手机端加入群聊与ChatGPT聊天
有了PC
端实现后,接下来在手机端只需通过即构IM SDK向群里面@chatgpt发送提问消息即可,当然了,也可以在一对一私聊的时候@chatgpt然后调用chatGPT接口。这些都是可以根据实际需求定制开发,篇幅原因,这里我们只将群聊。
同样的,我们只关注收发消息,因此对即构官方提供的SDK做了二次封装。如果想了解更多细节可以前往官方文档阅读。
对登录ZIM、创建Token等代码这里不详细描述,感兴趣读者可以查看代码附件,代码很简单容易看懂。
首先封装Msg对象,表示消息实体类:
public class Msg { public String msg; public long time; public String toUID; public String fromUID; public MsgType type; public enum MsgType { P2P, GROUP }}
发送消息二次封装,同一群聊和一对一聊天接口:
public static void sendMsg(ZIM zim, Msg msg, ZIMMessageSentCallback cb) { // 发送“单聊”通信的信息 ZIMTextMessage zimMessage = new ZIMTextMessage(); zimMessage.message = msg.msg; ZIMMessageSendConfig config = new ZIMMessageSendConfig(); // 消息优先级,取值为 低:1 默认,中:2,高:3 config.priority = ZIMMessagePriority.LOW; // 设置消息的离线推送配置 ZIMPushConfig pushConfig = new ZIMPushConfig(); pushConfig.title = "离线推送的标题"; pushConfig.content = "离线推送的内容"; pushConfig.extendedData = "离线推送的扩展信息"; config.pushConfig = pushConfig; if (msg.type == Msg.MsgType.P2P) zim.sendPeerMessage(zimMessage, msg.toUID, config, cb); else zim.sendGroupMessage(zimMessage, msg.toUID, config, cb);}
二次封装接收消息,统一通过onRcvMsg
函数接收消息。
private void onRcvMsg(ArrayList messageList) { if (lsArr == null) return; for (ZIMMessage zimMessage : messageList) { if (zimMessage instanceof ZIMTextMessage) { ZIMTextMessage zimTextMessage = (ZIMTextMessage) zimMessage; if (zimMessage.getTimestamp() < this.startTime) continue; String fromUID = zimTextMessage.getSenderUserID(); ZIMConversationType ztype = zimTextMessage.getConversationType(); String toUID = zimTextMessage.getConversationID(); Msg.MsgType type = Msg.MsgType.P2P; if (ztype == ZIMConversationType.PEER) type = Msg.MsgType.P2P; else if (ztype == ZIMConversationType.GROUP) type = Msg.MsgType.GROUP; String data = zimTextMessage.message; Msg msg = new Msg(type, data, zimMessage.getTimestamp(), fromUID, toUID); for (MsgCenterListener l : lsArr) l.onRcvMsg(msg); } }}private ZIMEventHandler handler = new ZIMEventHandler() { @Override public void onReceivePeerMessage(ZIM zim, ArrayList messageList, String fromUserID) { onRcvMsg(messageList); } @Override public void onReceiveGroupMessage(ZIM zim, ArrayList messageList, String fromGroupID) { onRcvMsg(messageList); } @Override public void onTokenWillExpire(ZIM zim, int second) { onRenewToken(); }};
需要注意的是,因为我们目前场景只需关注文本消息,因此没有图片、文件之类的消息做过多考虑。如果有类似需求的读者可以根据官方文档进一步封装。
另外,为了简化,避免每次用户主动拉chatgpt
进入一个新群,我们先约好一个超大群ID:group_chatgpt
。每次新用户登录就加入这个大群就好。如果有更加细粒度控制需求,可以根据不同用户来创建不同群,然后向chatgpt
机器人发送群ID,在PC端开发对应的自动加入对应群功能就好。
对于加群逻辑,也做了二次封装:
public void joinGroup(String groupId) { zim.joinGroup(groupId, new ZIMGroupJoinedCallback() { @Override public void onGroupJoined(ZIMGroupFullInfo groupInfo, ZIMError errorInfo) { for (MsgCenterListener l : lsArr) l.onJoinGroup(groupId); }});
至此,整个流程开发完成,尽情享受ChatGPT吧。
5 开发者福利
除ChatGPT之外,Demo中使用的开发者工具ZIM SDK也是提升工作效率的利器,ZIM SDK提供了全面的 IM 能力,满足文本、图片、语音等多种消息类型,在线人数无上限,支持亿量级消息并发。同时支持安全审核机制,确保消息安全合规。
ZIM SDK提供了快速集成、接口丰富、成熟的即时通讯解决方案。满足多种业务场景通讯需求,适用于打造大型直播、语聊房、客服系统等场景。即构即时通讯产品 IM 开春钜惠低至1折,限时折扣专业版1200元https://www.zego.im/activity/zegoland,也可搭配元宇宙和直播间其他产品组合使用。感兴趣的开发者可到即构官网去注册体验https://doc-zh.zego.im/article/11591
6 完整代码
- PC端:https://github.com/RTCWang/ChatGPT-ZIM/tree/main/ChatGPT%26ZIM/chatgpt_%E6%9C%BA%E5%99%A8%E4%BA%BA
- android:https://github.com/RTCWang/ChatGPT-ZIM/tree/main/ChatGPT%26ZIM/ChatGPT_android
关键词:
-
环球快播:Kubernetes 的 HPA 原理详解
一、HPA解决的问题HPA全称是HorizontalPodAutoscaler,也就是对k8s的workload的副本数进行自动水平扩缩...
来源: 环球快播:Kubernetes 的 HPA 原理详解
世界热资讯!当我把ChatGPT拉进群聊里,我的朋友都玩疯了
NTP校时服务器(时钟服务器)在安防监控系统里的重要性
天天新动态:以宿主机用户身份运行Docker容器
环球讯息:配置中心 | .NET 集成 Nacos 配置中心
3月9日生意社DBP基准价为9475.00元/吨
环球今头条!中核首席专家:人造太阳有望在30年后实现供能 核聚变商用
【天天报资讯】有你在的城市吗?中国“民富”50城:沪京苏杭位列前4 长三角仍是最富庶地区
0.536秒!清华学子拍到中国空间站凌月 画面震撼:网友为中国航天点赞
每日讯息!15年耗费万亿日元 日本国产飞机梦碎:原型机被拆解
【全球新视野】夫妻200万造别墅找陌生人抱团养老 每月1500元 网友并不看好
世界观天下!湖北现购车狂潮 东风系最高降9万遭疯抢 乘联会:其他省份或效仿
全球播报:专家权威点评比亚迪CTB技术:刀片与车身完美结合 只能在比亚迪才能实现
天天亮点!促销潮蔓延 汽车全面降价已来临?比亚迪或是最大功臣!
前沿资讯!怎么做才能不丢消息?
世界快看:读Java性能权威指南(第2版)笔记11_堆内存上
当前时讯:新生儿史低 日本恐将不复存在:工业正在崩溃边缘
每日消息!湖北现购车狂潮:最高发9万元补贴 12万买合资B级车
云计算的历史演进
狗屁不通文章生成器在线网页版 (2023年最新)
当前时讯:1万元!TP-Link发布Wi-Fi 7挖矿路由器:比RTX 4090快得多
世界今热点:2岁娃总发烧咳嗽 一查肺里有个洞:8个月前嗑南瓜子 壳进入肺部
非洲部落活人献祭的食人树:真的存在吗?
热文:有人在《绝地求生》里把炸弹扔了2000米远!还没开挂
世界热门:《星空》确定延期至9月6日发售 直面会6月11日举行
四川雅安旅游景点 四川雅安有哪些好玩的地方
盐山县聚成管道防腐保温厂
青岛西海岸新区2023年第一批产权型人才住房项目配售条件
【世界新视野】认养大熊猫1年10万终身100万:成龙认养了2只
岚图CEO讽刺路虎汽车抄袭:我们鼓励原创
世界焦点!类魂游戏《卧龙:苍天陨落》10场最难BOSS战:吕布让玩家绝望
环球消息!0.vim常用命令
【C++】购书系统问题测试&功能补充
环球热门:Celery框架的基本使用与介绍
班主任请全班女生喝奶茶:高考前还要请学生吃寓意为“高中”粽子
当前资讯!空乘招聘排队7小时面试3分钟 空姐空少挤满现场:有航空公司给年薪33万
通用表表达式
【全球独家】关于docker镜像IMAGE的备份和还原操作
【世界新要闻】七彩虹进军元宇宙!推出首款免费NFT、神秘实体权益
每日简讯:14.5英寸杜比视界大屏!联想拯救者Y900屏幕参数公布
张颂文回应沙漠捡垃圾被剧组丢下:临时租车司机行为
【独家焦点】三星Galaxy Tab S9系列平板曝光:Ultra机型首上IP67防尘防水
天天通讯!女足U20国青6-0横扫菲律宾,一场大胜,往往只需要简单的战术
世界即时看!匈牙利舞曲第五号_匈牙利舞曲
2月汽车销量前8名油车仅剩2个 比亚迪宋力压特斯拉Model Y
每日速递:1100万元的捐赠没给 中国矿业大学起诉90后校友
东北大熊猫着急下班 哐哐敲铁门:网友心酸想起在美丫丫 蜂花将认养?
世界观点:民族品牌蜂花将认养大熊猫丫丫 官方回应属实:加快与美国办理手续
Android 14首个公测版要来!Google I/O 2023定档5月10日
全球速讯:内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】
明解Redis(一)概述
环球要闻:AMD狂堆缓存!锐龙9 7950X3D游戏性能遥遥领先
天天最新:核聚变之后 美国团队宣布突破常温超导技术:颠覆物理学
天天快看点丨国内手游一哥出海!腾讯《王者荣耀》正式于巴西上线
【环球热闻】日本双胞胎姐妹身高相差75厘米 获吉尼斯纪录认证
提升国民平均寿命25岁?创维汽车:让每位车主实现基本百岁人生
全球微速讯:Node 非服务脚本调试
分享一个可以早点下班的开发小技巧
【环球报资讯】SpringBoot启动控制台的banner是怎么回事
环球新资讯:AppUploader教程:如何注册账号并激活AppUploader
全球快看点丨Android工程接入UnityLibrary工程
【聚看点】存储一哥扛不住了!三星在售最旗舰SSD 990 PRO降至史低价
天天速看:15万买特斯拉 那得多“毛坯”?成本降50%是文字游戏
原生PCIe 5.0更安全!酷冷至尊GX1250 GOLD电源评测:满载电压偏移<0.1%
环球今热点:不再烧主板!ROG 2023系列内置环境光传感器:见光自动断电
索尼PS中国发文祝4位游戏女角节日快乐:蒂法、希里等出镜
全球微头条丨潍坊市寒亭区举行庆“三八”专场招聘会
k8s-安全机制
Docker全家桶入门到进阶教程,Docker快速上手
焦点滚动:Docker入门到高级教程(一)Docker 的用途
当前热议!卡车
前沿热点:小心上当 国外免费软件被不良人士玩坏:收费299
环球消息!比亚迪开通苹果NFC数字车钥匙功能 两款车型已支持
魅族换新Logo了!魅族20系列官宣定档3月30日
每日速讯:未获版号就擅自出版网络游戏 重庆一公司被罚45万元
在鸡面前画条直线为何它呆住不动 科普:只是在装死
每日报道:qiankun 的使用
当前热议!Linux常用的20个命令(下)
【天天播资讯】Linux网卡驱动程序
讯息:(数据库系统概论|王珊)第十一章并发控制-第一节:并发控制概述
【环球速看料】如何轻松学习网页设计和网页编程?
当猛男遇上脱毛仪:用前抗拒、用后真香
终身质保成笑话?女车主购入威马新车三年维保无配件
Win11不支持拖动任务栏 强行修改注册表后:画面尴尬了
快播:爱吃辣的人不容易得糖尿病?是真的吗?
天天观焦点:你的护照又升值了!我国与马尔代夫互免签生效 浏览量暴增200%
环球时讯:凌云B股(900957)3月8日主力资金净卖出558.00元
全球观察:跨境电商卖家如何应对拒付、盗卡
热推荐:前端设计模式——观察者模式
热消息:代码审计之旅之百家CMS
环球头条:Paxos算法理解与java实现
环球消息!5、Redis慢日志和key有效期
今日聚焦!锐龙7000无缘单条48GB DDR5内存!点亮后却无法启动
每日热门:卖断货!湖北最强汽车补贴火了 有人“从业十年没见过”
每日热门:4.5级后广东河源再次发生3.4级地震:官方科普地震来了怎么办
全球观察:全年出货量仅2.6亿 PC电脑透心凉:复苏要等Win12
全球通讯!ChatGPT版佛祖爆火出圈:施主、说出你的烦恼
GO语言学习笔记-数据篇 Study for Go ! Chapter four - Data
全球速读:Go 数据结构
精彩看点:如何搞定MySQL锁(全局锁、表级锁、行级锁)?这篇文章告诉你答案!太TMD详细了!!!