更新记录
1.0.0(2023-03-27)
1.0.0 上线免VPN调用openAi API,包含问答、对话、文意生图等能力
平台兼容性
阿里云 | 腾讯云 | 支付宝云 |
---|---|---|
√ | × | × |
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
SDK使用说明
前言
接口数据来源为 openAi 官方文档地址 https://platform.openai.com/docs/introduction
如果没有openAi
的开发sk可以联系QQ 823825035,文档末尾提供有供开发使用的的SK
文档供有一定代码经验的小伙伴使用,如有可QQ 823825035,备注 sdk
。
请认真看使用文档!!!
请认真看使用文档!!!
请认真看使用文档!!!
测试运行速度:
起步
导入云函数,上传部署云函数至自己的云服务空间,
建议开启url,可以其他应用调用,pc,h5等
修改接口路径为"/",同时超时时间改为
60
以上,建议改为80
1.问答
- 接口地址:https://xxx.com 你自己的url函数地址
备注:接口地址可自行采用云函数URL化。文档详见:https://uniapp.dcloud.io/uniCloud/http
-
请求方式:
POST
-
请求头:不会配置请求头请百度一下,没啥技术门槛
headers = { 'Content-type': 'application/json;charset=UTF-8', 'Authorization': "Bearer sk-djfsajfklasfs654646sdf" // openAi获取 sk }
-
请求参数
参数名称 | 参数说明 | 是否必填 | 数据类型 | 默认值 |
---|---|---|---|---|
model | 模型名称 | 是 |
string |
text-davinci-003 |
prompt | 待回答的问题 | 是 |
string |
无 |
max_tokens | 字符最大长度 | 否 |
string |
建议 2000 |
更多参数请参考 openAi官网接口说明文档
示例
const fly = require("flyio")
fly.config.headers['Authorization'] = "Bearer sk-djfsajfklasfs654646sdf";
await fly.post(`https://xxx.com`,
{
"model": "text-davinci-003",
"prompt": "冰山一角",
"max_tokens": 2000,
"temperature": 0
})
// uni request 示例
uni.request({
url:"", // 你自己的url函数地址
method:"post",
data:{
"model": "text-davinci-003",
"prompt": "冰山一角",
"max_tokens": 2000,
"temperature": 0
},
header:{
'Authorization': "Bearer sk-djfsajfklasfs654646sdf"
},
success:(res)=>{
console.log(res)
}
})
2.聊天对话
- 接口地址:https://xxx.com/chat
备注:接口地址可自行采用云函数URL化。文档详见:https://uniapp.dcloud.io/uniCloud/http
-
请求方式:
POST
-
请求头:不会配置请求头请百度一下,没啥技术门槛
headers = { 'Content-type': 'application/json;charset=UTF-8', 'Authorization': "Bearer sk-djfsajfklasfs654646sdf" // openAi获取 sk }
-
请求参数
参数名称 | 参数说明 | 是否必填 | 数据类型 | 默认值 |
---|---|---|---|---|
model | 模型名称 | 是 |
string |
gpt-3.5-turbo-0301 |
messages | 对话内容 | 是 |
array |
无 |
示例
const fly = require("flyio")
fly.config.headers['Authorization'] = "Bearer sk-djfsajfklasfs654646sdf";
await fly.post(`https://xxx.com/chat`,
{
"model": "gpt-3.5-turbo-0301",
"messages": [
{ role: "user", content: "冰山一角啥意思" },
{
"role": "assistant",
"content": "“冰山一角”意味着一个人或一件事物只显示了一小部分,而完整的情况却远远超出我们的想象。也就是说,我们只看到了“冰山”的上层,而底层的真相和实质却被遮盖住了。"
},
{ role: "user", content: "那造一个句子吧" },
]
})
// uni request 示例
uni.request({
url:"",// 你自己的url函数地址
method:"post",
data:{
"model": "gpt-3.5-turbo-0301",
"messages": [
{ role: "user", content: "冰山一角啥意思" },
{
"role": "assistant",
"content": "“冰山一角”意味着一个人或一件事物只显示了一小部分,而完整的情况却远远超出我们的想象。也就是说,我们只看到了“冰山”的上层,而底层的真相和实质却被遮盖住了。"
},
{ role: "user", content: "那造一个句子吧" },
]
},
header:{
'Authorization': "Bearer sk-djfsajfklasfs654646sdf"
},
success:(res)=>{
console.log(res)
}
})
注意:上下文对话时需要将之前的对话也放入参数中: messages
3.文意生图
- 接口地址:https://xxx.com/images
备注:接口地址可自行采用云函数URL化。文档详见:https://uniapp.dcloud.io/uniCloud/http
-
请求方式:
POST
-
请求头:不会配置请求头请百度一下,没啥技术门槛
headers = { 'Content-type': 'application/json;charset=UTF-8', 'Authorization': "Bearer sk-djfsajfklasfs654646sdf" // openAi获取 sk }
-
请求参数
参数名称 | 参数说明 | 是否必填 | 数据类型 | 默认值 |
---|---|---|---|---|
n | 模型名称 | 否 |
number |
1 |
prompt | 图片描述 | 是 |
string |
无 |
size | 字符最大长度 | 否 |
string |
更多参数请参考 openAi官网接口说明文档
示例
const fly = require("flyio")
fly.config.headers['Authorization'] = "Bearer sk-djfsajfklasfs654646sdf";
await fly.post(`https://xxx.com/images`,
{
"prompt":"长腿大美女",
"n": 2,
"size": "256x256"
})
// uni request 示例
uni.request({
url:"",// 你自己的url函数地址
method:"post",
data:{
"prompt":"长腿大美女",
"n": 2,
"size": "256x256"
},
header:{
'Authorization': "Bearer sk-djfsajfklasfs654646sdf"
},
success:(res)=>{
console.log(res)
}
})
4.其他能力
其他能力比如语音转文本、图片编辑等有需要可以加QQ联系
供测试的地址
SK:"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"
await fly.post("https://fc-mp-2f0d48ab-d929-4cc0-95a3-4a6bd2716330.next.bspapp.com/images",
{
"prompt":"长腿大美女",
"n": 2,
"size": "256x256"
})
// uni request 示例
uni.request({
url:"https://fc-mp-2f0d48ab-d929-4cc0-95a3-4a6bd2716330.next.bspapp.com/images",
method:"post",
data:{
"prompt":"长腿大美女",
"n": 2,
"size": "256x256"
},
header:{
'Authorization': "Bearer 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"
},
success:(res)=>{
console.log(res)
}
})