2 Star 4 Fork 0

千奈千祁/星火Api简化

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.js 3.97 KB
一键复制 编辑 原始数据 按行查看 历史
千奈千祁 提交于 2024-01-14 00:05 . 完工
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} 启动`);
});
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/qiannqq/spark-api-simplification.git
git@gitee.com:qiannqq/spark-api-simplification.git
qiannqq
spark-api-simplification
星火Api简化
master

搜索帮助