目录
前言
蹭一下最近比较火的人工智能ChatGPT的热度,最近看到许多小伙伴都在调戏ChatGPT,看到这我就坐不住了,这种事怎么能少了我,于是闲(划)暇(水)之余用node做了个api
准备工作
功能实现
登录ChatGPT后打开控制台,复制cookie里的session-token
初始化node项目,下载chatgpt模块
新建node server服务,代码如下:
-
import http
from
"http";
-
http
-
.
createServer(
(req, res) => {
-
res.
setHeader(
"Access-Control-Allow-Origin",
"*");
//设置响应头解决跨域
-
if (req.
url !==
"/sendMsg")
return
sendRes(res,
"not find",
404);
-
let _data =
"";
-
req.
on(
"data",
(d) => {
-
_data += d;
-
});
-
req.
on(
"end",
() => {
-
res.
writeHead(
200, {
-
"Content-Type":
"text/plain",
-
"Access-Control-Allow-Origin":
"*",
-
});
-
res.
write(
'椰丝');
-
res.
end();
-
});
-
})
-
.
listen(
1024,
() => {
-
console.
log(
"服务开启!");
-
});
使用postman或者apiPost发起post请求

完成一个最简单的接口后,咱们接入ChatGPT
-
/**
-
* @name:
-
* @description: 封装了一下ChatGPT
-
* @param {*} msg 发送的消息
-
* @param {*} sessionToken 浏览器cookie拿到的令牌
-
* @return {Promise}
-
*/
-
const
sendChatGPTMsg =
async (
{ msg, sessionToken }) => {
-
const { promise, resolve, reject } =
defer();
-
const api =
new
ChatGPTAPI({
-
sessionToken,
-
markdown:
false,
-
});
-
await api.
ensureAuth().
catch(reject);
// 校验令牌
-
api.
sendMessage(msg).
catch(reject).
then(resolve);
-
return promise;
-
};
这个defer是把promise处理了一下
-
/**
-
* @name:
-
* @description: promise扁平处理
-
* @return {*}
-
*/
-
const
defer = (
) => {
-
let resolve, reject;
-
return {
-
promise:
new
Promise(
(_resolve, _reject) => {
-
resolve = _resolve;
-
reject = _reject;
-
}),
-
resolve,
-
reject,
-
};
-
};
这个时候,我们在req.on("end")中调用这个api
-
http
-
.
createServer(
(req, res) => {
-
res.
setHeader(
"Access-Control-Allow-Origin",
"*");
//设置响应头解决跨域
-
if (req.
url !==
"/sendMsg")
return
sendRes(res,
"not find",
404);
-
let _data =
"";
-
req.
on(
"data",
(d) => {
-
_data += d;
-
});
-
req.
on(
"end",
() => {
-
const data =
JSON.
parse(_data);
-
sendChatGPTMsg(data)
-
.
then(
(r) => {
-
res.
writeHead(
200, {
-
"Content-Type":
"text/plain",
-
"Access-Control-Allow-Origin":
"*",
-
});
-
console.
log(r)
-
res.
write(r);
-
res.
end();
-
})
-
});
-
})
-
.
listen(
1024,
() => {
-
console.
log(
"服务开启!");
-
});
并且在ApiPost中将之前浏览器中复制的sessionToken补充全,再填上想问的问题,发送请求,就会有以下效果

至此,一个ChatGPT的api就实现完了,我们可以用它接入飞书,企微的webhook机器人,或者接入内网穿透,参照这篇文章:没有云服务器?内网穿透了解一下_DieHunter1024的博客-CSDN博客
实现远程调用api
写在最后
感谢你看到了最后,如果文章对你有帮助的话,还请点赞支持一下博主,非常感谢
源码:chatGPT-api: 基于chatGPT模块实现一个api
转载:https://blog.csdn.net/time_____/article/details/128224527
查看评论
