代码拉取完成,页面将自动刷新
import YAML from 'yaml'
import fs from 'fs'
import express from 'express'
import bodyParser from 'body-parser'
import sparkdemo from './model/spark.js'
import WebSocket from 'ws'
import rateLimit from 'express-rate-limit'
if(!fs.existsSync(`./config/spark.yaml`)){
fs.mkdirSync(`./config`)
let data = fs.readFileSync(`./defSet/spark.yaml`, `utf-8`)
fs.writeFileSync(`./config/spark.yaml`, data, `utf-8`)
console.log(`请在config/spark.yaml中填写参数`)
process.exit()
}
const app = express()
let cfg = fs.readFileSync(`./config/spark.yaml`, `utf-8`)
try {
cfg = YAML.parse(cfg)
} catch(err) {
console.log(`配置文件存在格式错误!\n${err}`)
process.exit()
}
const port = cfg.port || 3033;
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
const limiter = rateLimit({
windowMs: 60 * 1000,
max: 5,
message: { code: 429, message: '请求过于频繁,请稍后再试。' },
});
app.post(`/msg/post`, limiter, async (req, res) => {
let msg = req.body.msg
console.log(`收到的消息:` + msg)
const spark = new sparkdemo(cfg.appId, cfg.apiKey, cfg.apiSecret, cfg.domain, cfg.version)
let finalUrl = await spark.generateFinalUrl()
const sparkMsg = new WebSocket(finalUrl)
let requestPayload = {
header: {
app_id: cfg.appId,
uid: '123'
},
parameter: {
chat: {
domain: cfg.domain,
temperature: 0.5,
max_tokens: 1024
}
},
payload: {
message: {
text: [
{ role: 'user', content: msg }
]
}
}
}
sparkMsg.on('open', () => {
sparkMsg.send(JSON.stringify(requestPayload))
})
let completeMessage = '';
let ai_msg
sparkMsg.on('message', async (data) => {
const partialMessage = JSON.parse(data);
if (partialMessage.payload.usage) {
let myArray = partialMessage.payload.choices.text
completeMessage += myArray[0].content;
console.log('Ai的消息:', JSON.stringify(completeMessage));
ai_msg = completeMessage
completeMessage = '';
res.json({ code: 200, message: ai_msg })
} else {
let myArray = partialMessage.payload.choices.text
completeMessage += myArray[0].content;
}
})
})
app.get(`/msg/get/:msg`, async (req, res) => {
let msg = req.params.msg
console.log(`收到的消息:` + msg)
const spark = new sparkdemo(cfg.appId, cfg.apiKey, cfg.apiSecret, cfg.domain, cfg.version)
let finalUrl = await spark.generateFinalUrl()
const sparkMsg = new WebSocket(finalUrl)
let requestPayload = {
header: {
app_id: cfg.appId,
uid: '123'
},
parameter: {
chat: {
domain: cfg.domain,
temperature: 0.5,
max_tokens: 1024
}
},
payload: {
message: {
text: [
{ role: 'user', content: msg }
]
}
}
}
sparkMsg.on('open', () => {
sparkMsg.send(JSON.stringify(requestPayload))
})
let completeMessage = '';
let ai_msg
sparkMsg.on('message', async (data) => {
const partialMessage = JSON.parse(data);
if (partialMessage.payload.usage) {
let myArray = partialMessage.payload.choices.text
completeMessage += myArray[0].content;
console.log('Ai的消息:', JSON.stringify(completeMessage));
ai_msg = completeMessage
completeMessage = '';
res.json({ code: 200, message: ai_msg })
} else {
let myArray = partialMessage.payload.choices.text
completeMessage += myArray[0].content;
}
})
})
app.listen(port, () => {
console.log(`星火Api简化 已在 http://localhost:${port} 启动`);
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。