关键词:
ChatGPT小程序实战
背景
最近ChatGPT特别火,但是好多小伙伴不知道,到底怎样去利用去做一些对自己有益的事情,闲来无事,做了个小程序开发流程分享给大家。
准备工作
申请小程序并认证
必须申请认证小程序,不然后续无法进行支付等相关操作,认证具体流程自行参考:微信公众平台
申请聊天接口秘钥
可以接入图灵,等api,或者GPT都可以的,自己去申请
申请微信支付商户号
这一步也是自己去参考微信支付去申请,这一步我们需要拿到微信支付的商户号和秘钥。
编写代码
用户管理
小程序授权登录
这里我们参考开放平台的官方文档的小程序登录:
1.前端通过调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
2.服务端调用 auth.code2Session 接口,换取 用户唯一标识 OpenID,这里假设我们拿到code,后端代码如下:
@PostMapping("getWxAuthorization")
public AjaxResult getWxAuthorization(String code)
JSONObject object = WxLoginUtil.getAppId(code);
if (object.containsKey("errcode") && object.getIntValue("errcode")!=0)
log.error("授权失败,错误信息:", object);
return AjaxResult.error("授权失败!");
String openid = object.getString("openid");
QueryWrapper<WxUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("open_id", openid);
WxUser wxUser = wxUserService.getOne(queryWrapper);
//为空时自动创建账户
if (StringUtils.isNull(wxUser))
wxUser = new WxUser();
wxUser.setUserType("0");
wxUser.setLimitTimes(15l);//我们给用户限制下每日调用次数,方便我们引导用户开通会员,不然怎么盈利呢?
wxUser.setOpenId(openid);
wxUser.setRegisterDate(new Date());
wxUser.setVipEffTime(new Date());
wxUser.setVipExpTime(new Date());
wxUserService.save(wxUser);
return AjaxResult.success("登录成功!", JwtTokenUtil.createToken(wxUser.getId()));
获取用户信息
登录成功后,小程序端需要拿到我们在自己的后台创建的用户信息:
@PostMapping("/getUser")
public AjaxResult getUser()
WxUser appUser = wxUserService.getById(JwtTokenUtil.getUserId);
//每次获取的时候,我们判断下用户会员是否过期了,过期就更改下状态
if(appUser.getUserType().equals("1") && appUser.getVipExpTime().before(new Date()))
appUser.setUserType("2");
wxUserService.updateById(appUser);
return AjaxResult.success(appUser);
更新用户头像和昵称
为了方便用户改变在小程序内显示的头像和昵称,我们做如下处理:
@PostMapping("/updateUser")
public AjaxResult updateUser(@RequestBody WxUser wxUser)
WxUser appUser = wxUserService.getById(JwtTokenUtil.getUserId);
if (StringUtils.isNotEmpty(wxUser.getAvatar()))
appUser.setAvatar(wxUser.getAvatar());
if (StringUtils.isNotEmpty(wxUser.getNickName()))
appUser.setNickName(wxUser.getNickName());
return AjaxResult.success("修改成功", appUser);
到此为止,小程序端就可以登录,并且更新和获取用户信息了!接下来我们正式开始调用ChatGPT的api。
结合第三方聊天平台API
调用聊天接口的api
这里我们直接调用,我稍微加了功能敏感词过滤
@PostMapping("chatCompletion")
public AjaxResult chatCompletion(@RequestBody CompletionRequest completionRequest)
//TODO 敏感词,每日提问次数
Long getUserId = JwtTokenUtil.getUserId;
//封装方法,校验用户的可使用次数
AjaxResult userUseTimes = getUserUseTimes(getUserId);
if ((int)userUseTimes.get("code")!=200)
return userUseTimes;
/*敏感词过滤*/
/*ArrayList<String> sensitiveWord = DFAUtils.getSensitiveWord(completionRequest.getPrompt());
if (StringUtils.isNotEmpty(sensitiveWord))
log.error("检测到敏感词:", sensitiveWord);
//TODO 敏感词记录
return AjaxResult.error("您的问题含有敏感词,请重新提问!");
*/
ChoiceMessage message = null;
try
CompletionChatResponse completionChatResponse = ChatUtil.chatCompletion(completionRequest.getPrompt());
message = completionChatResponse.getChoices().get(0).getMessage();
List<Object> userCacheMessages = ChatUtil.getUserCacheMessages();
userCacheMessages.add(message);
ChatUtil.setUserCacheMessages(userCacheMessages);
catch (Exception e)
return AjaxResult.success("系统开了个小差,请稍后重试!");
return AjaxResult.success(message.getContent());
封装的调用方法ChatUtil.chatCompletion(completionRequest.getPrompt());
public static CompletionChatResponse chatCompletion(String prompt)
CompletionChatRequest completionChatRequest = new CompletionChatRequest();
HttpRequest post = HttpUtil.createPost(chatCompletionUrl).timeout(300000);
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", Authorization);//上面申请的apikey
post.addHeaders(headers);
post.contentType("application/json;charset=UTF-8");
completionChatRequest.setModel(model);
ChoiceMessage message = new ChoiceMessage("user", prompt);
//因为我们调用的3.5的模型,这里作了上下文关联
List<Object> messages = getUserCacheMessages();
int size = messages.size();
if (size>19)
messages.remove(0);
messages.add(message);
setUserCacheMessages(messages);
completionChatRequest.setMessages(messages);
post.body(JSON.toJSONString(completionChatRequest));
String body = post.execute().body();
CompletionChatResponse completionChatResponse = JSON.parseObject(body, CompletionChatResponse.class);
return completionChatResponse;
现在我们已经基本实现了整个流程,可以看下效果:
会员支付
效果已经有了,那我们来接入会员系统,下期继续
福利
留言可以先给大家免费体验一波,下期我们继续接入会员功能!
chatbot走进聊天机器人(代码片段)
走进聊天机器人1.目前企业中的常见的聊天机器人2.常见的聊天机器人怎么实现的2.1问答机器人的常见实现手段2.2任务机器人的常见实现思路2.3闲聊机器人的常见实现思路3.企业中的聊天机器人是如何实现的3.1阿里小蜜-电商智能... 查看详情
基于小程序制作一个chatgpt聊天机器人(代码片段)
...将ChatGPT与实战开发相结合,制作一个随身携带的聊天机器人,紧贴前沿的同时稳固基础。一、前言1.1、什么是ChatGPT1.2、什么是文本完成二、API2.1、ChatGPT官网申请API所需要的key2.2、搭建API2.3、创建控制器及动作方法三、... 查看详情
markdown智能聊天机器人二次开发选型(代码片段)
没人陪你聊天?教你使用java制作专属智能陪聊机器人(代码片段)
...留言,“很久没人找我聊天了,可以写一个陪聊机器人展现一下程序员的浪漫吗?”,小禅:“安排!”🚀**文章源码获取**:本文的源码,小伙伴们可以关注文章底部的公众号,点击“联... 查看详情
没人陪你聊天?教你使用java制作专属智能陪聊机器人(代码片段)
...留言,“很久没人找我聊天了,可以写一个陪聊机器人展现一下程序员的浪漫吗?”,小禅:“安排!”🚀**文章源码获取**:本文的源码,小伙伴们可以关注文章底部的公众号,点击“联... 查看详情
没人陪你聊天?教你使用java制作专属智能陪聊机器人(代码片段)
...留言,“很久没人找我聊天了,可以写一个陪聊机器人展现一下程序员的浪漫吗?”,小禅:“安排!”🚀**文章源码获取**:本文的源码,小伙伴们可以关注文章底部的公众号,点击“联... 查看详情
基于chatgpt+python快速打造前后端分离的openai人工智能聊天机器人(代码片段)
🚀ChatGPT是最近很热门的AI智能聊天机器人🚀用途方面相比于普通的聊天AI更加的广泛,甚至可以帮助你改BUG,写代码!!!🚀下面是使用python+ChatGPT+Vue实现的在线聊天机器人,可直接调... 查看详情
nlp开发python实现聊天机器人(alice)(代码片段)
1、简介简单来说,聊天机器人是一种可以模拟和处理人类会话(无论是书面还是口头会话)的计算机程序,让人能够与数字设备交互,就像和真人交流一样。不同聊天机器人的复杂度各不相同,简单如通过单行响应回答简单查... 查看详情
16行代码实现微信聊天机器人,自动智能回复,打团了让它来陪老婆聊天(代码片段)
...,但又没有那么多精力时时回复,这个时候智能机器人就能帮助我们解决很多问题。像电商类的客服,像大的QQ群/微信群管理员,以及我们打游戏的时候,挂着脚本就行,机器人自动 查看详情
惠州网站建设-无处不在的人工智能(代码片段)
请抛开人工智能就是人形机器人的固有偏见,然后,打开你的手机。我们先来看一看,已经变成每个人生活的一部分的智能手机里,到底藏着多少人工智能的神奇魔术。图2显示了一部典型iPhone手机上安装的一些常见应用程序。... 查看详情
chatgpt简单了解下智能聊天机器人的功能和示例代码(代码片段)
🎉🎉最近chatGPT持续火爆,一路狂飙,对应如何注册和使用的优质文章非常多。所以,此篇文章除了整理chatGPT文章外,主要是讲解如何获取APIKey进行接口的调用🎉🎉目录1、chatGPT解读1.1、词语解释... 查看详情
人工智能玩具制作(代码片段)
...以语音点播朗诵诗歌,播放音乐,做游戏-成语接龙,与智能机器人聊天与手机app的im通讯, 查看详情
chatgpt火爆全网,3-5年人工智能将颠覆人类的生活和工作(代码片段)
...GenerativePre-trainedTransformer),美国OpenAI研发的聊天机器人程序 ,于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文... 查看详情
使用chatgpt实现微信聊天小程序(秒回复),github开源(附带链接)(代码片段)
...clone下来,部署到服务器上,真正实现自己的聊天机器人!!!ps:网上好多的小程序或者网站提供了chatgpt的聊天功能,但是多数都收费或者限制次数,我就在想,作为一个学计算机的,具... 查看详情
智能聊天骚操作(代码片段)
...a_TG2XuaJEy3iTmHg密码:w6hk2.baidu-aip:pipinstallbaidu-aip 3.图灵机器人http://www.tuling123.com/ 终于进入主题了,此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径目前市面上... 查看详情
0元试用微软azure人工智能认知服务我做了个群聊天机器人(代码片段)
前言我这边参加了CSDN与微软Azure举办的0元试用微软Azure人工智能认知服务活动。第一次使用微软Azure认知服务,老实说,还是满心期待的。文章目录前言正式开始试用环境SDK的位置语音识别(语音转文本)语音合... 查看详情
10分钟用python告诉你两个机器人聊天能聊出什么火花(代码片段)
...起聊天会是什么样子的。为了让实验效果更好,我们两个机器人选取了不同网站的机器人(图灵和茉莉)。01准备1)pip下载安装python的requests模块,这个调用接口发送消息 查看详情
基于chatgpt+springboot打造智能聊天ai机器人接口并上线至服务器(代码片段)
🚀ChatGPT是最近很热门的AI智能聊天机器人🚀本文使用SpringBoot+OpenAI的官方API接口,自己实现一个可以返回对话数据的接口并上线服务器🚀用途方面相比于普通的聊天AI更加的广泛,甚至可以帮助你改BUG... 查看详情