mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-04 00:15:28 +08:00
40 lines
822 B
JavaScript
40 lines
822 B
JavaScript
'use strict';
|
|
|
|
function createChatCompletionEmitter({ res, sessionID, created, model, isClosed }) {
|
|
let firstChunkSent = false;
|
|
|
|
const sendFrame = (obj) => {
|
|
if (isClosed() || res.writableEnded || res.destroyed) {
|
|
return;
|
|
}
|
|
res.write(`data: ${JSON.stringify(obj)}\n\n`);
|
|
if (typeof res.flush === 'function') {
|
|
res.flush();
|
|
}
|
|
};
|
|
|
|
const sendDeltaFrame = (delta) => {
|
|
const payloadDelta = { ...delta };
|
|
if (!firstChunkSent) {
|
|
payloadDelta.role = 'assistant';
|
|
firstChunkSent = true;
|
|
}
|
|
sendFrame({
|
|
id: sessionID,
|
|
object: 'chat.completion.chunk',
|
|
created,
|
|
model,
|
|
choices: [{ delta: payloadDelta, index: 0 }],
|
|
});
|
|
};
|
|
|
|
return {
|
|
sendFrame,
|
|
sendDeltaFrame,
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
createChatCompletionEmitter,
|
|
};
|