Spaces:
Running
Running
import _ from "lodash"; | |
import Request from "@/lib/request/Request.ts"; | |
import Response from "@/lib/response/Response.ts"; | |
import chat from "@/api/controllers/chat.ts"; | |
export default { | |
prefix: "/hf/v1/chat", | |
post: { | |
"/completions": async (request: Request) => { | |
request | |
.validate('body.conversation_id', v => _.isUndefined(v) || _.isString(v)) | |
.validate("body.messages", _.isArray) | |
.validate("headers.authorization", _.isString); | |
// ticket切分 | |
const tokens = chat.tokenSplit(request.headers.authorization); | |
// 随机挑选一个ticket | |
const token = _.sample(tokens); | |
const { model, conversation_id: convId, messages, stream } = request.body; | |
if (stream) { | |
const stream = await chat.createCompletionStream( | |
model, | |
messages, | |
token, | |
convId | |
); | |
return new Response(stream, { | |
type: "text/event-stream", | |
}); | |
} else | |
return await chat.createCompletion( | |
model, | |
messages, | |
token, | |
convId | |
); | |
}, | |
}, | |
}; | |