npm init -y初始化项目
下载crypto和ws
npm i crypto
npm i ws
创建一个app.js文件
const crypto = require('crypto');
const ws = require("ws");
const dateString = new Date().toGMTString(); //Wed, 25 Oct 2023 08:57:45 GMT
const host = 'spark-api.xf-yun.com';
const path = '/v3.5/chat';
let tmp = `host: ${host}
date: ${dateString}
GET ${path} HTTP/1.1`;//后两行代码不能缩进,必须顶格,否则会输出401错误
const APISecret = 'APISecret'; //需改成自己的APISecret
let signature = crypto.createHmac('sha256', APISecret)
.update(tmp)
.digest('base64');
console.log('signature', signature);
const APIKey = 'APIKey'; //需改成自己的APIKey
const authorization_origin =
`api_key="${APIKey}", algorithm="hmac-sha256", headers="host date request-line", signature="${signature}"`;
let buff = Buffer.from(authorization_origin);
const authorization = buff.toString('base64');
console.log('authorization', authorization);
console.log('--------------');
const signUrl =
`wss://${host}${path}?authorization=${authorization}&date=${encodeURIComponent(dateString)}&host=${host}`
console.log('signUrl', signUrl);
let sock = new ws(signUrl);
// sock.on("open", function () {
// console.log("connect success !!!!");
// });
sock.on("open", function () {
console.log("连接成功!!!!", signUrl);
sock.send(JSON.stringify({
header: {
app_id: 'app_id', //替换成自己的app_id
// "uid": "fd3f47e4-d",//最大长度32 每个用户的id,用于区分不同用户
},
parameter: {
chat: {
domain: "generalv3",
temperature: 0.5,
max_tokens: 1024, //模型回答的tokens的最大长度
}
},
"payload": {
message: {
text: [{
role: "user",
content: "1加1等于几"
},]
}
}
}))
});
sock.on("error", function (err) {
console.log("error: ", err);
});
sock.on("close", function () {
console.log("close");
});
sock.on("message", function (data) {
console.log("message", data.toString());
});