1、背景
最近ChatGPT大火,各大媒体前言都被刷屏了。很多人,也开发了小程序、网页接入官网的GPT3.0接口。但是,这些使用大部分问不到几句就开端要收费了。于是,我就自己做了一个免费版小程序玩一下(接入Plus接口也是免费,免费进行到底)。PS:之前用itchat接入过。但微信简单被封不引荐。公众号主动回复有5秒限制也不太引荐。
2、准备工作
-
GPT3.0接口key(能够参考注册教程: OpenAI 推出超神 ChatGPT 注册攻略来了)
-
Fastadmin 结构
-
Uniapp
-
openAI SDK
3、开端拼接
3.1 安装SDK
在fastadmin项目根目录下执行:
composer require tectalic/openai
3.2 接入SDK
这儿提供简单Demo,具体业务逻辑大家自己封装
$auth = new Authentication('你的接口key');
$httpClient = new Psr18Client(HttpClient::create(['verify_peer' => false, 'verify_host' => false]));
$client = new Client($httpClient, $auth, Manager::BASE_URI);
$response = $client->completions()->create(
new \Tectalic\OpenAi\Models\Completions\CreateRequest([
'model' => 'text-davinci-003',
'prompt' => $question, // 这儿是用户提交过来的问题
'max_tokens' => 2400, // 这儿能够根据需要调整
])
)->toModel();
var_dump($response->choices[0]->text);
3.3 小程序接口对接
很少触摸前端业务,所以这儿代码或许写得不是很好。大佬们勿喷
that.$api.post({
url: that.$tern_config.appurl + that.$path.common.ai,
data: {
msg: that.content
},
dataType: 'json',
success: rs => {
// 对回来成果进行处理
let pattern =
/(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g
// 提取图片地址,有时接口回来图片格式:![图片主题](图片地址)
let imgs = rs.match(pattern)
imgs = imgs ? imgs : []
// 过滤图片url信息/ \n 字符
let text = rs.replaceAll("openai:", "")
.replaceAll(pattern, "")
.replaceAll(/\!\[.*?\]\(\)/g, "")
.replaceAll(/^\n|\n$/g, "")
that.msgList.push({
"msg": text,
"my": false,
"img": imgs
})
that.msgContent += ("openai:" + that.msg + "\n")
that.msgLoad = false
that.scrollToBottom()
},
fail: rs => {
// 有时候,接口呼应比较久。超越设定timeout
that.msgList.push({
"msg": '抱愧,您说的我还不懂',
"my": false,
"img": []
})
that.scrollToBottom()
that.msgLoad = false
}
})
4、成果展示
5、体会地址
6、其他
现在国内真实练习得不错的AI模型大概有:百度文心(三月结束内侧)、华为盘古(只从会议视频上了解过)、浪潮的源1.0(正在接入、学习中)。(其他欢迎大佬们补充)
在潜水很久了,这是我的第一篇文章。个人感觉没多少干货,首要受不了一些披了一层就在那儿呼喊叫卖的使用。所以,写得不好。大佬们轻喷。
下一步,打算用vits进行游戏或动漫角色语音合成。让GPT回来的信息,能够用语音播映出来。有兴趣的大佬能够一同聊聊。